kubernetes - 附加卷超时时,k8s pod 无法重试
问题描述
有时我要启动一堆工作,每个工作都安装一个 pvc。由于我们的资源有限,一些 pod 不到一分钟就无法挂载。
无法为 pod“package-job-120348968617328640-5gv7s_vname(b059856a-ecfa-11ea-a226-fa163e205547)”挂载卷:超时已过期等待卷为 pod“vname”/“package-job-120348968617328640-5gv7s 附加或挂载” ”。卸载卷列表=[tmp]。未附加卷列表=[log tmp]。
它肯定会不断重试。但它永远不会成功(事件时代就像44s (x11 over 23m)
)。但是如果我删除这个 pod,这个作业会创建一个新的 pod 并且它会完成。
那么为什么会这样呢?pod 不应该自动重试挂载而不需要手动干预吗?如果这无法避免,是否有一种解决方法可以自动删除 Init Phase 超过 2 分钟的 Pod?
结论
它实际上是我的云提供商在某些节点卡住(由网络问题引起)中提供的附加脚本。因此,如果其他人遇到这些问题,也许检查附加磁盘的存储插件是个好主意。
解决方案
那么为什么会这样呢?pod 不应该自动重试挂载而不需要手动干预吗?如果这无法避免,是否有一种解决方法可以自动删除 Init Phase 超过 2 分钟的 Pod?
这可能有多种原因。如果有的话,你在 Pod 上是否有任何事件kubectl describe pod <podname>
?你会重复使用另一个 Pod 之前使用的 PVC 吗?
我猜您使用的是由多个数据中心(可用区)组成的区域集群,并且您的 PVC 位于一个 AZ 中,但您的 Pod 计划在不同的 AZ 中运行?在这种情况下,Pod 将永远无法挂载该卷,因为它位于另一个 AZ。
推荐阅读
- javascript - 如何在 Vue.js 应用程序中共享“计算”方法
- windows - Selenium 在谷歌搜索,如果关键字存在则扫描页面
- ruby-on-rails - Ruby / Rails - 根据参数将数组分成两组并显示两者的最有效方法
- javascript - React/Redux 项目给我错误“编译失败。模块构建失败:错误:ENOENT:没有这样的文件或目录''
- python - 在 Pyspark 中,如何通过字典将列映射到其他值(字典的键是元组)
- ios - iOS 上的 WebRTC/Janus
- vba - 无法使用 Excel VBA 将文本分配给单元格
- php - 使用复选框创建 SQL 查询
- excel - 具有数据透视表数据的动态名称范围
- python - 错误:奇数长度的字符串(Python 3,制作流密码)