쿠버네티스는 컨테이너화된 애플리케이션을 대규모로 자동으로 배포, 스케일링, 관리하기 위한 오픈소스 컨테이너 오케스트레이션(Container Orchestration) 플랫폼입니다.
문제점: 도커만으로는 수십, 수백 개의 컨테이너를 관리하기 어렵습니다. 컨테이너 하나가 죽으면 누가 다시 살릴 것인가? 트래픽이 몰리면 어떻게 컨테이너 수를 늘릴 것인가? 여러 서버에 컨테이너를 어떻게 효율적으로 배치할 것인가?
쿠버네티스의 역할: 이러한 복잡한 문제들을 자동화하여, 개발자가 컨테이너의 저수준 관리에서 벗어나 애플리케이션 자체에 집중할 수 있도록 돕는 "컨테이너를 위한 운영체제(OS)"와 같습니다.
ECR (Elastic Container Registry)는 AWS에서 제공하는 완전 관리형 프라이빗(Private) Docker 이미지 레지스트리입니다.
Docker Hub와의 차이점:
사용 흐름:
Pod(파드)는 쿠버네티스에서 생성하고 관리할 수 있는 가장 작은 배포 단위입니다.
핵심 개념:
localhost를 통해 서로 통신할 수 있습니다.Deployment(디플로이먼트)는 Pod와 그것의 복제본인 ReplicaSet의 상태를 관리하고, 애플리케이션의 배포와 업데이트를 자동화하는 핵심 컨트롤러입니다.
Deployment의 역할 (Desired State Management):
문제점: Pod는 일회성이며, 생성될 때마다 새로운 IP 주소를 할당받습니다. 따라서 Pod의 IP 주소로 직접 통신하는 것은 거의 불가능합니다.
Service(서비스)는 여러 개의 동일한 Pod 그룹에 대한 고정적인 단일 진입점(Single Point of Entry)과 네트워크 연결을 제공하는 리소스입니다.
Service의 역할:
| 타입 | 설명 | 사용 사례 |
|---|---|---|
| ClusterIP | (기본값) 클러스터 내부에서만 접근 가능한 IP를 할당. | 마이크로서비스 간의 내부 통신 (e.g., 웹 서버 ↔ DB) |
| NodePort | 모든 노드(서버)의 특정 포트를 열고, 해당 포트로 들어온 요청을 Service로 전달. | 개발/테스트 목적으로 외부에서 간단히 접근할 때. |
| LoadBalancer | AWS, GCP 등 클라우드 공급업체의 외부 로드 밸런서를 자동으로 생성하고 Service에 연결. | 애플리케이션을 외부 인터넷에 정식으로 노출할 때. |
사용자 → Service (LoadBalancer) → Deployment가 관리하는 Pod 중 하나 → 컨테이너