https://kubernetes.io/ko/docs/concepts/workloads/pods/
쿠버네티스에서 만들고 관리할 수 있는 가장 작은 배포 가능 컴퓨팅 단위임. 그리고 하나 이상의 컨테이너의 그룹이기도 함. 그룹 내에선 해당 컨테이너를 구동하는 방식에 대한 명세를 통해 스토리지, 네트워크가 공유됨.
관리되는 가장 작은 단위이기 때문에 항상 함께 배치되고, 함께 스케쥴된다. 어떻게 보면 논리적인 호스트라고도 할 수 있음.(파드 내부 컨테이너는 PID, IPC, 네트워크 네임스페이스 공유) 파드에는 파드 시작중에 실행되는 초기화 컨테이너가 있을 수도 있고, 클러스터가 제공하는 디버깅을 위한 임시 컨테이너가 삽입될 수도 있다.
쿠버네티스는 도커 이외에도 다양한 컨테이너 런타임을 지원한다. 대표적으로 Containerd
💡 1.24부터 dockershim이 제거되었고, 기본 CRI런타임은 containerd-CRI-O라고 함. docker Engine은 직접 사용 불가하다…
예시 스크립트 - nginx 이미지를 실행하는 컨테이너로 구성되는 파드의 예시임.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
위의 파드를 생성하려면 다음의 명령을 실행하면 된다.
kubectl apply -f <https://k8s.io/examples/pods/simple-pod.yaml>
싱글톤 파드를 포함해, 파드는 직접 생성하지 않는다. 디플로이먼트(Deplyment), 잡(Job)같은 워크로드 리소스를 사용해 생성한다.(직접 pod yaml으로 배포하면 장애시 자동 복구가 어렵다고 함.) 만약 해당 파드가 상태를 관리해야 한다면 이때는 StatefulSet 리소스를 고려한다.
워크로드 리소스가 뭐지?
쿠버네티스 클러스터의 파드는 다음의 두 가지 주요 방식으로 사용된다.