쿠버네티스
는 컨테이너 관리자로 컨테이너 운영을 자동화하기 위한 도구 입니다.
쿠버네티스와 동일한 기능을 하는 도구에는 메소스(Mesos), 도커 스웜(Docker Swarm) 등 이 있습니다.
이런 도구를 컨테이너 오케스트레이션 도구라 하며, 많은 수의 컨테이너를 협조적으로 연동시키기 위한 통합 시스템이며 이 컨테이너를 다루기 위한 API 및 명령행 도구 등이 함께 제공됩니다.
컨테이너를 이용한 애플리케이션 배포 외에도 다양한 운영 관리 업무를 자동화할 수 있습니다.
도커 호스트 관리, 서버 리소스의 여유를 고려한 컨테이너 배치, 스케일링, 여러 개의 컨테이너 그룹에 대한 로드 밸런싱, 헬스 체크 등의 기능을 갖추고 있습니다.
쿠버네티스로 실행하는 애플리케이션은 애플리케이션을 구성하는 다양한 리소스가 함께 연동해 동작합니다.
여기서 말하는 쿠버네티스의 리소스란 애플리케이션을 구성하는 부품과 같은 것으로 노드, 네임스페이스, 파드 등을 말합니다.
Kubernetes 클러스터(cluster)는 Kubernetes의 여러 리소스를 관리하기 위한 집합체를 말합니다.
Kubernetes 리소스 중에서 가장 큰 개념은 노드(node)입니다.
노드(node)는 클러스터(cluster)의 관리 대상으로 등록된 도커 호스트로, 도커 컨테이너가 배치되는 대상입니다.
Kubernetes 클러스터(cluster) 전체를 관리하는 서버인 마스터가 적어도 하나 이상 있어야 합니다.
하나 이상이라는 의미는 클러스터가 작동하기 위한 최소 조건이지만 실제 프러덕 환경에서는 절대 하나로 클러스터(cluster)를 구성하지 않으며, 최소 3개 이상의 마스터 노드를 갖습니다.
Master Node
Kubernetes Cluster 전체를 컨트롤하는 역할로 API 서버,스케줄러,컨트롤러 매니저, etcd 로 구성됩니다.
Node
Master Node에 의해 주어진 명령어를 받고 실제 워크로드에 생성하여 서비스하는 컴포넌트 입니다. Kubelet, kube-proxy, cAdvisor 와 컨테이너 런타임으로 구성됩니다.
Kubernetes는 클러스터(cluster) 안에 가상 클러스터(cluster)를 또 다시 만들 수 있습니다.
클러스터 안의 가상 클러스터를 네임스페이스(namespace)라고 합니다.
클러스터(cluster)를 처음 구축하면 default, docker, kube-public, kube-system
의 네임스페이스 4개가 이미 만들어져 있습니다.
파드(pod)는 컨테이너가 모인 집합체의 단위로, 적어도 하나 이상의 컨테이너로 이루어졌습니다.
앞서 언급한 컨테이너는 도커 컨테이너를 의미하는데 쿠버네티스를 도커와 함께 사용한다면 파드는 컨테이너 하나 혹은 컨테이너의 집합체가 됩니다.
쿠버네티스(Kubernetes)에서는 결합이 강한 컨테이너를 파드로 묶어 일괄 배포합니다.
(ex. nest web app + nginx)