5.8. 비정상적인 노드 종료 후 CSI 볼륨 분리
이 기능을 사용하면 노드가 비정상적으로 중단될 때 CSI(Container Storage Interface) 드라이버가 볼륨을 자동으로 분리할 수 있습니다.
5.8.1. 개요
kubelet의 노드 종료 관리자가 예정된 노드 종료 작업을 감지하면 정상 노드 종료가 발생합니다. 비정상적인 종료는 kubelet에서 노드 종료 작업을 감지하지 못하면 시스템 또는 하드웨어 오류로 인해 발생할 수 있습니다. 또한 shutdown 명령이 Linux에서 kubelet에서 사용하는 Inhibitor Locks 메커니즘을 트리거하지 않거나 예를 들어 shutdownGracePerioiod 및 shutdownGracePeriodCriticalPods 세부 정보가 올바르게 구성되지 않은 경우 kubelet에서 노드 종료 작업을 감지하지 못할 수 있습니다.
이 기능을 사용하면 비정상적인 노드 종료가 발생하면 노드에서 볼륨이 자동으로 분리될 수 있도록 노드에 out-of-service
테인트를 수동으로 추가할 수 있습니다.
5.8.2. 자동 볼륨 분리를 위해 서비스 외부 테인트 추가
사전 요구 사항
- cluster-admin 권한으로 클러스터에 액세스합니다.
프로세스
비정상적인 노드 종료 후 노드에서 볼륨을 자동으로 분리할 수 있도록 하려면 다음을 수행합니다.
- 노드가 비정상으로 감지되면 작업자 노드를 종료합니다.
다음 명령을 실행하고 상태를 확인하여 노드가 종료되었는지 확인합니다.
oc get node <node name> 1
- 1
- <node name> = 무중단 종료 노드의 이름
중요노드가 완전히 종료되지 않으면 노드에 테인트를 진행하지 마십시오. 노드가 계속 작동 중이고 테인트가 적용되면 파일 시스템 손상이 발생할 수 있습니다.
다음 명령을 실행하여 해당 노드 오브젝트를 테인트합니다.
oc adm taint node <node name> node.kubernetes.io/out-of-service=nodeshutdown:NoExecute 1
- 1
- <node name> = 무중단 종료 노드의 이름
테인트를 적용한 후 볼륨이 종료 노드에서 분리되므로 디스크를 다른 노드에 연결할 수 있습니다.
예제
결과 YAML 파일은 다음과 유사합니다.
spec: taints: - effect: NoExecute key: node.kubernetes.io/out-of-service value: nodeshutdown
- 노드를 재시작합니다.
- 테인트를 제거합니다.