本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

这是尚未发布的文档。 SUSE® Storage 1.12 (Dev).

节点故障管理

Kubernetes 节点故障时的预期

本节旨在告知用户节点故障期间发生的情况以及恢复期间的预期。

一分钟 后,kubectl get nodes 将对故障节点报告 NotReady.

大约在 五分钟 后,NotReady 节点上所有 pod 的状态将变为 UnknownNodeLost

StatefulSets 具有稳定的身份,因此 Kubernetes 不会强制删除用户的 pod。请参阅 官方 Kubernetes 文档,了解如何强制删除 StatefulSet

Deployments 没有稳定的身份,但对于读写一次(Read-Write-Once, RWO)类型的存储,由于它不能同时附加到两个节点,因此 Kubernetes 创建的新 pod 将无法启动,因为 RWO 卷仍附加在丢失节点的旧 pod 上。

在这两种情况下,Kubernetes 将自动驱逐丢失节点上的 pod(为 pod 设置删除时间戳),然后尝试 使用旧卷重新创建一个新 pod。因为被驱逐的 pod 卡在 Terminating 状态,附加的卷无法释放/重用,如果没有管理员或存储软件的干预,新 pod 将卡在 ContainerCreating 状态。

节点故障时 Longhorn Pod 删除策略

Longhorn 提供一个选项,帮助用户在故障节点上自动强制删除 StatefulSet/Deployment 的终止 pod。强制删除后,Kubernetes 将分离 Longhorn 卷,并在新节点上启动替换 pod。

您可以在 Longhorn UI 的 设置 选项卡中找到有关设置选项的更多详细信息,或在 Pod Deletion Policy When Node is Down 中查看 设置参考

Kubernetes 节点恢复时的预期

如果节点在故障后 5 - 6 分钟内恢复在线,Kubernetes 将重新启动 pod,卸载并重新挂载卷,而无需重新附加卷和清理 VolumeAttachment。

由于节点故障后卷引擎会停止工作,因此这种直接重新挂载将无法工作,因为设备在节点上不再存在。

在这种情况下,Longhorn 将分离并重新附加卷,以恢复卷引擎,以便 pod 可以安全地重新挂载/重用卷。

如果节点在故障后 5 - 6 分钟内未恢复在线,Kubernetes 将根据 pod 驱逐机制尝试删除所有不可达的 pod,这些 pod 将处于 Terminating 状态。有关详细信息,请参见 pod 驱逐超时

如果失败的节点稍后恢复,Kubernetes 将重新启动那些终止的 pod,分离卷,等待旧的 VolumeAttachment 清理,并重新使用(重新附加和重新挂载)这些卷。通常这些步骤可能需要 1 到 7 分钟。

在这种情况下,分离和重新附加操作已经包含在 Kubernetes 的恢复程序中。因此不需要额外的操作,Longhorn 卷将在上述步骤后可用。

对于所有上述恢复场景,Longhorn 将与 Kubernetes 协同自动处理这些步骤。