Risoluzione dei problemi — Kubernetes
Nodi in stato NotReady
Causa: uno o più nodi non rispondono più al piano di controllo. Questo può essere legato a risorse insufficienti, un problema di archiviazione o un malfunzionamento del kubelet.
Soluzione:
- Verificate lo stato dei nodi e le loro condizioni:
kubectl get nodes
kubectl describe node <node-name> - Consultate gli eventi per identificare la causa (DiskPressure, MemoryPressure, PIDPressure):
kubectl get events --sort-by='.lastTimestamp' - Verificate che l'
instanceTypescelto fornisca risorse sufficienti per i workload distribuiti. - Se il problema persiste, aumentate il
maxReplicasdel nodeGroup per permettere al cluster di provisionare nuovi nodi sani.
Pod in Pending (risorse insufficienti)
Causa: nessun nodo dispone di CPU o memoria sufficienti per pianificare il pod. Lo scheduler Kubernetes non riesce a trovare un posizionamento.
Soluzione:
-
Identificate la ragione del Pending:
kubectl describe pod <pod-name>Cercate il messaggio
FailedSchedulingnegli eventi. -
Verificate le risorse disponibili sui nodi:
kubectl top nodes -
Se i nodi sono saturi, aumentate il
maxReplicasdel vostro nodeGroup:cluster.yamlspec:
nodeGroups:
workers:
minReplicas: 2
maxReplicas: 10 -
Se il pod e bloccato su un PVC, verificate che il PVC sia correttamente provisionato:
kubectl get pvc
Kubeconfig scaduto o non valido
Causa: il certificato client nel kubeconfig e scaduto (errore x509: certificate has expired) o le credenziali non sono valide (errore Unauthorized).
Soluzione:
-
Rigenerate il kubeconfig dal Secret sorgente:
kubectl get tenantsecret <cluster-name>-admin-kubeconfig -o jsonpath='{.data.super-admin\.conf}' | base64 -d > kubeconfig.yaml -
Sostituite il vostro vecchio file kubeconfig:
export KUBECONFIG=kubeconfig.yaml -
Verificate la connettività:
kubectl cluster-info
Ingress restituisce 404
Causa: la risorsa Ingress e mal configurata o l'addon ingressNginx non è attivato sul cluster.
Soluzione:
-
Verificate che l'addon
ingressNginxsia attivato nella configurazione del cluster:cluster.yamlspec:
addons:
ingressNginx:
enabled: true -
Verificate che l'
ingressClassNamesia specificato nel vostro 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 -
Verificate che il backend (Service + Pod) funzioni:
kubectl get pods -l app=my-app
kubectl get svc my-app-svc -
Verificate la configurazione dell'host e del path nella regola Ingress.
PVC in stato Pending
Causa: la storageClass richiesta non esiste o la capacità di archiviazione e insufficiente.
Soluzione:
-
Le storageClass disponibili su Hikube sono:
local,replicatedereplicated-async. -
Assicuratevi che il nome utilizzato nel vostro PVC corrisponda a una storageClass esistente:
pvc.yamlapiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-data
spec:
accessModes:
- ReadWriteOnce
storageClassName: replicated
resources:
requests:
storage: 10Gi -
Verificate gli eventi legati al PVC:
kubectl describe pvc my-data -
Se la capacità e insufficiente, riducete la dimensione richiesta o contattate il supporto Hikube.