1. 쿠버네티스 기초 개념
쿠버네티스는 컴퓨터 클러스터에 걸쳐서 애플리케이션 컨테이너 스케줄링과 실행을 오케스트레이션 하는 오픈소스 플랫폼이다. 쿠버네티스의 구조를 간략하게 정리하면 다음과 같다.
1)쿠버네티스 클러스터
쿠버네티스 클러스터는 마스터와 노드로 구성되며 마스터는 클러스터를 상호조정하고 노드는 어플리케이션을 구동하는 역할을 한다. 쿠버네티스 클러스터의 추상화된 개념을 통해 개별 머신에 얽매이지 않고 애플리케이션 컨테이너를 분산시키고 스케쥴링하는 일을 자동화 할 수 있다.
2) 마스터
마스터는 애플리케이션을 스케줄링하거나 애플리케이션의 항상성을 유지한다. 또한 스케일링, 변경사항 반영 등 클러스터 내 모든 활동을 조율한다.
3) 노드
노드는 쿠버네티스 클러스터 내의 워커 머신으로써 동작하는 VM이나 물리 머신이다. 각 노드는 마스터와 통신하고 노드를 관리하는 kubelet이라는 에이전트를 가진다. 컨테이너 운영을 담당하는 Docker와 같은 툴도 가진다. 운영 환경의 쿠버네티스 클러스터는 최소 세 대의 노드를 가져야 한다.
4) 디플로이먼트
디플로이먼트가 배포가 되면 마스터는 디플로이먼트에 포함된 애플리케이션 인스턴스를 클러스터 내의 개별 노드에 실행되도록 스케줄링 한다. 각 노드의 kubelet은 이 신호를 받아 자신이 위치한 노드와 동일한 nodeName 값을 가진 파드가 있으면 해당 정의 내용에 맞게 컨테이너를 생성한다. 인스턴스가 생성되면 디플로이 컨트롤러는 지속적으로 인스턴스를 모니터링한다. 인스턴스가 다운되거나 삭제되면 컨트롤러가 다른 노드의 인스턴스로 교체시켜준다. 쿠버네티스는 이렇게 자동 복구 기능도 제공한다.
5) 파드(POD)
파드(POD)는 하나 또는 그 이상의 애플리케이션 컨테이너들의 논리적인 그룹이고 공유 스토리지(볼륨), IP 주소 그리고 이것들을 설정하는 방식에 대한 정보를 가지고 있다. 파드는 쿠버네티스 플랫폼 상에서 최소 단위로 사용되며 배포를 생성할 때 해당 배포는 컨테이너 와 함께 파드를 생성한다. 파드는 스케쥴 되어진 노드에 할당되어 실패나 삭제가 발생할 때까지 해당 노드에 유지된다.
6) 서비스
서비스는 하나의 논리적인 파드 셋트와 그 파드들에 접근할 수 있는 정책을 정의하는 추상적 개념이다. 서비스를 통해 파드 셋트에 대한 외부 트래픽 노출과 로드밸런싱을 제공한다. 서비스에서 파드 셋트에 걸쳐 트래픽을 라우팅 하기 때문에 애플리케이션에 영향을 주지 않고 스케일링이나 애플리케이션 업데이트가 가능하다.
2. Minikube 설치
Minikube는 로컬 환경에서 쿠버네티스를 간편하게 구현 및 테스트 하기 위한 도구이다. 시스템 관리자는 보통 쿠버네티스의 구조를 파악하기 위해 사용하며, 개발자들은 실제 로컬 개발 환경 구현을 위해 사용하곤 한다. 다음은 Windows 환경에 설치하는 방법 및 기본 명령어 실행 방법이다.
1. Hyper-V 설치(VirtualBox도 지원)
- PowerShell에서 아래 명령어 실행 후 리부팅
- Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
2. minikube 설치 파일 다운
- minikube-windows-amd64 파일 다운로드 후 minikube.exe로 저장
- https://github.com/kubernetes/minikube/releases/tag/v1.12.1
3. kubectl 다운
- 커맨드 라인 도구로 쿠버네티스를 조작하기 위해 필요
- https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/windows/amd64/kubectl.exe
4. 시스템 환경변수에 실행 파일 경로 추가
- cmd에서 where minikube로 환경변수 설정 확인
5. minikube 실행, 클러스터 생성
- 관리자 권한으로 cmd 실행
- minikube start
6. minikube 상태 확인
- minikube status
- kubectl get nodes
7. 컨테이너 생성
1). 간단한 예제 echoserver 이미지로 생성
- create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.102). 디플로이먼트에 접속할 수 있도록 서비스로 노출
- kubectl expose deployment hello-minikube --type=NodePort --port=80803). 파드 상태 조회
- kubectl get pod
- 서비스를 통해 접근하기 위해서는 파드가 실행되기를 기다려야 한다.
- STATUS 가 Running이어야 실행 완료 상태4). 서비스 상세정보 조회를 통해 서비스의 URL 확인
- minikube service hello-minikube --url5). VM 정지 및 삭제
- minikube stop : VM 정지
- minikube delete : VM 삭제
'Kubernetes' 카테고리의 다른 글
[Kubernetes] 클러스터 업그레이드 (0) | 2020.12.17 |
---|---|
[Kubernetes] 어플리케이션 배포 관리 (0) | 2020.12.11 |
[Kubernetes] 모니터링, 로깅 (0) | 2020.11.28 |
[Kubernetes] Service (0) | 2020.11.19 |
[Kubernetes] POD, ReplicaSet, Deployment (0) | 2020.11.12 |