Search
📝

Kubernetes 기본 개념

Kubernetes란?

컨테이너화된 애플리케이션을 자동으로 배포하고, 확장하고 ,관리해주는 오케스트레이션 시스템
많은 컨테이너(Docker 같은)를 자동으로 배포하고, 죽으면 복구하고, 로드밸런싱해주고, 필요한 만큼 자동으로 확장(scale)해주는 운영 자동화 시스템

기본 구성 요소

노드 종류는 크게 Control Plane(제어 영역) & Node(실행 영역)으로 나뉨

Control Plane Node : 제어 영역

클러스터를 관리하는 두뇌(= 일감 분배, 관리, 감시)
클러스터의 상태를 전체적으로 관리
구성요소
역할
API Server
모든 요청이 들어오는 “입구”. kubectl, 대시보드 등이 여기로 요청을 보냄.
Scheduler
Pod을 어떤 노드에 배치할지 결정. (예: CPU 여유 있는 곳에)
Controller Manager
“Pod이 죽었는데?”, “Replica 수가 부족한데?” 등을 감시하고 조치.
etcd
클러스터 상태를 저장하는 분산 Key-Value 저장소 (모든 설정의 진짜 저장소).

Worker Node : 실행 영역

파드를 실행하는 손발(= 실제 컨테이너 실행)
실제 컨테이너(Pod)가 돌아가는 물리/가상머신
구성요소
역할
kubelet
각 노드에서 Pod을 생성하고, 헬스체크하고, 상태를 Control Plane에 보고.
kube-proxy
클러스터 내부 네트워크/서비스 트래픽 관리.
Container Runtime
Docker, containerd 등 — 실제 컨테이너를 실행시킴.

쿠버네티스의 기본 단위

개념
설명
Pod
컨테이너의 최소 실행 단위. 하나 이상 컨테이너를 함께 묶어 실행.
ReplicaSet
같은 Pod 여러 개를 유지해주는 컨트롤러. (1개 죽으면 새로 만듦)
Deployment
ReplicaSet의 상위 개념으로, 버전 업데이트·롤백을 자동으로 관리.
Service
Pod들이 죽었다 살아나도 IP가 바뀌지 않게, 고정된 접근점(Load Balancer) 제공.
Namespace
리소스를 격리하기 위한 논리적 구분. (예: dev, staging, prod)
ConfigMap / Secret
설정값 저장용. Secret은 암호화된 민감 정보 저장용.
Ingress
외부 트래픽을 내부 Service로 라우팅하는 규칙. (도메인 기반 접근 등)

동작 흐름 간단 예시

1.
사용자가 kubectl apply -f deployment.yaml 명령 실행
2.
API Server가 요청을 받아 etcd에 기록
3.
Controller Manager가 “Pod이 없네?” → 새 Pod 생성 요청
4.
Scheduler가 “CPU 여유 있는 Node2에 넣자” 결정
5.
Node2의 kubelet이 컨테이너 생성
6.
kube-proxy가 Service를 통해 트래픽 연결

쿠버네티스 장점

자동 복구(Selft-healing)
Pod이 죽으면 자동으로 새로 만듦
자동 확장(Auto-scaling)
트래픽 많아지면 Pod 개수를 자동 조절
롤링 업데이트 & 롤백
배포 중 장애 나면 이전 버전으로 자동 복구
멀티클라우드/온프레미스 지원
AWS, GCP, Azure, 자체 서버 어디서든 운영 가능