Kubernetes Pod 개요
Pod란?
- 쿠버네티스에서 가장 작은 배포 단위
- 하나 이상의 컨테이너로 구성
- 컨테이너들은 shared network, storage, 실행 환경을 공유
- 단일 인스턴스로 관리되며 함께 스케일링됨
Pod의 주요 특징
- 단일 엔터티: 구성 요소 컨테이너들이 함께 생성, 스케일링, 배포됨
- 공유 네트워크: 같은 Pod 내 컨테이너는
localhost
를 통해 통신 가능
- 공유 스토리지: 볼륨을 통해 데이터를 공유할 수 있음
- 리소스 공유: CPU, 메모리 등의 리소스를 공유하여 효율적 사용 가능
- 단일 라이프사이클: Pod 내 컨테이너는 함께 생성, 배포, 종료됨
Pod 생성 방법
- 직접 Pod 생성:
kubectl run
또는 YAML 파일 적용
- 선언적 Pod 관리: Deployment, ReplicaSet 등의 컨트롤러를 통해 관리
Pod 관리 명령어
# Pod 목록 조회
kubectl get pods
kubectl get po -o wide
# Pod 상세 정보 확인
kubectl describe pod [pod-name]
# Pod 로그 확인
kubectl logs [pod-name]
kubectl logs -f [pod-name] # 실시간 로그
kubectl logs --tail=100 [pod-name] # 마지막 100줄
# Pod 내부 접속
kubectl exec -it [pod-name] -- /bin/bash
# Pod 생성
kubectl run nginx --image=nginx
kubectl run nginx --image=nginx --port=80
# Pod 삭제
kubectl delete pod [pod-name]
kubectl delete pod --all
Pod 설계 시 고려사항
- 단일 책임 원칙 (Single Responsibility Principle)
- 컨테이너 간 결합도 최소화
- 상태 데이터는 볼륨 등을 통해 관리
- 프로세스 간 통신은 환경 변수, 볼륨 등으로 처리
- 리소스 사용량을 예측하고 제한 설정