3

我正在尝试在 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 正在进行的问题列表没有改变,但现在事情似乎正在正确加载,因此将其标记为已解决并继续处理其他事情。

对于后人来说,从Rollingto更改Recreate是这里的关键,即便如此,如果旧 pod 在试图优雅关闭时卡住,您可能需要手动杀死它。

4

2 回答 2

4

您不能将 OpenShift Online 中的持久卷与部署策略设置为“滚动”的应用程序一起使用。编辑部署配置并确保部署策略设置为“重新创建”。

您说您使用了“替换”。如果您通过编辑部署配置的 JSON/YAML 将其设置为该值,则值更改将被丢弃,因为“替换”不是有效选项。

于 2017-10-01T08:00:25.387 回答
0

该错误清楚地表明该卷已附加到某个其他正在运行的实例。

VolumeInUse: vol-0fb5515c87914b844 is already attached to an instance status code: 400, request id: 54dd24cc-6ab0-434d-85c3-f0f063e73099

您必须通过以下任一方式进行清理:

1)从正在运行的实例中取消附加卷并重新附加。小心数据,因为 EBS 卷的生命周期仅限于 pod 生命周期。

2)在为新构建创建另一个部署之前,确保先前运行的容器实例被杀死(通过删除容器实例)。

于 2017-10-01T06:40:24.047 回答