我正在尝试在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
部署窗格的日志在完成所有时间后都显示为:
--> 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
我一开始认为这可能与this issue有关,但唯一正在运行的pod是部署和尝试启动的pod,我已根据建议切换到Recreate
策略在那里,没有结果。
事情第一次部署并正常运行,但从那时起我无法成功部署。
任何人都可以对我在这里做错了吗?
更新#1:
作为一个额外的皱纹,有时当我部署它时需要花费很长时间才能为此启动部署pod(我实际上并不知道应该采取多长时间,但我得到一个警告,表明事情进展缓慢,而我目前的部署时间已经达到15分钟以上,而且没有站起来。)
在部署窗格的事件列表中,当我等待时,我看到Error syncing pod
和Pod sandbox changed, it will be killed and re-created.
各有多个实例。
每次都不会发生,我也没有看出模式。
不确定这是否相关,但似乎值得一提。
更新#2:
我今天早上再次尝试部署,在取消了一次遇到上述第一次更新中描述的问题的部署后,事情成功了。
据我所知,我没有做任何改动,所以我对这个问题是什么或者在这里感到困惑。我将进一步更新问题是否再次发生。
更新#3
经过一系列的进一步实验后,我似乎能够定期启动并运行我的播放器。我没有改变任何关于配置的内容,所以我认为这与测序有关,但即使是现在它也不是没有一些不规则性:
如果我开始部署,现有的运行pod会根据控制台无限期挂起terminating
状态,并保持这种状态直到它被硬删除(无需等待它正常关闭)。在此之前,它将继续产生上述错误(正如您所期望的那样)。
坦率地说,与我昨晚遇到的问题相比,这对我没有意义 - 当我之前收到这些错误时,我已经没有其他pod正在运行 - 但至少它是进步的以某种形式。
一旦我的服务器实际启动并运行(请求没有进入服务器,并且尝试升级到websocket连接时出现问题),我还有一些其他问题,但这几乎肯定是分开的,所以我会节省除非有人告诉我他们实际上是相关的,否则他们会提出另一个问题。
更新#4
OpenShift正在进行的问题列表没有改变,但现在似乎正在加载正确的内容,因此将其标记为已解决并转移到其他内容。
对于后人来说,从Rolling
更改为Recreate
是关键所在,即使这样,您也可能需要手动杀死旧的pod,如果它被卡住试图正常关闭。
答案 0 :(得分:0)
错误清楚地表明卷已经附加到其他正在运行的实例上。
VolumeInUse: vol-0fb5515c87914b844 is already attached to an instance status code: 400, request id: 54dd24cc-6ab0-434d-85c3-f0f063e73099
您必须通过以下任一方式进行清理:
1)从正在运行的实例中重新附加卷并重新附加。请注意数据,因为EBS卷的生命周期仅限于pod生命周期。
2)在为新构建创建另一个部署之前,请确保已杀死先前运行的容器实例(通过删除容器实例)。
答案 1 :(得分:0)
您不能将OpenShift Online中的持久卷与部署策略设置为“Rolling”的应用程序一起使用。编辑部署配置并确保将部署策略设置为“重新创建”。
您声明您使用了'替换'。如果通过编辑部署配置的JSON / YAML将其设置为该值,则会更改值更改,因为“replace”不是有效选项。