Kubernetes
Overview
Kubernetes 내용 정리.
Tutorial
쿠버네티스 클러스터
쿠버네티스는 서로 연결되어서 단일 유닛처럼 동작하는 고가용성의 컴퓨터 클러스터를 상호조정한다. 쿠버네티스의 추상화된 개념을 통해 개별 머신에 얽매이지 않고 컨테이너화된 애플리케이션을 클러스터에 배포할 수 있다. 이렇게 새로운 배포 모델을 활용하려면, 애플리케이션을 개별 호스트에 결합되지 않는 방식으로 패키지할 필요가 있다. 즉, 컨테이너화 해야 한다. 컨테이너화 된 애플리케이션은 호스트에 매우 깊에 통합된 패키지로써, 특정 머신에 직접 설치되는 예전의 배포 모델보다 유연하고 가용성이 높다. 쿠버네티스는 애플리케이션 컨테이너를 클러스터에 분산시키고 스케줄링하는 일을 보다 효율적으로 자동화한다. 쿠버네티스는 오픈소스 플랫폼이고 운영 수준의 안정성을 가졌다.
쿠버네티스 클러스터는 두 가지 형태의 자원으로 구성된다.
- 마스터는 클러스터를 상호조정한다.
- 노드는 애플리케이션을 구동하는 작업자이다.
클러스터 다이어그램
마스터는 클러스터 관리를 담당한다. 마스터는 애플리케이션을 스케쥴링하거나, 애플리케이션의 항상성을 유지하거나, 애플리케이션을 스케일링하고, 새로운 변경사항을 순서대로 반영하는 일과 같은 클러스터 내 모든 활동을 조율한다.
노드는 쿠버네티스 클러스터 내 워커 머신으로써 동작하는 VM 또는 물리적인 컴퓨터이다. 각 노드는 노드를 관리하고 쿠버네티스 마스터와 통신하는 Kubelet 이라는 에이전트를 갖는다. 노드는 컨테이너 운영을 담당하는 Docker 또는 rkt 과 같은 툴도 갖는다. 운영 트래픽을 처리하는 쿠버네티스 클러스터는 최소 세 대의 노드를 가져야 한다.
마스터는 클러스터를 관리하고 노드는 구동되는 애플리케이션을 수용하는 데 사용된다.
애플리케이션을 쿠버네티스에 배포한다는 것은, 마스터에 애플리케이션 컨테이너를 구동하라고 지시하는 것이다. 마스터는 컨테이너를 클러스터의 어느 노드에 구동시킬지를 스케쥴한다. 노드는 마스터가 제공하는 쿠버네티스 API를 통해서 마스터와 통신한다. 최종 사용자도 쿠버네티스 API 를 직접 사용해서 클러스터와 상호작용할 수 있다.
쿠버네티스 클러스터는 물리 및 가상 머신 모두에 설치될 수 있다. 쿠버네티스 개발을 시작하려면 Minikube 를 사용할 수 있다. Minikube 는 로컬 머신에 VM 을 만들고 하나의 노드로 구성된 간단한 클러스터를 배포하는 가벼운 쿠버네티스 구현체이다. Minikube 는 리눅스, 맥, 그리고 윈도우 시스템에서 구동이 가능하다. Minikube CLI는 클러스터에 대해서 시작, 중지, 상태 조회 및 삭제 등의 기본적인 부트스트래핑 기능을 제공한다.