애플리케이션 실행 단위를 구성하는 가장 작은 배포 객체 단위
initContainer, SideCar와 같은 특수한 패턴의 컨테이너도 함께 실행 가능nginx 컨테이너를 실행하는 파드 선언과 배포 후 정상 실행 확인
simple-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: simple-pod
spec:
containers:
- name: nginx
imgae: nginx:latest
kubectl apply -f simple-pod.yaml # 적용
kubectl get pods # 확인
파드는 애플리케이션의 생성부터 종료까지 여러 상태를 가진다.
파드의 상태는 장애 진단과 운영 최적화에 필수적인 정보를 제공Pending, Running, Successed, Failed, Unknown
파드의 대표적인 상태 외에도 실행 과정, 컨테이너 상태에 따른 다른 속성도 존재한다.
- 파드가 생성/실행되는 단계에서는
Condition속성을 통해 단계와 상태를 알 수 있다.- 파드 내 컨테이너들은 State, Reason 속성 값을 통해 각 컨테이너들의 대표적 상태를 제공


kubectl 을 이용해 파드가 배포되는 과정을 자세히 보자.
kubectl apply 명령어를 실행해 쿠버네티스 클러스터에 리소스를 생성하라는 요청을 보낸다.manifest 파일etcd에 기록(저장)메인 컨테이너와 네트워크, 스토리지를 통한 밀접한 공유가 필요한 다른 컨테이너를 운용해야할 때 멀티 컨테이너 구조를 사용한다.


apiVersion: v1
kind: Pod
metadata:
name: nginx-sidecar
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: logs
mountPath: /var/log/nginx
- name: sidecar-access
image: busybox
args: [/bin/sh, -c, 'tail -n+1 -f /var/log/nginx/access.log']
volumeMounts:
- name: logs
mountPath: /var/log/nginx
volumes:
- name: logs
emptyDir: {}

apiVersion: v1
kind: Pod
metadata:
name: adapter-container-demo
spec:
containers:
- name: main-container
image: busybox
command: ["/bin/sh"]
args: ["-c", "while true; do echo $(date -u)'# Log' >> /var/log/file.log; sleep 5;done"]
resources: {}
volumeMounts:
- name: var-logs
mountPath: /var/log
- name: adapter-container
image: bbachin1/adapter-node-server
imagePullPolicy: Always
resources: {}
ports:
- containerPort: 3080
volumeMounts:
- name: var-logs
mountPath: /var/log
dnsPolicy: Default
volumes:
- name: var-logs
emptyDir: {}
apiVersion: v1
kind: Pod
metadata:
name: ambassador-example
spec:
containers:
- name: redis-client
image: redis
- name: ambassador
image: malexer/twemproxy
env:
- name: REDIS_SERVERS
value: redis-st-0.redis-svc.default.svc.cluster.local:6379:1 redis-st-1.redis-svc.default.svc.cluster.local:6379:1
ports:
- containerPort: 6380

apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox:1.28
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox:1.28
command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]
- name: init-mydb
image: busybox:1.28
command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for mydb; sleep 2; done"]