Řada ovladačů rozhraní kontejnerových úložišť: Když uzel přejde dolů, blokové svazky připojené k uzlu nelze připojit k jinému uzlu
摘要: Když dojde k výpadku uzlu (v důsledku selhání uzlu, nefunkčního uzlu, vypnutí), blokové svazky připojené k uzlu nelze připojit k jinému uzlu.
症状
Když dojde k výpadku uzlu (v důsledku selhání uzlu, nefunkčního uzlu, vypnutí), blokové svazky připojené k uzlu nelze připojit k jinému uzlu.
Tento problém se týká pouze blokových svazků.
U svazků NFS k problému nedochází.
Problém se týká následujících ovladačů:
- Ovladač CSI pro powerflex
- Ovladač CSI pro PowerMax
- Ovladač CSI pro PowerScale
- Ovladač CSI pro Unity
Tento problém nemá vliv na ovladač CSI zařízení PowerStore.
Problém je hlášen na GitHubu #282
Steps to Reproduce:
- Vytvořte pvc1 a vytvořte pod1.
- Zkontrolujte uzel, kde byl vytvořen pod1, a vypněte uzel ze systému vSphere.
- Pokud uzel není připraven, zkuste odstranit pod1 (zablokuje se ve stavu ukončení, protože uzel není připraven.)
- Zkuste 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 když uzel není připraven.
Výsledek: Pod se zasekne ve stavu ukončení, protože uzel není připraven.
Níže uvedené výstupy zobrazují ukončení původního modulu pod a nový modul zamrzne v vytváření kontejneru:
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
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 162d v1.23.0
Node3 NotReady 162d v1.23.0
Následující příkaz ukazuje, že pvc je stále vázán na PV:
kubectl get pvc -n NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE iscsipvc1-p Bound csivol-18eb3daee0 5Gi RWO powerstore-iscsi 10m
Následující příkaz zobrazí varování:
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
原因
解决方案
- Vynuťte odstranění modulu spuštěného na uzlu, který se spustil.
kubectl delete po --force --grace-period=0
- Odstraňte přílohu svazku s uzlem, který se spustil.
kubectl delete volumeattachment
Svazek lze nyní připojit k novému uzlu.
Řešení:
Toto řešení bude aktualizováno po vydání opravy.