컨테이너 스토리지 인터페이스 드라이버 제품군: 노드가 다운되면 노드에 연결된 블록 볼륨을 다른 노드에 연결할 수 없습니다.

摘要: 노드 충돌, 노드 다운, 전원 끄기 시나리오로 인해 노드가 다운되면 노드에 연결된 블록 볼륨을 다른 노드에 연결할 수 없습니다.

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

症状

노드 충돌, 노드 다운, 전원 끄기 시나리오로 인해 노드가 다운되면 노드에 연결된 블록 볼륨을 다른 노드에 연결할 수 없습니다. 

이 문제는 블록 볼륨에만 적용됩니다.

이 문제는 NFS 볼륨에 대해 표시되지 않습니다.

이 문제는 다음과 같은 요인에 영향을 미칩니다.

  • PowerFlex용 CSI 드라이버
  • PowerMax용 CSI 드라이버
  • PowerScale용 CSI 드라이버
  • Unity용 CSI 드라이버

이 문제는 PowerStore용 CSI 드라이버에 영향을 주지 않습니다.

문제는 GitHub #282이 하이퍼링크는 Dell Technologies 외부의 웹사이트로 연결됩니다.

재현 단계에 보고됩니다. 

  1. PVC1을 생성하고 POD1을 생성합니다.
  2. POD1이 생성된 노드를 확인하고 vSphere에서 노드의 전원을 끕니다.
  3. 노드가 준비되지 않은 경우 POD1을 삭제해 보십시오(노드가 준비되지 않았기 때문에 종료 상태가 중단됨).
  4. 동일한 PVC1을 사용하여 POD2를 생성해 보십시오. POD2는 컨테이너 생성 상태에 있으며 이 오류는 설명 출력에 있습니다.
Warning FailedAttachVolume 43s attachdetach-controller Multi-Attach error for volume "csivol-18eb3daee0" Volume is already used by pod(s) iscsipod1-p 

예상 결과: 노드가 준비되지 않은 경우에도 POD가 삭제됩니다.

결과: POD가 준비되지 않은 노드로 인해 종료 상태가 중단되었습니다.

아래 출력은 컨테이너 생성에서 원래 포드가 종료되고 새 포드가 중단된 것을 보여줍니다.

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              


다음 명령을 실행하면 노드가 준비되지 않음이 표시됩니다.

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


다음 명령은 PVC가 여전히 PV에 바인딩되어 있음을 보여줍니다.

kubectl get pvc -n 

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


다음 명령을 실행하면 경고가 표시됩니다.

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

原因

근본 원인은 연결기 사이드카가 다운된 노드에 대해 ControllerUnpublishVolume()을 보낼 수 없기 때문에 발생합니다. GitHub #215에 포함된 정보 보기 이 하이퍼링크는 Dell Technologies 외부의 웹사이트로 연결됩니다.

解决方案

해결 방법:
  1. 중단된 노드에서 실행 중인 포드를 강제로 삭제합니다.
kubectl delete po  --force --grace-period=0
  1. 다운된 노드에 대한 볼륨 첨부 파일을 삭제합니다.
kubectl delete volumeattachment 

이제 볼륨을 새 노드에 연결할 수 있습니다.

해결 방법:
 수정 사항이 릴리스되면 이 솔루션이 업데이트됩니다.
文章属性
文章编号: 000200778
文章类型: Solution
上次修改时间: 07 7月 2023
版本:  8
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。