Kubernetes 핵심 개념 정리
Pod, Deployment, 네임스페이스 등 Kubernetes 핵심 개념과 컨테이너 오케스트레이션 기초
2025년 2월 4일5 min read
문서 목차
컨테이너화 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: 선언적 배포 관리
- 제어 플레인 + 워커 노드 아키텍처
네트워킹 정책, 스토리지 프로비저닝, RBAC 보안 설정은 프로덕션 클러스터 운영의 다음 단계에 해당한다.