

--link 옵션을 대체하는 개념 쿠버네티스의 매니페스트 파일은 YAML 포맷을 사용한다.
필수 항목은 다음 네 가지다:
pod-definition.yamlapiVersion: v1 # API 버전 (v1, apps/v1, apps/v1-beta 등)
kind: Pod # 리소스 종류 (Pod, Service, ReplicaSet, Deployment 등)
metadata: # 메타데이터 (name, labels 등)
name: myapp-pod
label:
app: myapp
type: server
spec: # Pod의 구체적 스펙 정의
containers: # 컨테이너는 배열 형태로 여러 개 정의 가능
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
※ 주석 처리된 예시처럼 backend-container 등을 추가해 여러 컨테이너를 정의할 수 있음.
kubectl create -f pod-definition.yaml
kubectl port-forward my-app-nginx 8080:80
RESULT
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80
Handling connection for 8080
→ 이렇게 설정하면 로컬에서 http://localhost:8080 으로 접근 가능
단일 컨테이너 Pod: 가장 일반적인 형태

다중 컨테이너 Pod (Sidecar 패턴)

localhost 사용 (동일 네트워크 네임스페이스 공유) | 상태 | 설명 | 관련 명령어 |
|---|---|---|
| Pending | Pod가 생성됐지만 스케줄링/이미지 Pull 중 | kubectl get pods |
| ContainerCreating | 컨테이너 생성 중 | kubectl get pods |
| Running | 컨테이너 정상 실행 중 | kubectl describe pod <name> kubectl logs <name> |
| Succeeded | 정상 종료 후 재시작 없음 | kubectl get pods |
| Failed | 실행 실패, 종료 코드 확인 가능 | kubectl describe pod <name> |
| CrashLoopBackOff | 반복 실패/재시작 | kubectl logs <name> |
| Terminating | Pod 삭제 중 상태 | kubectl delete pod <name> |
localhost로 통신 가능 Probe 활용
주요 명령어
kubectl describe pod <name> # 이벤트/로그/오류 확인
kubectl logs <name> # 로그 확인 (-c 옵션으로 컨테이너 지정)
Pod는 단독으로 쓰이지 않으며, 보통 아래 리소스들이 Pod를 관리한다.
ReplicaSet: Pod 복제본 개수 유지
Deployment: 롤링 업데이트/롤백 관리
DaemonSet: 각 노드마다 Pod 하나씩 실행
StatefulSet: 고정 ID와 스토리지가 필요한 Pod 관리
kubectl run nginx --image=nginx // Pod 바로 생성
kubectl apply -f pod.yaml // YAML 기반 생성/업데이트
kubectl get pods // 파드 확인
kubectl describe pod <name> // 이벤트 로그, 에러 원인
kubectl logs <name> // 다중 컨테이너일 경우 -c 필요
kubectl delete pod <name> // Pod 제거
kubectl run redis --image=redis --dry-run=client -o yaml > redis.yaml // YAML만 생성
kubectl edit pod <name> // 간단한 속성만 수정 가능