Kubernetes 핵심 개념 정리
Pod, Deployment, 네임스페이스 등 Kubernetes 핵심 개념과 컨테이너 오케스트레이션 기초
2025년 2월 4일·5 min read·
infra
kubernetes
docker
containerization
컨테이너화 vs 컨테이너 오케스트레이션
컨테이너화 (Containerization)
애플리케이션과 의존성을 하나의 이미지로 패키징하여 어떤 환경에서도 일관되게 동작하도록 하는 기술이다.
| 특성 | 설명 |
|---|---|
| 이식성 | 개발/테스트/프로덕션 환경 차이 최소화 |
| 격리성 | 독립적 실행 환경, 다른 서비스와 간섭 없음 |
| 경량성 | VM 대비 자원 소모 적고, 빠른 시작/종료 |
컨테이너 오케스트레이션
여러 컨테이너를 자동으로 배포, 관리, 확장, 업데이트 및 모니터링하는 기술이다.
- 자동화: 수백 개의 컨테이너 반복 작업 자동화
- 자동 스케일링: 트래픽 변화에 따라 컨테이너 수 자동 조절
- 롤링 업데이트: 단계별 업데이트 후 문제 시 롤백
- 셀프-힐링: 비정상 컨테이너 자동 재시작
오케스트레이션의 필요성
수동 관리의 문제점:
- 수십~수백 개 컨테이너 모니터링 불가능
- 트래픽 변화에 실시간 대응 어려움
- 장애 복구 시간 증가
- 운영 비용 및 오류 가능성 증가
쿠버네티스의 역할
핵심 기능
| 기능 | 설명 |
|---|---|
| 자동 배포/확장 | YAML로 정의한 상태 자동 유지 |
| 서비스 디스커버리 | 동적 IP에도 고정 엔드포인트 제공 |
| 로드 밸런싱 | 트래픽 균등 분산 |
| 자원 관리 | CPU/메모리 효율적 분배 |
| 이식성 | 온프레미스/클라우드 동일 운영 |
쿠버네티스 아키텍처
제어 플레인 (Master)
| 컴포넌트 | 역할 |
|---|---|
| API Server | 클러스터의 유일한 API 접점 |
| Controller | 현재 상태와 원하는 상태를 동기화 |
| Scheduler | 새 Pod를 배치할 노드를 선택 |
| etcd | 클러스터 상태를 저장하는 분산 Key-Value 저장소 |
워커 노드
| 컴포넌트 | 역할 |
|---|---|
| kubelet | 제어 플레인과 통신하며 Pod 상태 유지 |
| kube-proxy | Service 네트워크 프록시 및 로드밸런싱 처리 |
| Container Runtime | 실제 컨테이너 실행 (containerd, CRI-O 등) |
핵심 오브젝트
Pod
쿠버네티스의 최소 배포 단위이다.
- 하나 이상의 컨테이너 포함
- 동일 네트워크 네임스페이스 공유
- 같은 스토리지 볼륨 공유 가능
- 일시적(Ephemeral) 특성
yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: app
image: nginx:latest
ports:
- containerPort: 80Service
Pod 집합에 대한 고정된 네트워크 엔드포인트를 제공한다.
| 타입 | 설명 |
|---|---|
| ClusterIP | 클러스터 내부 전용 (기본값) |
| NodePort | 노드 포트로 외부 접근 |
| LoadBalancer | 클라우드 LB 연동 |
yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 8080
type: ClusterIPDeployment
Pod의 선언적 업데이트를 관리한다.
- 롤링 업데이트 지원
- 롤백 기능
- 스케일링
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: my-app:v1kubectl 기본 명령어
bash
# 클러스터 정보
kubectl cluster-info
# 리소스 조회
kubectl get pods
kubectl get services
kubectl get deployments
# 리소스 상세 정보
kubectl describe pod <pod-name>
# 로그 확인
kubectl logs <pod-name>
# 배포
kubectl apply -f deployment.yaml
# 스케일링
kubectl scale deployment my-deployment --replicas=5
# 롤백
kubectl rollout undo deployment my-deployment정리
쿠버네티스는 컨테이너 오케스트레이션의 사실상 표준(de facto standard)이다.
핵심 개념:
- Pod: 최소 배포 단위
- Service: 네트워크 추상화
- Deployment: 선언적 배포 관리
- 제어 플레인 + 워커 노드 아키텍처
다음 글에서는 네트워킹, 스토리지, 보안 등 고급 주제를 다룬다.