Řada ovladačů Container Storage Interface: Když dojde k výpadku uzlu, blokové svazky, které jsou připojeny k uzlu, nemohou být připojeny k jinému uzlu
摘要: Když dojde k výpadku uzlu (kvůli havárii uzlu, vypnutí uzlu nebo vypnutí), blokové svazky, které jsou připojeny k uzlu, nelze připojit k jinému uzlu.
症狀
Když dojde k výpadku uzlu (kvůli havárii uzlu, vypnutí uzlu nebo vypnutí), blokové svazky, které jsou připojeny k uzlu, nelze připojit k jinému uzlu.
Problém se týká pouze blokových svazků.
K problému nedochází u svazků NFS.
Problém se týká následujících ovladačů:
- Ovladač CSI pro PowerFlex
- Ovladač CSI pro úložiště PowerMax
- Ovladač CSI pro PowerScale
- Ovladač CSI pro Unity
Tento problém nemá vliv na ovladač CSI pro zařízení PowerStore.
Problém je hlášen na GitHub #282
kroky k reprodukování:
- Vytvořte PVC1 a vytvořte POD1.
- Zkontrolujte uzel, ve kterém byl vytvořen POD1, a vypněte uzel ze systému vSphere.
- Když uzel nebude připraven, zkuste odstranit POD1 (zasekne se v ukončovacím stavu, protože uzel není připraven).
- Pokuste se vytvořit POD2 pomocí stejného PVC1. POD2 je ve stavu vytváření kontejneru s touto chybou v popisu výstupu.
Warning FailedAttachVolume 43s attachdetach-controller Multi-Attach error for volume "csivol-18eb3daee0" Volume is already used by pod(s) iscsipod1-p
Očekávaný výsledek: POD by se měl odstranit i v případě, že uzel není připravený.
Výsledek: Uzel POD se zasekne v ukončovacím stavu z důvodu nepřipraveného uzlu.
Následující výstup ukazuje, že původní pod končí a nový pod se zablokuje při vytváření kontejnerů:
kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES iscsipod1-p 1/1 Terminating 0 9m43s <IP> <Node3> <none> <none> iscsipod2-p 0/1 ContainerCreating 0 55s <none> <Node2> <none> <none>
Následující příkaz ukazuje, že uzel není připraven:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
Node1 Ready control-plane,master 163d v1.23.0
Node2 Ready <none> 162d v1.23.0
Node3 NotReady <none> 162d v1.23.0
Následující příkaz ukazuje, že PVC je stále svázáno s PV:
kubectl get pvc -n <namespace> NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE iscsipvc1-p Bound csivol-18eb3daee0 5Gi RWO powerstore-iscsi 10m
Následující příkaz zobrazí upozornění:
kubectl describe pod -n <namespace>
...
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
原因
解析度
- Vynutit odstranění podu, který běžel na uzlu, který byl mimo provoz.
kubectl delete po <pod name> --force --grace-period=0
- Odstraňte přílohu svazku k uzlu, který spadl.
kubectl delete volumeattachment <volumeattachment>
Svazek lze nyní připojit k novému uzlu.
Řešení:
Toto řešení bude aktualizováno, jakmile bude vydána oprava.