k8s pods 附加卷超时时无法重试
k8s pods not able to retry when attach volume timeout
有时我有一堆作业要启动,每个作业都挂载一个 pvc。由于我们的资源有限,一些 pods 不到一分钟就挂载失败。
Unable to mount volumes for pod "package-job-120348968617328640-5gv7s_vname(b059856a-ecfa-11ea-a226-fa163e205547)": timeout expired waiting for volumes to attach or mount for pod "vname"/"package-job-120348968617328640-5gv7s". list of unmounted volumes=[tmp]. list of unattached volumes=[log tmp].
而且它肯定会不断重试。但它永远不会成功(事件年龄就像 44s (x11 over 23m)
)。但是如果我删除这个 pod,这个作业会创建一个新的 pod 并且它会完成。
那么为什么会这样呢? pod 不应该自动重试挂载而不需要手动干预吗?
如果这无法避免,是否有一种解决方法可以在初始阶段自动删除 pods 超过 2 分钟?
结论
实际上是我的云提供商提供的附加脚本在某些节点卡住(由网络问题引起)。因此,如果其他人 运行 遇到这些问题,也许检查附加磁盘的存储插件是个好主意。
So why is this happening? Shouldn't pod retry mount automatically instead of needing manual intervention? And if this is not avoidable, is there a workaround that it will automatically delete pods in Init Phase more than 2 min?
这可能有多种原因。如果 kubectl describe pod <podname>
,您的 Pod 上是否有任何活动?并且你是否重复使用另一个 Pod 之前使用的 PVC?
我猜你使用的是 regional 集群,由多个数据中心(可用区)组成,你的 PVC 位于一个 AZ 中,但你的 Pod 被安排到 运行 在不同的可用区?在这种情况下,Pod 将永远无法挂载卷,因为它位于另一个 AZ。
我有同样的问题,即使卷连接到 pod 所在的同一节点 运行。
我 ssh 进入节点并重新启动 kubelet
然后它解决了问题。
有时我有一堆作业要启动,每个作业都挂载一个 pvc。由于我们的资源有限,一些 pods 不到一分钟就挂载失败。
Unable to mount volumes for pod "package-job-120348968617328640-5gv7s_vname(b059856a-ecfa-11ea-a226-fa163e205547)": timeout expired waiting for volumes to attach or mount for pod "vname"/"package-job-120348968617328640-5gv7s". list of unmounted volumes=[tmp]. list of unattached volumes=[log tmp].
而且它肯定会不断重试。但它永远不会成功(事件年龄就像 44s (x11 over 23m)
)。但是如果我删除这个 pod,这个作业会创建一个新的 pod 并且它会完成。
那么为什么会这样呢? pod 不应该自动重试挂载而不需要手动干预吗? 如果这无法避免,是否有一种解决方法可以在初始阶段自动删除 pods 超过 2 分钟?
结论
实际上是我的云提供商提供的附加脚本在某些节点卡住(由网络问题引起)。因此,如果其他人 运行 遇到这些问题,也许检查附加磁盘的存储插件是个好主意。
So why is this happening? Shouldn't pod retry mount automatically instead of needing manual intervention? And if this is not avoidable, is there a workaround that it will automatically delete pods in Init Phase more than 2 min?
这可能有多种原因。如果 kubectl describe pod <podname>
,您的 Pod 上是否有任何活动?并且你是否重复使用另一个 Pod 之前使用的 PVC?
我猜你使用的是 regional 集群,由多个数据中心(可用区)组成,你的 PVC 位于一个 AZ 中,但你的 Pod 被安排到 运行 在不同的可用区?在这种情况下,Pod 将永远无法挂载卷,因为它位于另一个 AZ。
我有同样的问题,即使卷连接到 pod 所在的同一节点 运行。
我 ssh 进入节点并重新启动 kubelet
然后它解决了问题。