Dépannage — Kubernetes
Nœuds en état NotReady
Cause : un ou plusieurs nœuds ne répondent plus au plan de contrôle. Cela peut être lié à des ressources insuffisantes, un problème de stockage ou une défaillance du kubelet.
Solution :
- Vérifiez l'état des nœuds et leurs conditions :
kubectl get nodes
kubectl describe node <node-name> - Consultez les événements pour identifier la cause (DiskPressure, MemoryPressure, PIDPressure) :
kubectl get events --sort-by='.lastTimestamp' - Vérifiez que l'
instanceTypechoisi fournit suffisamment de ressources pour les workloads déployés. - Si le problème persiste, augmentez le
maxReplicasdu nodeGroup pour permettre au cluster de provisionner de nouveaux nœuds sains.
Pods en Pending (ressources insuffisantes)
Cause : aucun nœud ne dispose de suffisamment de CPU ou de mémoire pour planifier le pod. Le scheduler Kubernetes ne peut pas trouver de placement.
Solution :
-
Identifiez la raison du Pending :
kubectl describe pod <pod-name>Recherchez le message
FailedSchedulingdans les événements. -
Vérifiez les ressources disponibles sur les nœuds :
kubectl top nodes -
Si les nœuds sont saturés, augmentez le
maxReplicasde votre nodeGroup :cluster.yamlspec:
nodeGroups:
workers:
minReplicas: 2
maxReplicas: 10 -
Si le pod est bloqué sur un PVC, vérifiez que le PVC est bien provisionné :
kubectl get pvc
Kubeconfig expiré ou invalide
Cause : le certificat client dans le kubeconfig a expiré (erreur x509: certificate has expired) ou les credentials sont invalides (erreur Unauthorized).
Solution :
-
Regénérez le kubeconfig depuis le Secret source :
kubectl get tenantsecret <cluster-name>-admin-kubeconfig -o jsonpath='{.data.super-admin\.conf}' | base64 -d > kubeconfig.yaml -
Remplacez votre ancien fichier kubeconfig :
export KUBECONFIG=kubeconfig.yaml -
Vérifiez la connectivité :
kubectl cluster-info
Ingress retourne 404
Cause : la ressource Ingress est mal configurée ou l'addon ingressNginx n'est pas activé sur le cluster.
Solution :
-
Vérifiez que l'addon
ingressNginxest activé dans la configuration du cluster :cluster.yamlspec:
addons:
ingressNginx:
enabled: true -
Vérifiez que l'
ingressClassNameest bien spécifié dans votre Ingress :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 -
Vérifiez que le backend (Service + Pod) fonctionne :
kubectl get pods -l app=my-app
kubectl get svc my-app-svc -
Vérifiez la configuration du host et du path dans la règle Ingress.
PVC en état Pending
Cause : la storageClass demandée n'existe pas ou la capacité de stockage est insuffisante.
Solution :
-
Les storageClasses disponibles sur Hikube sont :
local,replicatedetreplicated-async. -
Assurez-vous que le nom utilisé dans votre PVC correspond à une storageClass existante :
pvc.yamlapiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-data
spec:
accessModes:
- ReadWriteOnce
storageClassName: replicated
resources:
requests:
storage: 10Gi -
Vérifiez les événements liés au PVC :
kubectl describe pvc my-data -
Si la capacité est insuffisante, réduisez la taille demandée ou contactez le support Hikube.