k8s

topics 400-인프라 & 아키텍처 401 Docker & Kubernetes
types 이론 학습
tags #kubernetes #k8s #container
references www.samsungsds.com/kr/insights/kubern...

Kubernetes (K8s)

컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템

핵심 철학: 선언적 관리

K8s의 핵심은 **"목표 상태(Desired State)를 선언하면, K8s가 알아서 맞춰준다"**는 것이다.

  • Desired State: 내가 원하는 상태 (예: Pod 3개 유지)
  • Current State: 현재 상태 (예: Pod 2개 실행 중)

K8s는 Current State를 계속 모니터링하면서 Desired State와 다르면 자동으로 조정한다. Pod가 죽으면? 알아서 새로 띄워줌.

하는 일 (Container Orchestration)

  • 컨테이너 자동 배치 및 복제
  • 로드 밸런싱
  • 장애 복구 (Self-healing)
  • 서비스 노출
  • 자동 확장/축소 (Auto-scaling)
  • 서비스 간 연결

이런 일들을 묶어서 Container Orchestration이라고 부른다.

구성요소

k8s-1751779119042.png

컨트롤 플레인 컴포넌트 (Master Node)

클러스터 전체를 관리하는 뇌 역할이다. Master Node에서 실행된다.

컴포넌트 역할 비유
kube-apiserver 모든 요청의 진입점 API Gateway
etcd 클러스터 정보를 key-value로 저장 데이터 사전
kube-scheduler Pod를 어느 노드에 배치할지 결정 배치 담당자
kube-controller-manager Desired State 유지 관리 관리자

kube-apiserver

  • kubectl 명령이 여기로 전송됨
  • 클러스터로 들어오는 모든 요청을 가장 앞에서 받음

etcd

  • 클러스터 상태, 리소스 구성 정보 등 저장
  • 분산 저장 구조 (안정성 때문에)

kube-scheduler

  • 새 Pod 감지 → 적절한 노드에 배치

kube-controller-manager

  • 노드 다운 여부 체크
  • Pod 복제 수 유지
  • 서비스-Pod 연결 확인

노드 컴포넌트 (Worker Node)

실제로 컨테이너가 돌아가는 노드다.

kubelet

  • 각 노드에서 Pod를 생성하고 관리하는 핵심 요소
  • kubectl 명령 → kube-apiserver → kubelet → Pod 생성/관리

container runtime

  • 실제로 컨테이너를 실행하는 애플리케이션
  • CRI(Container Runtime Interface) 표준 준수
  • 대표적: containerd, CRI-O
  • 컨테이너 런타임 참고

kube-proxy

  • 클러스터 내부 네트워크 요청 전달
  • Pod IP는 매번 바뀌는데, kube-proxy가 이를 관리
  • 서비스 오브젝트와 연결해서 고정 접근 경로 제공

POD

K8s의 최소 배포 단위

  • 하나 이상의 컨테이너를 포함
  • 같은 Pod 내 컨테이너는 네트워크/스토리지 공유
  • Pod가 죽으면 새로운 Pod가 생성됨 (같은 Pod가 살아나는 게 아님)

Docker Container vs Pod?: Container는 단일 프로세스 격리 단위, Pod는 밀접하게 연관된 컨테이너들을 묶은 논리적 단위다.

관련 문서