업데이트 실패 시뮬레이션 및 진단
이 단계에서는 문제가 있는 이미지 업데이트를 시뮬레이션하고 Kubernetes 진단 도구를 사용하여 잠재적인 배포 업데이트 실패를 진단하는 방법을 배우게 됩니다.
먼저, 프로젝트 디렉토리로 이동합니다.
cd ~/project/k8s-manifests
잘못된 이미지를 사용하여 배포 매니페스트를 생성합니다.
nano problematic-deployment.yaml
다음 내용을 추가합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: troubleshoot-app
labels:
app: troubleshoot
spec:
replicas: 3
selector:
matchLabels:
app: troubleshoot
template:
metadata:
labels:
app: troubleshoot
spec:
containers:
- name: nginx
image: nginx:non-existent-tag
ports:
- containerPort: 80
문제가 있는 배포를 적용합니다.
kubectl apply -f problematic-deployment.yaml
예시 출력:
deployment.apps/troubleshoot-app created
배포 상태를 확인합니다.
kubectl rollout status deployment troubleshoot-app
예시 출력:
Waiting for deployment "troubleshoot-app" to roll out...
Ctrl+C를 눌러 롤아웃 상태를 종료합니다.
파드 이벤트 및 상태를 확인합니다.
kubectl get pods -l app=troubleshoot
예시 출력:
NAME READY STATUS RESTARTS AGE
troubleshoot-app-6b8986c555-gcjj9 0/1 ImagePullBackOff 0 2m56s
troubleshoot-app-6b8986c555-p29dp 0/1 ImagePullBackOff 0 2m56s
troubleshoot-app-6b8986c555-vpv5q 0/1 ImagePullBackOff 0 2m56s
파드 세부 정보 및 로그를 검사합니다.
## Replace 'xxx-yyy' with your actual pod name
POD_NAME=$(kubectl get pods -l app=troubleshoot -o jsonpath='{.items[0].metadata.name}')
kubectl describe pod $POD_NAME
kubectl logs $POD_NAME
이미지 풀 (image pull) 실패를 나타내는 파드 상태 및 로그를 보게 됩니다.
Failed to pull image "nginx:non-existent-tag"
이미지를 수정하여 문제를 해결합니다.
nano problematic-deployment.yaml
이미지를 유효한 태그로 업데이트합니다.
image: nginx:1.24.0-alpine
수정된 배포를 다시 적용합니다.
kubectl apply -f problematic-deployment.yaml
파드 상태를 다시 확인합니다.
kubectl get pods -l app=troubleshoot
예시 출력:
NAME READY STATUS RESTARTS AGE
troubleshoot-app-5dc9b58d57-bvqbr 1/1 Running 0 5s
troubleshoot-app-5dc9b58d57-tdksb 1/1 Running 0 8s
troubleshoot-app-5dc9b58d57-xdq5n 1/1 Running 0 6s
실패 진단에 대한 주요 사항:
kubectl describe를 사용하여 배포 및 파드 이벤트를 봅니다.
ImagePullBackOff 또는 기타 오류 상태에 대한 파드 상태를 확인합니다.
- 자세한 오류 정보를 위해 파드 로그를 검사합니다.
- 이미지 가용성 및 태그 정확성을 확인합니다.