5.8. 在非正常节点关闭后分离 CSI 卷
此功能允许容器存储接口 (CSI) 驱动程序在节点非正常关闭时自动分离卷。
5.8.1. 概述
当 kubelet 的节点关闭管理器检测到后续的节点关闭操作时,会出现一个安全的节点关闭。当 kubelet 不会检测到节点关闭操作时,会发生非正常关闭操作,这可能会因为系统或硬件故障而发生这种情况。另外,当 shutdown 命令没有触发 kubelet on Linux 使用的 Inhibitor Locks 机制时,kubelet 可能无法检测到节点关闭操作,例如,如果为该节点没有正确配置 shutdownGracePeriod 和 shutdownGracePeriodCriticalPods 详情。
通过此功能,当发生非正常节点关闭时,您可以手动在节点上添加 out-of-service
污点,以允许卷自动从节点分离。
5.8.2. 手动为自动卷分离添加 out-of-service 污点
先决条件
- 使用 cluster-admin 权限访问集群。
流程
允许卷在非正常节点关闭后自动从节点分离:
- 节点检测到不健康后,关闭 worker 节点。
运行以下命令检查状态,确保节点已关闭:
oc get node <node name> 1
- 1
- <node name> = 非正常关闭节点的名称
重要如果节点没有完全关闭,请不要继续污点该节点。如果节点仍处于 up 状态并且应用了污点,则可能会出现文件系统崩溃。
运行以下命令来污点对应的节点对象:
oc adm taint node <node name> node.kubernetes.io/out-of-service=nodeshutdown:NoExecute 1
- 1
- <node name> = 非正常关闭节点的名称
应用污点后,卷将从关闭节点分离,允许将其磁盘附加到其他节点。
Example
生成的 YAML 文件类似如下:
spec: taints: - effect: NoExecute key: node.kubernetes.io/out-of-service value: nodeshutdown
- 重启该节点。
- 删除污点。