Overview
프로젝트 개발에 앞서 쿠버네티스의 핵심 요소들에 대한 정의를 학습하기 위해 작성했습니다. 최근 팀 프로젝트 설계에서 침해 사고 시뮬레이션 환경 구축을 담당하게 되었습니다.
이전부터 k8s를 활용해보고 싶었는데, 마침 좋은 기회가 생긴 것 같아 학습 내용을 기록합니다.
쿠버네티스(k8s)는 컨테이너 기반 애플리케이션을 대규모로 자동 배포, 확장, 관리하기 위한 오케스트레이션 플랫폼입니다.
이번 글에서는 k8s의 핵심 구성요소인 컨트롤 플레인과 워커 노드의 각 구성 요소를 파악해보겠습니다.
전체 구조 개요
주요 구성 요소
쿠버네티스(
Kubernetes)가 설치되고 동작하는 전체 환경을 클러스터(Cluster)라고 합니다.
클러스터는 컨트롤 플레인과 워커 노드로 구성됩니다.
아래는 컨트롤 플레인과 워커 노드를 중심으로 한 주요 컴포넌트의 간략한 정의입니다.
| 구성 요소 | 역할 |
|---|---|
API Server | 모든 요청의 진입점 및 상태 조회 인터페이스 |
Scheduler | Pod를 어느 노드에 배치할지 결정 |
Controller Manager | 상태 조정 및 자동화 |
etcd | 클러스터 상태 저장소 |
Kubelet | 노드에서 Pod 실행·관리 |
Kube-Proxy | 노드 네트워크 처리 및 서비스 트래픽 제어 |
Container Runtime | 컨테이너 실행 엔진 |
Pod | 컨테이너 실행의 최소 단위 |
1. Control Plane
Control Plane은 클러스터의 전반적인 상태를 관리하고 조정합니다.
모든 배포, 스케줄링, 정책 적용은 이 영역에서 결정됩니다.
API Server: 쿠버네티스의 중심 진입점이다. 모든 명령과 요청은 API Server를 통해 들어오며, 클러스터의 상태에 접근하기 위한 표준화된 인터페이스 역할을 합니다.Scheduler: 새로운 Pod가 생성될 때 어떤 노드에 배치할지를 결정한다. CPU, 메모리, 네트워크 조건 등 다양한 요소를 평가해 가장 적합한 노드를 선택합니다.Controller Manager: 클러스터 상태를 목표 상태와 일치시키는 과정을 자동화합니다.Deployment,Node상태,Replica수 등을 지속적으로 확인하고 조정합니다다.etcd: 클러스터의 상태 정보를 저장하는key-value저장소입니다. 선언된 모든 객체 정보가 저장되므로 매우 중요합니다.
2. Worker Node
Worker Node는 실제 애플리케이션 컨테이너(Pod)를 실행하는 장소입니다.
노드 내 구성 요소들은 컨트롤 플레인의 명령을 받아 컨테이너를 실행하고 관리합니다.
Kubelet:API Server의 지시를 받아Pod를 생성하고 관리하는 핵심 에이전트다. 노드의 상태를 주기적으로 Control Plane에 보고합니다.Kube-Proxy: 클러스터 내부 네트워크 트래픽을 처리하고 서비스 단위의 로드밸런싱 역할을 수행합니다. 각 노드에서 네트워크 규칙을 동적으로 설정합니다.Container Runtime: 컨테이너를 실제로 실행시키는 엔진입니다.Docker,containerd,CRI-O등이 사용될 수 있으며,Pod를 구성하는 컨테이너를 생성·삭제합니다.Pods: 쿠버네티스에서 배포되는 최소 실행 단위입니다.- 하나 이상의 컨테이너로 구성
- 동일 네트워크 네임스페이스와 스토리지를 공유합니다