1. Pod 이란?
- Pod(파드)는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위입니다.
- 쿠버네티스는 Pod 단위로 스케줄링, 로드밸런싱, 스케일링 등의 관리 작업을 수행합니다.
- 쿠버네티스에 어떤 애플리케이션을 배포하고 싶다면 최소 Pod 으로 구성해야 한다는 의미입니다.
- 조금 어렵다면 Pod 은 Container 를 감싼 개념이라고 생각할 수 있습니다.
- 하나의 Pod 은 한 개의 Container 혹은 여러 개의 Container 로 이루어져있을 수 있습니다.
- Pod 내부의 여러 Container 는 자원을 공유합니다.
- Pod 의 자세한 구조는 생략하겠습니다.
- 다만 Pod 은 Stateless 한 특징을 지니고 있으며, 언제든지 삭제될 수 있는 자원이라는 점을 꼭 기억해주시기 바랍니다.
2. Pod 생성
apiVersion: v1 # kubernetes resource 의 API Version
kind: Pod # kubernetes resource name
metadata: # 메타데이터 : name, namespace, labels, annotations 등을 포함
name: counter
spec: # 메인 파트 : resource 의 desired state 를 명시
containers:
- name: count # container 의 이름
image: busybox # container 의 image
args: [/bin/sh, -c, 'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done'] # 해당 image 의 entrypoint 의 args 로 입력하고 싶은 부분
- 위의 스펙대로 Pod 을 하나 생성해보겠습니다.
vi pod.yaml
# 위의 내용을 복사 후 붙여넣습니다.
kubectl apply -f pod.yaml
kubectl apply -f <yaml-file-path>
를 수행하면, <yaml-file-path>
에 해당하는 kubernetes resource 를 생성 또는 변경 할 수 있습니다.
- kubernetes resource 의 desired state 를 기록해놓기 위해 항상 YAML 파일을 저장하고, 버전 관리하는 것을 권장합니다.
kubectl run
명령어로 YAML 파일 생성 없이 pod 을 생성할 수도 있지만, 이는 kubernetes 에서 권장하는 방식이 아니므로 생략하겠습니다.
- 생성한 Pod 의 상태를 확인합니다.
kubectl get pod
# ContainerCreating
kubectl get pod
# 시간이 지난 후 Running 으로 변하는 것을 확인할 수 있습니다.
3. Pod 조회
- 방금 current namespace 의 Pod 목록을 조회하는 명령을 수행하였습니다.
- 조회 결과는 Desired state 가 아닌, Current State 를 출력합니다.
kubectl get pod