Kubernetes(k8s) 핵심 개념: 도커 컨테이너들의 지휘자
Cloud
도커 덕분에 컨테이너를 만드는 건 쉬워졌습니다. 근데 이 컨테이너가 100개, 1000개가 되면 어떡하죠? 어떤 서버에 몇 개를 띄울지, 죽으면 어떻게 살릴지, 버전 업데이트는 어떻게 할지... 이걸 사람이 수동으로 하는 건 불가능합니다. 그래서 등장한 컨테이너 오케스트레이션(Orchestration) 도구가 바로 **Kubernetes(k8s)**입니다. (k와 s 사이에 8글자가 있어서 k8s입니다.)
1. 주요 개념
1.1 Pod (파드)
쿠버네티스의 가장 작은 배포 단위입니다. 보통 컨테이너 하나가 Pod 하나지만, 서로 돕는 컨테이너 여러 개(Sidecar)가 한 Pod에 들어갈 수도 있습니다. Pod 안의 컨테이너들은 IP와 저장소를 공유합니다.
1.2 Deployment (디플로이먼트)
"Pod를 어떻게 관리할지"를 정의하는 명세서입니다.
- "이 웹 서버 Pod는 항상 3개를 유지해 줘(Replicas: 3)."
- "업데이트할 때는 하나씩 갈아끼워 줘(Rolling Update)." Deployment를 만들면, k8s가 알아서 Pod 개수를 맞추고 상태를 감시합니다.
1.3 Service (서비스)
Pod는 쉽게 죽고 새로 태어납니다. 그때마다 IP가 바뀝니다. 그래서 고정된 IP(진입점)가 필요한데, 이게 Service입니다. 외부 요청을 받아서 적절한 Pod들에게 부하를 분산(Load Balancing)시켜줍니다.
2. 왜 k8s일까?
- Self-healing: 서버가 터져서 컨테이너가 죽으면 알아서 다시 살려냅니다. 불멸의 시스템을 구축할 수 있습니다.
- Auto-scaling (HPA): 트래픽이 몰리면 Pod 개수를 자동으로 늘리고, 한가하면 줄여서 비용을 아끼고 성능을 보장합니다.
물론 학습 곡선이 에베레스트산만큼 높지만, 현대 인프라 엔지니어링의 표준이기에 피해 갈 수 없는 산입니다.