그림과 실습으로 배우는 도커 & 쿠버네티스를 읽고 중요하다고 생각한 부분을 정리한 글입니다.
쿠버네티스의 클러스터는 마스터 노드와 워커 노드라는 두 가지 노드로 구성 된다.
마스터 노드에서 컨테이너를 실행하지는 않으며 워커 노드에서 실행되는 컨테이너를 관리하는 역할을 한다.
마스터 노드에는 컨테이너 등의 상태를 관리하기 위해 `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 | 파드를 한번 실행 |
파드의 작성 항목
디플로이먼트의 작성 항목
'알아두면 좋은 개발 지식' 카테고리의 다른 글
DTO를 사용하는 이유와 설계 방법 (0) | 2024.04.13 |
---|