쿠버네티스의 구성과 관련 용어

그림과 실습으로 배우는 도커 & 쿠버네티스를 읽고 중요하다고 생각한 부분을 정리한 글입니다.

 


 

쿠버네티스의 클러스터는 마스터 노드와 워커 노드라는 두 가지 노드로 구성 된다.
마스터 노드에서 컨테이너를 실행하지는 않으며 워커 노드에서 실행되는 컨테이너를 관리하는 역할을 한다.
마스터 노드에는 컨테이너 등의 상태를 관리하기 위해 `etcd`라는 데이터베이스가 설치된다. 

마스터 노드, 워커 노드에는 각기 다른 소프트웨어가 설치된다.

CNI(가상 네트워크 드라이버)
ex. 플란넬, 칼리코, AWS VPC CNI 등

 

마스터 노드(컨트롤 플레인)의 구성

항목 내용
kube-apiserver 외부와 통신하는 프로세스, kubectl로부터 명령을 전달받아 실행한다.
kube-controller-manager 컨트롤러를 통합 관리, 실행한다.
kube-scheduler 파드를 워커 노드에 할당한다.
cloud-controller-manager 클라우드 서비스와 연동해 서비스를 생성한다.
etcd 클러스터 관련 정보 전반을 관리하는 데이터베이스

 

워커 노드의 구성

항목 내용
kubelet 마스터 노드에 있는 kube-scheduler와 연동하여 워커 노드에 파드를 배치하고 실행한다. 또 실행 중인 파드의 상태를 정기적으로 모니터링하며 kube-scheduler에 통지한다.
kube-proxy 네트워크 통신의 라우팅 메커니즘

 

etcd의 역할
도커 컴포즈와 쿠버네티스는 많은 차이점이 있지만 그중에서도 가장 큰 차이점은 쿠버네티스의 정의 파일이 데이터베이스로 관리된다는 점이다. 쿠버네티스가 정의 파일을 읽어 들이면 그 내용은 etcd에 저장된다.
파드는 이 정보를 근거로 관리되며, 도커 컴포즈와 또 다른 점은 쿠버네티스의 정의 파일은 수정이 가능하다는 점이다.

 


 

파드는 컨테이너와 볼륨을 함께 묶은 것이다.

같은 종류의 파드를 하나의 서비스가 관리한다.

 

 

주요 쿠버네티스 리소스

리소스 이름 내용
pods 파드, 컨테이너와 볼륨을 합친것
podtemplates 배포시 파드의 틀 역할
replication controllers 레플리케이션을 제어
resource quoatas 쿠버네티스 리소스의 사용량 제한을 설정
secrets 키 정보를 관리
serviceaccounts 리소스를 다루는 사용자를 관리
services 파드에 요청을 배분
daemonsets 워커 노드마다 하나의 파드를 생성
deployments 파드의 배포를 관리
replicasets 파드의 수를 관리
statefulsets 파드의 배포를 상태를 유지하며 관리
cronjobs 지정된 스케줄대로 파드 실행
jobs 파드를 한번 실행

 


파드의 작성 항목

 

디플로이먼트의 작성 항목