Skip to main content

Overview

프로젝트 개발에 앞서 쿠버네티스의 핵심 요소들에 대한 정의를 학습하기 위해 작성했습니다. 최근 팀 프로젝트 설계에서 침해 사고 시뮬레이션 환경 구축을 담당하게 되었습니다.

이전부터 k8s를 활용해보고 싶었는데, 마침 좋은 기회가 생긴 것 같아 학습 내용을 기록합니다.


쿠버네티스(k8s)는 컨테이너 기반 애플리케이션을 대규모로 자동 배포, 확장, 관리하기 위한 오케스트레이션 플랫폼입니다. 이번 글에서는 k8s의 핵심 구성요소인 컨트롤 플레인워커 노드의 각 구성 요소를 파악해보겠습니다.

전체 구조 개요

주요 구성 요소

쿠버네티스(Kubernetes)가 설치되고 동작하는 전체 환경을 클러스터(Cluster)라고 합니다.
클러스터는 컨트롤 플레인워커 노드로 구성됩니다.
아래는 컨트롤 플레인워커 노드를 중심으로 한 주요 컴포넌트의 간략한 정의입니다.

구성 요소역할
API Server모든 요청의 진입점 및 상태 조회 인터페이스
SchedulerPod를 어느 노드에 배치할지 결정
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: 쿠버네티스에서 배포되는 최소 실행 단위입니다.
    • 하나 이상의 컨테이너로 구성
    • 동일 네트워크 네임스페이스와 스토리지를 공유합니다