쿠버네티스는 내부적으로 다양한 컴포넌트(Component)들이 유기적으로 동작하며 클러스터를 구성합니다. 이러한 컴포넌트는 크게 Control Plane, Worker Node, 그리고 Add-on으로 나뉘며, 일부는 Pod 형태로 실행되고, 일부는 OS 레벨에서 데몬으로 동작합니다.
쿠버네티스 외부 / OS 레벨에서 실행되는 컴포넌트
| kubectl | 쿠버네티스 CLI 도구로, 사용자가 API 서버에 명령을 전달할 때 사용합니다. |
| kubeadm | 클러스터를 초기화하거나 노드를 조인할 때 사용하는 설치 도구입니다. |
| kubelet | 각 노드에서 실행되는 에이전트로, 컨트롤 플레인과 통신하며 Pod의 실행 및 상태를 관리합니다. |
| container runtime | 실제로 컨테이너를 실행하는 소프트웨어입니다. 예: Docker, containerd, CRI-O 등 |
1. Control Plane Components
클러스터 전체의 상태를 중앙에서 관리·제어하는 역할을 하는 컴포넌트들이며, 보통 마스터 노드에 설치됩니다.
| kube-apiserver | 클러스터의 관문. 모든 요청은 여기로 통하며, REST API 제공 |
| etcd | Object를 저장하는 분산 Key-Value 저장소 (Kubernetes의 DB) |
| kube-scheduler | 새로운 Pod이 생성되면 어떤 노드에 배치할지 스케줄링 |
| kube-controller-manager | 여러 컨트롤러(ReplicaSet, Deployment 등)를 실행하는 관리자 |
| cloud-controller-manager (선택) | 클라우드 리소스 제어 (로드밸런서, 스토리지 등) |
위의 모든 컴포넌트들은 마스터 노드를 만들면 자동으로 설치됩니다. 이러한 Component들은 쿠버네티스가 정상적으로 동작하려면 꼭 필요합니다.
2. Worker Components
Worker Node는 실제로 애플리케이션 컨테이너(Pod)가 실행되는 노드이며, 클러스터에서 사용자의 워크로드를 처리하는 주체입니다. 각 워커 노드는 다음과 같은 핵심 컴포넌트로 구성됩니다.
| kubelet | 각 노드에서 실행되며, 컨테이너가 정상적으로 동작하도록 관리합니다. Control Plane과 통신하여 명령을 수신하고 상태를 보고합니다. |
| kube-proxy | 클러스터 내부의 네트워크 통신을 관리합니다. 각 노드에서 실행되며, 서비스(Service)를 통해 Pod 간 트래픽을 라우팅합니다. |
| Container Runtime | 실제 컨테이너(Pod)를 실행하는 역할을 합니다. Docker, containerd, CRI-O 등 다양한 런타임이 사용될 수 있습니다. |
kubelet이나 Conainter Rutime의 경우, OS 레벨 컴포넌트이지만, Worker Component의 핵심이기도 합니다. 사용자 워크로드(Pod)를 직접 실행하기 위 꼭 필요하기 때문입니다.
3. Add-on Components
아래와 같이 쿠버네티스의 기본 기능을 확장시켜주는 Component들도 존재합니다.
| Metrics Server | HPA, VPA 같은 리소스 기반 오토스케일링에 필요한 리소스 수집기 |
| CoreDNS | Kubernetes 내부 DNS 기능. my-service.default.svc.cluster.local 같은 이름 해석 |
| Calico | 네트워크 플러그인 (CNI), Pod 간 통신 제어 및 네트워크 정책 |
| Kubernetes Dashboard | 웹 UI 대시보드. 클러스터 리소스 시각화 도구 |

Resource
쿠버네티스에서 Object(오브젝트)는 크게 두 가지 범주로 나눌 수 있습니다. 바로 Controller(컨트롤러)와 Object(실행 자원)입니다.
Controller
다른 Object 또는 다른 Controller를 제어하고 관리하는 리소스입니다. 예를 들어, Deployment는 내부적으로 ReplicaSet을 제어하고, ReplicaSet은 다시 Pod를 생성 및 유지합니다. HPA 역시 Deployment나 ReplicaSet 같은 리소스를 감시하고, 자동으로 스케일링합니다.
Object
하나의 인프라 자원으로서 단독 기능을 수행하는 리소스입니다. 예를 들어, Pod, Service, ConfigMap, Secret, PVC는 각자 독립적인 기능을 가지며, 실행 환경을 구성합니다. 이들은 직접적으로 컨테이너 실행, 설정 주입, 네트워크 연결, 스토리지 마운트 등을 담당합니다.
이렇게 Controller와 Object를 아우르는 개념을 쿠버네티스에서는 리소스(Resource)라고 부릅니다. 모든 리소스는 YAML 파일로 선언되고, kubectl 명령을 통해 생성 및 제어할 수 있습니다.
이러한 리소스도 NameSpace레벨과 Cluster 레벨로 나눠집니다. NameSpace 레벨의 리소스는 특정 논리적으로 분리된 환경에서 동작합니다. Cluster레벨의 리소스는 Cluster 전체에서 공유되며, 특정 NameSpace에 속하지 않습니다. 이러한 리소스들은 Control Plane Component들에 의해서 동작하게 됩니다.
'Infra' 카테고리의 다른 글
| [K8S] DevOps 환경 구축하기 (0) | 2025.05.28 |
|---|---|
| [K8S] DevOps (0) | 2025.05.26 |
| [K8S] PV, PVC, Deployment, Service, HPA (0) | 2025.05.25 |
| [K8S] ConfigMap & Secret (0) | 2025.05.25 |
| [K8S] Probe (0) | 2025.05.20 |
댓글