Pod
하나 이상의 컨테이너를 포함하는 쿠버네티스의 가장 작은 배포 단위
- Pod는 컨테이너와 같이 한 번 사용되고 폐기되는 일회성 임시 엔티티로 간주됨

주요 특징
- 단위 관리: 하나 이상의 컨테이너 또는 볼륨을 포함하며 이를 관리함
- 공유 네트워크: Pod 내의 모든 컨테이너는 동일한 네트워크를 공유
- 고유한 IP: 고유한 가상 IP를 가지며, 이를 통해 클러스터 내 다른 Pod들과 통신
- 공유 볼륨: Pod 내의 컨테이너는 동일한 볼륨을 공유하여 데이터를 교환
- 클러스터 내 실행: Pod는 클러스터 중 하나의 노드에서 실행됨
Pod의 라이프사이클
Pod가 생성, 실행, 종료되는 일련의 과정으로, Pod는 여러 상태를 거치면서 실행됨
- Pending (대기 중): Pod가 생성되었지만, 아직 클러스터 내에서 적합한 노드에 할당되지 않은 상태
- Running (실행 중): 노드에서 Pod의 컨테이너가 실행 중인 상태
- Succeeded (성공적으로 완료됨): Pod 내의 모든 컨테이너에서 작업이 종료된 상태
- Failed (실패): Pod 내의 컨테이너가 비정상적으로 종료된 상태
- Unknown (알 수 없음): Pod의 상태를 얻을 수 없는 상태

Pod 매니페스트
매니페스트란? 쿠버네티스 클러스터 내 리소스를 정의하고 관리하기 위한 스크립트 파일
- YAML 또는 JSON 형식으로 작성
Pod 매니페스트
apiVersion: v1
kind: Pod
metadata:
name: myapp
labels:
name: myapp
spec:
containers:
- name: myapp
image: <Image>
resources:
limits:
memory: "128Mi"
cpu: "500m'
ports:
- containerPort: <Port>
- apiVersion: 리소스를 정의하는 쿠버네티스 API 버전
- kind: 생성하려는 쿠버네티스 객체의 유형, Pod 객체를 지정
- metadata: Pod의 메타데이터 정보
- spec: Pod의 동작을 정의
매니페스트 파일로 pod 실행하기
nginx-pod.yaml 작성하기
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
apply -f에 YAML 파일을 지정하고 실행하면, YAML에 정의된 상태를 클러스터에 반영
- 하나의 niginx Pod가 생성됨
$ kubectl apply -f nginx-pod.yaml

정의한 값 외에는 기본값으로 pod가 생성됨
$ kubectl get pod nginx -o yaml

참고:
https://medium.com/@ilyes.hamrouni.per/kubernetes-pod-lifecycle-and-observability-aeaec8c98a0e
'DevOps > Kubernetes' 카테고리의 다른 글
[k8s] Service (0) | 2025.01.09 |
---|---|
[k8s] Deployment (0) | 2025.01.09 |
[k8s] minikube 설치 & kubectl 사용하기 (1) | 2025.01.09 |
[k8s] Kubernetes 개념 및 구성요소 (0) | 2024.10.21 |
[k8s] Kubernetes Cluster 구축하기 (v1.31) (0) | 2024.10.10 |