Simulieren und Diagnostizieren von Aktualisierungsfehlern
In diesem Schritt erfahren Sie, wie Sie potenzielle Fehler bei der Aktualisierung eines Deployments diagnostizieren können, indem Sie eine problematische Image-Aktualisierung simulieren und Kubernetes-Diagnosetools verwenden.
Navigieren Sie zunächst zum Projektverzeichnis:
cd ~/project/k8s-manifests
Erstellen Sie ein Deployment-Manifest mit einem ungültigen Image:
nano problematic-deployment.yaml
Fügen Sie den folgenden Inhalt hinzu:
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
Wenden Sie das problematische Deployment an:
kubectl apply -f problematic-deployment.yaml
Beispielausgabe:
deployment.apps/troubleshoot-app created
Überprüfen Sie den Status des Deployments:
kubectl rollout status deployment troubleshoot-app
Beispielausgabe:
Waiting for deployment "troubleshoot-app" to roll out...
Drücken Sie Ctrl+C
, um den Rollout-Status zu beenden.
Überprüfen Sie die Pod-Ereignisse und den Status:
kubectl get pods -l app=troubleshoot
Beispielausgabe:
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
Untersuchen Sie die Pod-Details und die Logs:
## 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
Sie werden den Pod-Status und die Logs sehen, die auf ein fehlgeschlagenes Image-Pull hinweisen.
Failed to pull image "nginx:non-existent-tag"
Beheben Sie das Problem, indem Sie das Image korrigieren:
nano problematic-deployment.yaml
Aktualisieren Sie das Image auf einen gültigen Tag:
image: nginx:1.24.0-alpine
Wenden Sie das korrigierte Deployment erneut an:
kubectl apply -f problematic-deployment.yaml
Überprüfen Sie erneut den Pod-Status:
kubectl get pods -l app=troubleshoot
Beispielausgabe:
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
Wichtige Punkte zur Diagnose von Fehlern:
- Verwenden Sie
kubectl describe
, um Deployment- und Pod-Ereignisse anzuzeigen.
- Überprüfen Sie den Pod-Status auf
ImagePullBackOff
oder andere Fehlerzustände.
- Untersuchen Sie die Pod-Logs für detaillierte Fehlerinformationen.
- Vergewissern Sie sich, dass das Image verfügbar ist und der Tag korrekt ist.