Симуляция и диагностика сбоев обновления
На этом шаге вы узнаете, как диагностировать возможные сбои при обновлении развертывания, симулируя проблемное обновление образа и используя инструменты диагностики 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
Изучите детали и логи пода:
## Замените 'xxx-yyy' на фактическое имя пода
POD_NAME=$(kubectl get pods -l app=troubleshoot -o jsonpath='{.items[0].metadata.name}')
kubectl describe pod $POD_NAME
kubectl logs $POD_NAME
Вы увидите статус и логи пода, указывающие на сбой при загрузке образа.
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
или других состояний ошибки.
- Изучите логи подов для получения подробной информации об ошибке.
- Проверьте доступность образа и правильность тега.