Famiglia di driver dell'interfaccia di storage container: Quando un nodo si interrompe, i volumi di blocchi collegati al nodo non possono essere collegati a un altro nodo
摘要: Quando un nodo si arresta inattivo (a causa di arresto anomalo del nodo, arresto del nodo, spegnimento), i volumi di blocco collegati al nodo non possono essere collegati a un altro nodo. ...
症状
Quando un nodo si arresta inattivo (a causa di arresto anomalo del nodo, arresto del nodo, spegnimento), i volumi di blocco collegati al nodo non possono essere collegati a un altro nodo.
Il problema è specifico solo per i volumi di block.
Il problema non si verifica per i volumi NFS.
Il problema riguarda i seguenti driver:
- Driver CSI per PowerFlex
- Driver CSI per PowerMax
- Driver CSI per PowerScale
- Driver CSI per Unity
Questo problema non interessa il driver CSI per PowerStore.
Il problema viene segnalato nei passaggi GitHub n. 282
per riprodurre:
- Creare un PVC1 e pod1.
- Controllare il nodo in cui è stato creato POD1 e spegnere il nodo da vSphere.
- Quando il nodo non è pronto, provare a eliminare POD1 (è bloccato in stato di terminazione poiché il nodo non è pronto).
- Provare a creare POD2 utilizzando lo stesso PVC1. POD2 è nello stato di creazione del contenitore con questo errore nella descrizione dell'output.
Warning FailedAttachVolume 43s attachdetach-controller Multi-Attach error for volume "csivol-18eb3daee0" Volume is already used by pod(s) iscsipod1-p
Risultato previsto: Pod dovrebbe essere eliminato anche quando il nodo non è pronto.
Risultato: POD è bloccato in stato di terminazione a causa di un nodo non pronto.
L'output seguente mostra l'interruzione del pod originale e il nuovo pod bloccato in Creazione contenitore:
kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES iscsipod1-p 1/1 Terminating 0 9m43s iscsipod2-p 0/1 ContainerCreating 0 55s
Il comando seguente mostra che il nodo non è pronto:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
Node1 Ready control-plane,master 163d v1.23.0
Node2 Ready 162d v1.23.0
Node3 NotReady 162d v1.23.0
Il comando seguente mostra che il PVC è ancora associato al PV:
kubectl get pvc -n NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE iscsipvc1-p Bound csivol-18eb3daee0 5Gi RWO powerstore-iscsi 10m
Il comando seguente mostra l'avviso:
kubectl describe pod -n
...
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 108s default-scheduler Successfully assigned default/iscsipod2-p to lglw3178
Warning FailedAttachVolume 108s attachdetach-controller Multi-Attach error for volume "csivol-18eb3daee0" Volume is already used by pod(s) iscsipod1-p
原因
解决方案
- Forzare l'eliminazione del pod in esecuzione sul nodo inattivo.
kubectl delete po --force --grace-period=0
- Eliminare l'allegato del volume al nodo che è andato inattivo.
kubectl delete volumeattachment
Il volume può ora essere collegato al nuovo nodo.
Risoluzione:
Questa soluzione verrà aggiornata quando verrà rilasciata una correzione.