
1. Architecture

쿠버네티스 클러스터는 Control plane(Master node)과 Worker node(Compute machine)로 구성된다.
쿠버네티스 kubectl 키워드를 사용해서 제어할 수 있다. kubectl 명령이 API Server로 전달되고 해당 명령을 수행하는 컴포넌트에게 전달되어 수행된다. 즉 Client의 명령에 따라 Control plane이 Worker node를 제어하는 구조이다.
2. Control Plane
Control Plane은 API Server, etcd, Controller manager, Scheduler로 이루어져 있다.
API Server
API서버는 클러스터의 관리 명령을 중앙 집중적으로 처리하는 컴포넌트이다. 모든 쿠버네티스 명령은 API Server를 거쳐서 실행된다.
etcd
etcd는 분산형 key-value 저장소이다. 쿠버네티스는 여러 개(홀수)의 Control plane을 가지는데 각각의 Control plane마다 etcd가 분산되어 있다. 클러스터의 모든 상태와 메타데이터를 저장하는 공간이다. etcd에는 API Server만 접근 가능하며 etcd는 클러스터 내에서 일어나는 변경사항을 추적한다. Pod, Deployment, Service, resource 정보 등 쿠버네티스에 대한 모든 정보가 저장되어 있다.
Controller manager
쿠버네티스는 원하는 상태(Desired State)를 명시하고 이 상태를 유지하기 위해서 동작한다. Container가 3개 있어야 하는데 한 개의 Container가 응답하지 않으면 Container를 재가동하여 3개인 상태를 맞춘다. 이때 Controller manager가 해당 컨테이너의 Controller에게 요청하여 컨테이너를 재가동한다. Controller는 자동복구 기능을 제공하여, 클러스터가 안정적인 상태를 유지할 수 있도록 한다.
Scheduler
Pod를 만들 때 스펙을 명시할 수 있는데 Scheduler는 Pod를 적절한 노드에 배치하는 역할을 한다.
3. Worker node
Worker node는 클러스터 내의 실제 작업을 수행하는 노드로 kubelet, kube-proxy, Container runtime, Pod로 구성되어 있다.
kubelet
kubelet은 API서버로부터 받은 명령에 따라 Pod의 LifeCycle을 관리한다. 내장된 cAdvisor를 통해서 CPU, 메모리, 파일 시스템, 네트워크 사용량등의 리소스 정보를 API Server와 공유한다. API Server는 정보를 etcd에 저장하고 클러스터의 리소스 할당 및 스케줄링에 활용된다.
Container runtime
Container runtime은 컨테이너를 실행하기 위한 환경을 제공한다. 쿠버네티스는 CRI(Container Runtime Interface)를 통해 다양한 컨테이너 런타임과 호환된다. Container는 주로 Docker가 사용되며 containerd, CRI-O가 있다. CRI는 kubelet과 Container runtime 사이의 통신을 관리하고 이 인터페이스를 통해 kubelet은 Container의 LifeCycle을 관리할 수 있다.
kube-proxy
kube-proxy는 쿠버네티스 서비스가 정의하는 가상 IP 주소들을 관리하고, Worker Node로 오는 트래픽을 적절한 파드로 전달하는 역할을 한다. 이를 통해 외부에서 클러스터 내의 파드로의 통신을 관리한다. 여러 Replicaset을 가진 Pod에 요청이 왔을 때 Load Balancing 기능을 제공한다.
Pod
Pod는 한 개 이상의 컨테이너로 구성된 쿠버네티스 기본 배포 단위이다. 하나의 Pod에 여러개의 컨테이너가 있는경우 파드 내의 컨테이너들은 같은 가상머신 에 배치되며, 같은 네트워크 네임스페이스, IP 주소 및 포트 공간을 공유한다. 파드 내의 컨테이너들은 서로를 localhost로 찾아 통신할 수 있다.
'Kubernetes' 카테고리의 다른 글
| Kubernetes Object (0) | 2024.01.31 |
|---|---|
| Kubernetes Intro (0) | 2024.01.30 |