Search

Cluster Architecture

Created
2023/07/30 07:26
Tags
k8s
CKA
Mumshad Mannambeth
Core Concept
k8s는 클러스터의 형태로써 존재하고, 클러스터는 노드로 구성되고, 노드는 2가지 종류가 있음

1) Master

각 워커들에게 컨테이너를 분배하고, 관리하는 노드

ETCD Cluster

워커에게 분배된 컨테이너 내역 등의 클러스터 정보를 기록해두는 데이터베이스

Kube Scheduler

워커에게 컨테이너들을 분배

Controller Manager

노드를 클러스터에 추가하거나, 사용 불가능한 노드를 처리하기 위해 Node Controller를 사용
노드를 특정 수만큼 유지할 수 있도록 Replication Controller를 사용

Kube API Server

마스터 및 워커 노드를 관리하는 주체
클러스터 내의 모든 작업을 Orchestration
Kube API를 이용하여 마스터와 워커 간의 소통을 수행

2) Worker

서버를 구성하는 어플리케이션들을 컨테이너화하여 구동하는 노드

Kubelet

마스터와 워커의 소통을 Kube API를 통해 이뤄진다고 했었는데, Kube API를 듣고 필요한 행동을 할 수 있게 만들어주는 것이 Kubelet
Kubelet은 워커 노드에 존재하며, Kube API를 듣고 컨테이너 상태를 파악하거나, 컨테이너를 배포 혹은 파괴하는 선장과 같은 역할을 수행

Kube Proxy

Kube API Server의 지시를 듣는 것이 각 노드의 Kubelet이었다면, 각 노드들끼리 서로 다른 컨테이너들 간의 통신이 가능하게 해주는 존재가 Kube Proxy

Container Runtime Engine

워커 노드들은 컨테이너를 이용하고, 컨테이너들은 어플리케이션이 배포되는 하나의 형식과 같음
컨테이너화 된 어플리케이션을 구동하기 위해선 런타임 엔진이 필요한데, 이와 같은 역할을 해주는 것 중 하나가 Docker
*쿠버네티스는 컨테이너 런타임 엔진으로 Docker 뿐만 아니라, ContainerD, RKT 등을 지원