Drivrutiner för behållarlagringsgränssnitt i serien: När en nod stängs av kan blockvolymer som är anslutna till noden inte anslutas till en annan nod
摘要: När en nod stängs av (på grund av nodkrasch, nodavbrott, avstängningsscenario) kan de blockvolymer som är anslutna till noden inte anslutas till en annan nod.
症状
När en nod stängs av (på grund av nodkrasch, nodavbrott, avstängningsscenario) kan de blockvolymer som är anslutna till noden inte anslutas till en annan nod.
Problemet är specifikt för att endast blockera volymer.
Problemet uppstår inte för NFS-volymer.
Problemet påverkar följande drivrutiner:
- CSI-drivrutin för PowerFlex
- CSI-drivrutin för PowerMax
- CSI-drivrutin för PowerScale
- CSI-drivrutin för Unity
Det här problemet påverkar inte CSI-drivrutinen för PowerStore.
Problemet rapporteras i GitHub #282-steg
för att återskapa:
- Skapa en PVC1 och skapa POD1.
- Kontrollera noden där POD1 skapades och stäng av noden från vSphere.
- När noden inte är klar kan du försöka ta bort POD1 (den fastnar i avslutad status eftersom noden inte är redo.)
- Försök att skapa POD2 med samma PVC1. POD2 är i behållarskapandeläge med det här felet i beskrivningen av utdata.
Warning FailedAttachVolume 43s attachdetach-controller Multi-Attach error for volume "csivol-18eb3daee0" Volume is already used by pod(s) iscsipod1-p
Förväntat resultat: POD bör tas bort även när noden inte är klar.
Resultatet: POD fastnar i avslutad status på grund av att noden inte är klar.
Nedanstående utdata visar den ursprungliga podden avslutas och den nya podden fastnar i Container Creating:
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
Följande kommando visar att noden inte är redo:
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
Följande kommando visar att PVC fortfarande är bunden till PV:
kubectl get pvc -n NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE iscsipvc1-p Bound csivol-18eb3daee0 5Gi RWO powerstore-iscsi 10m
Följande kommando visar varningen:
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
原因
解决方案
- Tvinga bort den podd som kördes på den nod som slutade fungera.
kubectl delete po --force --grace-period=0
- Ta bort volymbilaga till den nod som slutade fungera.
kubectl delete volumeattachment
Volymen kan nu anslutas till den nya noden.
Lösning:
Lösningen uppdateras när en korrigering har släppts.