Trident: 无法分离附加到已删除节点的卷

创建于 2022-01-14  ·  4评论  ·  资料来源: NetApp/trident

描述错误

我们无法分离附加到 Trident 21.10.1 中已删除节点的卷。 在 Trident v21.07.2 中,这些卷将在一段时间后自动分离。 如果我理解正确,这种强制分离是由 AttachDetachController 在ReconcilerMaxWaitForUnmountDuration之后完成的。

似乎在此提交中引入了此更改。 此提交使 Trident 的ControllerUnpublishVolume检查节点的存在。 如果节点不存在,ControllerUnpublishVolume 现在会返回 NotFound 错误,因此当节点已被删除时,卷分离总是会失败。

在服务器故障时,卷分离可能会失败,我们别无选择,只能删除节点,因此希望自动分离附加到已删除节点的卷。

环境

  • 三叉戟版本:21.10.1
  • 使用的 Trident 安装标志: silenceAutosupport: true (Trident Operator)
  • 容器运行时:Docker 20.10.11
  • Kubernetes 版本:1.22.5
  • Kubernetes 编排器:Kubernetes
  • Kubernetes 启用的功能门:
  • 操作系统:Ubuntu 20.04.3 LTS
  • NetApp 后端类型:ONTAP AFF 9.7P13
  • 其他:

重现

  • 创建具有 ontap-san 卷的 StatefulSet
  • 删除kubectl delete node调度 Pod 的节点对象
  • StatefulSet 控制器在短时间内在另一个节点上重新创建一个新 Pod
  • 即使在 1 小时后,重新创建的 Pod 也无法附加到卷

    • 使用 Trident v21.07.2,Pod 将在 6 到 8 分钟后变为 Running

在 VolumeAttachment 中,可以发现如下错误。

rpc error: code = NotFound desc = node <NODE_NAME> was not found'

预期行为

Trident 自动分离附加到已删除节点的卷。

bug tracked

最有用的评论

@paalkr ,团队目前正在修复。 一旦合并,我们将使用提交链接更新此问题。

所有4条评论

我们在 AWS 上运行一个 100 多个节点的 Kubernetes 集群,该集群严重依赖 Spot 节点。 Spot 节点将在 AWS 上发出几分钟的警告,预计会经常发生。 即使我们在 SQS 模式下运行节点终止处理程序并通过自动节点耗尽来对发现终止通知作出反应,我们通常最终会在节点被删除之前分离过程没有完成。

在这种情况下,我们经常遇到与@tksm 描述的完全相同的问题。 这是一个严重的问题,因为在 Pod 移动到新节点后 PVC 无法附加,工作负载将陷入崩溃循环状态。 我希望这个问题可以修复。

任何 ETA 修复?

@paalkr ,团队目前正在修复。 一旦合并,我们将使用提交链接更新此问题。

太好了,非常感谢。

此页面是否有帮助?
0 / 5 - 0 等级