Fehlerbehebung — Kubernetes
Knoten im Zustand NotReady
Ursache: Ein oder mehrere Knoten antworten nicht mehr auf die Steuerungsebene. Dies kann auf unzureichende Ressourcen, ein Speicherproblem oder einen kubelet-Ausfall zurückzuführen sein.
Lösung:
- Prüfen Sie den Zustand der Knoten und ihre Bedingungen:
kubectl get nodes
kubectl describe node <node-name> - Konsultieren Sie die Events, um die Ursache zu identifizieren (DiskPressure, MemoryPressure, PIDPressure):
kubectl get events --sort-by='.lastTimestamp' - Prüfen Sie, ob der gewählte
instanceTypeausreichend Ressourcen für die bereitgestellten Workloads bietet. - Wenn das Problem bestehen bleibt, erhöhen Sie
maxReplicasder nodeGroup, um dem Cluster die Bereitstellung neuer gesunder Knoten zu ermöglichen.
Pods im Zustand Pending (unzureichende Ressourcen)
Ursache: Kein Knoten verfügt über genügend CPU oder Speicher, um den Pod zu planen. Der Kubernetes-Scheduler findet keine Platzierung.
Lösung:
-
Identifizieren Sie den Grund für den Pending-Zustand:
kubectl describe pod <pod-name>Suchen Sie nach der Meldung
FailedSchedulingin den Events. -
Prüfen Sie die verfügbaren Ressourcen auf den Knoten:
kubectl top nodes -
Wenn die Knoten ausgelastet sind, erhöhen Sie
maxReplicasIhrer nodeGroup:cluster.yamlspec:
nodeGroups:
workers:
minReplicas: 2
maxReplicas: 10 -
Wenn der Pod an einem PVC hängt, prüfen Sie, ob das PVC ordnungsgemäß bereitgestellt wurde:
kubectl get pvc
Kubeconfig abgelaufen oder ungültig
Ursache: Das Client-Zertifikat in der kubeconfig ist abgelaufen (Fehler x509: certificate has expired) oder die Anmeldedaten sind ungültig (Fehler Unauthorized).
Lösung:
-
Generieren Sie die kubeconfig aus dem Quell-Secret neu:
kubectl get tenantsecret <cluster-name>-admin-kubeconfig -o jsonpath='{.data.super-admin\.conf}' | base64 -d > kubeconfig.yaml -
Ersetzen Sie Ihre alte kubeconfig-Datei:
export KUBECONFIG=kubeconfig.yaml -
Prüfen Sie die Konnektivität:
kubectl cluster-info
Ingress gibt 404 zurück
Ursache: Die Ingress-Ressource ist falsch konfiguriert oder das Addon ingressNginx ist auf dem Cluster nicht aktiviert.
Lösung:
-
Prüfen Sie, ob das Addon
ingressNginxin der Cluster-Konfiguration aktiviert ist:cluster.yamlspec:
addons:
ingressNginx:
enabled: true -
Prüfen Sie, ob die
ingressClassNamein Ihrem Ingress korrekt angegeben ist:ingress.yamlapiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app
spec:
ingressClassName: nginx
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app-svc
port:
number: 80 -
Prüfen Sie, ob das Backend (Service + Pod) funktioniert:
kubectl get pods -l app=my-app
kubectl get svc my-app-svc -
Überprüfen Sie die Konfiguration von Host und Pfad in der Ingress-Regel.
PVC im Zustand Pending
Ursache: Die angeforderte storageClass existiert nicht oder die Speicherkapazität ist unzureichend.
Lösung:
-
Die auf Hikube verfügbaren storageClasses sind:
local,replicatedundreplicated-async. -
Stellen Sie sicher, dass der in Ihrem PVC verwendete Name einer existierenden storageClass entspricht:
pvc.yamlapiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-data
spec:
accessModes:
- ReadWriteOnce
storageClassName: replicated
resources:
requests:
storage: 10Gi -
Prüfen Sie die Events zum PVC:
kubectl describe pvc my-data -
Wenn die Kapazität nicht ausreicht, reduzieren Sie die angeforderte Größe oder kontaktieren Sie den Hikube-Support.