본문 바로가기

DevOps/쿠버네티스(Kubernetes)

(13)
[쿠버네티스] Rancher를 사용한 K8S 클러스터 구축하기 안녕하세요 오랜만입니다. 블로그를 처음 개설했을 때 쓴 글이 쿠버네티스 설치였는데, 최근에 Rancher라는 좋은게 나와서 쿠버네티스 클러스터 구성 및 관리 등 여러가지를 제공해준다고 하더군요. 그래서 오늘은 Rancher를 이용한 K8S 클러스터를 구축해 보겠습니다. rancher.com/ Innovate Everywhere Rancher, the open-source multi-cluster orchestration platform, lets operations teams deploy, manage and secure enterprise Kubernetes. Request a demo! rancher.com rancher.com/docs/ Documentation | Rancher Labs Ranch..
[쿠버네티스 #7] Kubernetes ingress를 이용한 tls 적용 (let's encrypt) 오랜만입니다. 반갑습니다. 오늘은 쿠버네티스 환경에 tls를 한 번 적용시켜보겠습니다. ssl(sercure socket layer)/tls(transport layer security)에 대한 기본 지식을 어느정도 알고 있으면 좋을 거 같습니다. 본 예제에서는 인증서 발급으로 let's encrypt를 사용하였습니다. 기본적으로 let' encrypt를 이용한 인증서 발급에는 세 가지 방법이 있습니다. standalon, webroot, dns 본 예제에서는 webroot를 이용한 방법으로 테스트하였습니다. 기본적으로 webroot를 이용한 인증서 발급에는 다음 그림과 같은 순서로 이루어집니다. 1. 웹서버에서 let's encyrpt에 사용할 도메인에 대한 인증을 요청하고 2. let's encryp..
[쿠버네티스 #tip4] 새로운 워커노드를 Join 시키거나 클러스터를 초기화할 때 안녕하세요 오랜만에 쿠버네티스 글입니다. 제 미천한 블로그를 찾아주시는 분들 중에 쿠버네티스 팁 중에 뭐가 도움이 될까 생각해보니 두 가지가 떠올랐습니다. 바로 새로운 워커노드를 추가할 때나 클러스터를 초기화 하는 과정이 필요하다고 생각했어요 Minikube의 경우에는 이런 과정이 쉽겠지만 실제 VM이나 온프레미스환경에서 구축한 경우 여러가지 경우에 의하여 초기화 시키는 경우가 많았습니다. (물론 저 혼자 에러때문에 초기화한 거지만..) 그런 분들에게 도움이 되고자 이 글을 작성합니다. 우선 새로운 워커노드를 추가하는 방법입니다. 기존에 처음 Join했을 때를 기억하시나요? 워커노드에서 $ kubeadm join (IP주소):6443 --token (토큰 값) --discovery-token-ca-cer..
[쿠버네티스 #6] Kubernetes metallb를 사용한 로드밸런서 타입 서비스 배포 20. 07. 16 추가 내용 ----------------------------- 인그레스 컨트롤러에 대한 내용이 없는거 같아 간략하게 나마 추가합니다. 인그레스 컨트롤러 설치 명령어 입니다. 해당 파일을 배포하면 새로운 namespace가 생깁니다. namespace안에 요소들을 보면 인그레스 컨트롤러가 있습니다. kubectl apply -f http://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/deploy.yaml ----------------------------- 쿠버네티스 서비스에 대한 글을 올렸을 때 3가지 종류의 타입이 있다고 말했다. 1. Cluster IP 2. N..
[쿠버네티스 #5] Docker compose와 kubernetes의 차이 이번 포스팅에서는 Docker Compose에 대해 얘기해보려한다. 일단 나는 반년 전 무작정 쿠버네티스에 대해 공부할 때 도커 컴포즈는 물론이며 도커에 대한 기본 상식도 없었다. 그 때 당시에 도커 컴포즈와 쿠버네티스 둘다 컨테이너를 쉽게 만들어주는 거 아닌가? 라고 생각했고 쿠버네티스만 사용하였으며 도커 컴포즈를 사용하지 않았기에 별로 신경않았다. 하지만 최근에 도커 컴포즈를 사용할 일이 있었고 이에 대해 다시 찾아보게되었다. 우선 쿠버네티스의 등장배경부터 알아보면 MSA가 유행하게되었고 그에 따라 도커와 컨테이너에 대한 기술이 주목받게되었다. 그러다 다수의 컨테이너를 관리할 필요가 생겼고 다수의 컨테이너를 관리할 수 있는 도구인 컨테이너 오케스트레이션 이 등장하게되었다. 컨테이너 오케스트레이션은 여..
[쿠버네티스 #tip3] 컨테이너 안에서 쉘 스크립트를 사용할 때 경로지정 최근 python 코드를 컨테이너로 패기징 할 때 발견한 문제다. 지금까지는 python .py 파일을 실행시키는 Container를 만들기 위해 Dockerfile을 작성했는데 이번엔 .py파일이 아닌 쉘 스크립트 파일을 실행시켜야했다. 처음 마주하는 문제였지만 어차피 python이니까 당연히 될 거라고 생각했고 FROM python:2.7 WORKDIR /app ADD . /app RUN apt-get update # COPY requirements.txt . # Application RUN pip install -r requirements.txt CMD ["sh", "./apps/example.sh"] 위처럼 Dockerfile을 작성했다. python 2.7버전에 requirements.txt에 ..
[쿠버네티스 #tip2] 파이썬으로 만든 컨테이너에서 print출력이 되지 않을 때 파이썬 flask를 활용해 웹서버를 구축할 때 생긴 오류였다. 진행하고 있던 내용은 외부의 DB에서 데이터를 쿠버네티스 클러스터 내의 웹서버에 보내고 이 웹서버가 다시 쿠버네티스 클러스터 내의 DB로 저장하는 상황이었는데 데이터를 넘겨주는 과정에서 잘 넘어가는지 확인하기 위해 pod에 접근했었다. 근데 로컬에서 잘만되던 코드가 클러스터에 올려놓으니까 거짓말처럼 되지가 않았다. DNS 서비스에 문제가 있나 싶어 coredns도 확인해봤고 pod의 로그를 확인해봐도 rest api가 잘 성공했다는 200코드만 뜰 뿐 data에 대한 print문이 출력되지 않았다. 그 이후 수많은 구글링을 시도했고 결국 인프런 쿠버네티스강사님에게 질문을 했었다. 문제는 python에 있었고 print할 때 해당 코드를 flu..
[쿠버네티스 #4] Replica set 과 Deployment 오늘 소개할 것은 쿠버네티스 컨트롤러 중 Replica set과 Deployment이다. 이 두 가지의 컨트롤러의 가장 큰 기능은 여러 차이가 있지만 결국 Pod를 관리하는 컨트롤러이다. 두 가지를 설명하기 전 간단하게 쿠버네티스 컨트롤러에 대해 정리해보면 쿠버네티스 컨트롤러는 크게 4가지의 역할을 한다고 할 수 있다. 1. auto healing - pod에 문제가 생기거나 pod가 실행되고 있는 node에 문제가 생기면 해당 pod를 다시 실행하는 기능을 말한다. (ReplicaSet, DaemonSet ) 2. software Update - pod 자동 업데이트에 대한 기능을 지원한다. 이 때 이 업데이트가 잘못된 업데이트라면 롤백할 수 있는 기능도 제공한다. (Deployment) 3. auto..