Container-Speicherschnittstellentreiberfamilie: Wenn ein Node ausfällt, können Block-Volumes, die mit dem Node verbunden sind, nicht mit einem anderen Node verbunden werden.

摘要: Wenn ein Node ausfällt (aufgrund eines Node-Absturzes, Node-Down- oder Ausschaltszenarios), können die Block-Volumes, die mit dem Node verbunden sind, nicht mit einem anderen Node verbunden werden. ...

本文适用于 本文不适用于 本文并非针对某种特定的产品。 本文并非包含所有产品版本。

症状

Wenn ein Node ausfällt (aufgrund eines Node-Absturzes, Node-Down- oder Ausschaltszenarios), können die Block-Volumes, die mit dem Node verbunden sind, nicht mit einem anderen Node verbunden werden. 

Das Problem ist nur für Block-Volumes spezifisch.

Das Problem tritt bei NFS-Volumes nicht auf.

Das Problem betrifft die folgenden Treiber:

  • CSI-Treiber für PowerFlex
  • CSI-Treiber für PowerMax
  • CSI-Treiber für PowerScale
  • CSI-Treiber für Unity

Dieses Problem hat keine Auswirkungen auf den CSI-Treiber für PowerStore.

Das Problem wird auf GitHub #282Dieser Hyperlink führt Sie zu einer Website außerhalb von Dell Technologies.

Steps to Reproduce gemeldet: 

  1. Erstellen Sie einen PVC1 und erstellen Sie POD1.
  2. Überprüfen Sie den Node, auf dem POD1 erstellt wurde, und schalten Sie den Node von vSphere aus.
  3. Wenn der Node nicht bereit ist, versuchen Sie, POD1 zu löschen (er bleibt im Beendigungsstatus hängen, da der Node nicht bereit ist.)
  4. Versuchen Sie, POD2 mit demselben PVC1 zu erstellen. POD2 befindet sich im Container-Erstellungsstatus mit diesem Fehler in der Beschreibungsausgabe.
Warning FailedAttachVolume 43s attachdetach-controller Multi-Attach error for volume "csivol-18eb3daee0" Volume is already used by pod(s) iscsipod1-p 

Erwartetes Ergebnis: POD sollte gelöscht werden, auch wenn der Node nicht bereit ist.

Ergebnis: POD bleibt im Beendigungsstatus hängen, weil der Node nicht bereit ist.

Die folgende Ausgabe zeigt, wie der ursprüngliche Pod beendet wird und der neue Pod in Container Creating hängen bleibt:

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              


Mit dem folgenden Befehl wird angezeigt, dass der Node nicht bereit ist:

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


Mit dem folgenden Befehl wird angezeigt, dass der PVC immer noch an das PV gebunden ist:

kubectl get pvc -n 

NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
iscsipvc1-p Bound csivol-18eb3daee0 5Gi RWO powerstore-iscsi 10m


Mit dem folgenden Befehl wird die Warnung angezeigt:

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

原因

Die Ursache ist, dass der Attacher-Sidecar nicht in der Lage ist, ControllerUnpubliziertesVolume() für den node zu senden, der ausgefallen ist. Siehe Informationen in GitHub #215 Dieser Hyperlink führt Sie zu einer Website außerhalb von Dell Technologies.

解决方案

Problemumgehung:
  1. Erzwingen Sie das Löschen des Pod, der auf dem ausgefallenen Node ausgeführt wurde.
kubectl delete po  --force --grace-period=0
  1. Löschen Sie den Volume-Anhang zu dem Node, der ausgefallen ist.
kubectl delete volumeattachment 

Das Volume kann jetzt mit dem neuen Node verbunden werden.

Lösung:
 Diese Lösung wird aktualisiert, sobald eine Korrektur veröffentlicht wurde.
文章属性
文章编号: 000200778
文章类型: Solution
上次修改时间: 07 7月 2023
版本:  8
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。