我正在尝试在 OpenShift Online Next Gen 中使用常规 EBS 持久存储卷,并在尝试部署时收到以下错误:
Unable to mount volumes for pod "production-5-vpxpw_instanttabletop(d784f054-a66b-11e7-a41e-0ab8769191d3)": timeout expired waiting for volumes to attach/mount for pod "instanttabletop"/"production-5-vpxpw". list of unattached/unmounted volumes=[volume-mondv]
随后(一段时间后)出现以下多个实例:
Failed to attach volume "pvc-702876a2-a663-11e7-8348-0a69cdf75e6f" on node "ip-172-31-61-152.us-west-2.compute.internal" with: Error attaching EBS volume "vol-0fb5515c87914b844" to instance "i-08d3313801027fbc3": VolumeInUse: vol-0fb5515c87914b844 is already attached to an instance status code: 400, request id: 54dd24cc-6ab0-434d-85c3-f0f063e73099
部署 pod 的日志在所有超时后如下所示:
--> Scaling production-5 to 1
--> Waiting up to 10m0s for pods in rc production-5 to become ready
W1001 05:53:28.496345 1 reflector.go:323] github.com/openshift/origin/pkg/deploy/strategy/support/lifecycle.go:509: watch of *api.Pod ended with: too old resource version: 1455045195 (1455062250)
error: update acceptor rejected production-5: pods for rc "production-5" took longer than 600 seconds to become ready
起初我认为这可能与这个问题有关,但唯一正在运行的 pod 是部署和试图启动的 pod,我已经切换到Recreate
那里建议的策略,但没有结果。
事情确实在第一次部署并正常运行,但从那以后我一直无法让它成功部署。
谁能解释一下我在这里做错了什么?
更新#1:
作为一个额外的皱纹,有时当我部署时,似乎需要很长时间才能为此启动部署 pod(我实际上不知道应该需要多长时间,但我收到一个警告,表明事情进展缓慢,并且到目前为止,我目前的部署时间为 15 分钟以上,但还没有站起来)。
在部署 pod 的事件列表中,我看到了多个实例,Error syncing pod
并且Pod sandbox changed, it will be killed and re-created.
在我等待的时候,什么都没碰。
不是每次都发生,而且我还没有辨别出规律。
不确定这是否相关,但似乎值得一提。
更新#2:
今天早上我再次尝试部署,在取消了一个遇到我上面第一次更新中描述的问题的部署后,事情成功了。
据我所知,我没有进行任何更改,所以我对问题所在或在这里感到困惑。我将进一步更新问题是否再次出现。
更新#3
经过一系列进一步的实验,我现在似乎能够让我的 pod 正常运行。我没有更改任何有关配置的内容,因此我认为这与排序有关,但即使现在也并非没有一些不规则之处:
如果我开始部署,现有的正在运行的 podterminating
会根据控制台无限期地挂起,并且会一直保持这种状态,直到它被硬删除(无需等待它优雅地关闭)。在此之前,它将继续产生上述错误(如您所料)。
坦率地说,这对我来说没有意义,与我昨晚遇到的问题相比——当我之前遇到这些错误时,我没有运行其他 pod——但至少它以某种形式取得了进展。
一旦我的服务器实际启动并运行,我遇到了一些其他问题(请求未发送到服务器,以及尝试升级到 websocket 连接的问题),但这些几乎肯定是分开的,所以我将它们保存到另一个除非有人告诉我他们实际上是相关的。
更新#4
OpenShift 正在进行的问题列表没有改变,但现在事情似乎正在正确加载,因此将其标记为已解决并继续处理其他事情。
对于后人来说,从Rolling
to更改Recreate
是这里的关键,即便如此,如果旧 pod 在试图优雅关闭时卡住,您可能需要手动杀死它。