오늘은 쿠버네티스 클러스터의 기본 구조에대해서 정리해보려고한다.
Master(Control Plane) & Node(Worker Machines)
- 쿠버네티스에는 마스터, 노드가 존재한다.
- 노드에서는 실제 어플리케이션의 레벨의 서비스들이 동작하고 있는 공간이며 마스터는 이러한 워커 노드들의 상태를 관리하기 위한 공간이라고 생각하면 된다.
- 쿠버네티스는 3개(마스터 1개, 워커 2개) 의 노드로 구성을 권장하는데 고가용성 클러스터를 구성하는 경우 여러개의 마스터 노드를 두기도 한다.
Master (Control Plane)
전체 클러스터를 관리하는 역할을 하며 kube-api-server, kube-controller-manager, kube-scheduler, cloud-controller-manager, etcd 등의 컴포넌트가 실행된다.
kube-api-server
Kubernetes는 모든 명령과 통신을 API를 이용하며 Kubernetes Cluster의 API를 사용할 수 있도록 하는 서버이다. Cluster로 온 요청을 검증하고 컴포넌트끼리 통신을 주고받을수 있게하는 역할을 한다.
kube-controller-manager
Kubernetes Cluster의 모든 Pod들을 관리하는 컨트롤러를 실행하는 역할을 한다.
- Node Controller
Node가 다운되었을 때
- Replication Controller
적절한 수의 Pod를 유지해주는 역할을 한다
- End-Point Controller
Service와 Pod를 연결해주는 역할을 한다.
- Service Account / Token Controller
새로운 namespace에 대한 기본 계정과 API 접근 Token을 생성한다.
kube-scheduler
새로운 Pod들을 만들때 Cluster 내에서 적절한 Node를 선택하고 실행하는 역할을한다.
Pod를 실행할때 cpu, memory 등의 리소스 요구사항, 특정 데이터, 특정 조건들을 만족하는 node에 할당할 수 있다
cloud-controller-manager
클라우드 서비스를 제공하는 vendor들의 서비스들을 kubernetes와 연결 및 관리하는 컴포넌트이다.
※ on-premise 환경애서의 k8s는 이 컴포넌트가 필요하지않다
- Node Controller
클라우드 서비스를 이용하며 노드가 멈추는 경우 클라우드 사업자에게 노드의 상태를 확인하는 역할을 한다.
- Route Controller
클라우드 인프라에서 네트워크 라우팅을 관리하는데 사용한다.
- Service Controller
클라우드 서비스에서 제곸하는 로드밸런서를 생성 및 삭제하는데 사용한다.
- Volume Controller
클라우드 서비스에서 볼륨을 생성하고 Node에 mount하여 관리하는데 사용한다.
etcd
Kuberntes 클러스터이서 사용되는 설정값이나 클러스터의 상태를 저장하는 데이터베이스이다.
Key-Value 형태로 저장되며 여러 마스터를두어 분산 저장하여 안정성을 보장한다.
Node
마스터에 의해 명령으 받으며 실제 워크로드를 생성하여 서비스한다. Kubelet, Kube-proxy,cAdvisor 그리고 컨테이너 런타임이 배포된다
Kubelet
k8s Cluster의 모든 Node에서 실행되며 Pod의 spec을 전달받아 Container들이 실행되는것을 관리 및 실행여부를 체크하는 역할을한다.
Master의 API서버와 통신하며 Node가 수행해야할 명령을 받거나 노드의 상태를 Master한테 전달해준다.
※ kubernetes를 통해서 만들어지지 않은 container는 관리하지 않는다.
Kube-proxy
kubernetes Cluster안에서 가상 네트워크를 동작할 수있게하는 역할을 한다.
Node로 들어오는 네트워크 트래픽을 적합한 container로 라우팅하며 Node의 네트워크 트래픽을 로드밸런싱해준다.
Container Runtime
Pod를 통해서 배포된 Container를 실행하는 역할을 한다. 가장 잘 알려진 Docker를 사용하거나 cri-o 등
Container 표준인 OCI를 구현하는 container runtime이라면 kubernetes에서 사용가능하다.
ADD-ON
Cluster에서 필요한 기능을 위해 실행되는 pod들이다
DaemonSet, Deployment등에 의해 관리되며
kube-system이라는 namespace를 사용한다
cAdvisor
모든 Node에서 기동되는 모니터링
Container들의 상태와 성능들 Master의 API서버로 전달하는 역할을한다.
참조: https://ooeunz.tistory.com/118
참조: https://bcho.tistory.com/1258
'MSA > Kubernetes' 카테고리의 다른 글
Kubernetes 개념 - Object (0) | 2021.10.20 |
---|---|
Service Mesh란?? (0) | 2021.10.19 |
Kubernetes 개념 - Controller (0) | 2021.10.19 |