我刚刚将我的应用程序移植到OpenShift Online 3(从版本2开始),现在我正在努力了解如何管理持久性,#34;共享"数据,每次构建后都不会擦除。
在阅读有关持久性卷声明的文档后,我使用Web仪表板在我的项目中创建了一个类型为RWO的新PVC。此时我尝试了解如何从每个pod中访问此存储,或者如果我需要执行某些操作来安装它,我最终会这样做:
$ oc volume dc/myapp --add --type=persistentVolumeClaim --claim-name=pvcname --mount-path=/usr/share/data
在此之后,看起来新配置已成功注册:
$ oc volume dc --all
deploymentconfigs/myapp
pvc/pvcname (allocated 1GiB) as volume-jh1jf
mounted at /usr/share/data
我还可以在新版本创建的pod中看到新的/usr/share/data
目录。
但是,进行此更改后,所有部署都会因此错误而失败:
无法附加音量" pvc-0b747c80-a687-11e7-9eb0-122631632f42"在节点" ip-172-31-48-134.ec2.internal" with:错误附加EBS卷" vol-0008c8127ff0f4617"实例" i-00195cc4e1d31f8ce":VolumeInUse:vol-0008c8127ff0f4617已附加到实例状态代码:400,请求ID:722f3797-f486-4739-ab4e-fe1826ae53af。该卷目前附加到实例" i-089e2a60e525f447c"
从中看起来我的最新更改具有将卷附加到特定实例的效果。但是,我如何将卷安装到我的pod中,以便它在每次构建和部署后都能存活下来?
答案 0 :(得分:1)
由于您使用的是EBS卷类型,因此必须将部署配置上的部署策略设置为Recreate
而不是Rolling
。这是因为EBS卷一次只能安装在群集中的单个节点上。这意味着您无法使用滚动部署,也无法将应用程序扩展到1个副本之上,因为这两个实例都会导致多个实例,并且无法保证它们将部署到同一节点。