Openshift Can';t在应用程序之间共享EBS卷的持久卷声明
是否可以在两个应用程序(每个应用程序使用一个pod)之间共享一个持久卷声明(PVC) 我读到:但是没有完全得到答案 我试图在同一个项目中添加一个PHP应用程序和一个MySQL应用程序(带有持久存储)。删除了原始的永久卷(PV),并创建了一个具有读、写、多模式的新永久卷。我设置了MySQL数据库的根密码,数据库工作正常 然后,我使用具有不同子路径的相同持久卷声明向PHP应用程序添加存储。我发现我无法同时打开这两个应用程序。在我打开一个之后,当我尝试打开下一个时,它会在创建容器时卡住 openshift部署步骤的MySQL.yaml:Openshift Can';t在应用程序之间共享EBS卷的持久卷声明,openshift,kubernetes,Openshift,Kubernetes,是否可以在两个应用程序(每个应用程序使用一个pod)之间共享一个持久卷声明(PVC) 我读到:但是没有完全得到答案 我试图在同一个项目中添加一个PHP应用程序和一个MySQL应用程序(带有持久存储)。删除了原始的永久卷(PV),并创建了一个具有读、写、多模式的新永久卷。我设置了MySQL数据库的根密码,数据库工作正常 然后,我使用具有不同子路径的相同持久卷声明向PHP应用程序添加存储。我发现我无法同时打开这两个应用程序。在我打开一个之后,当我尝试打开下一个时,它会在创建容器时卡住 openshi
...
template:
metadata:
creationTimestamp: null
labels:
name: mysql
spec:
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: mysql
containers:
- name: mysql
...
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql/data
subPath: mysql/data
...
terminationMessagePath: /dev/termination-log
imagePullPolicy: IfNotPresent
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
部署步骤中的PHP.yaml:
template:
metadata:
creationTimestamp: null
labels:
app: wiki2
deploymentconfig: wiki2
spec:
volumes:
- name: volume-959bo <<----
persistentVolumeClaim:
claimName: mysql
containers:
- name: wiki2
...
volumeMounts:
- name: volume-959bo
mountPath: /opt/app-root/src/w/images
subPath: wiki/images
terminationMessagePath: /dev/termination-log
imagePullPolicy: Always
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext: {}
来自oc get事件的可疑条目
Warning FailedMount {controller-manager }
Failed to attach volume "pvc-________-____-____-____-____________"
on node "ip-172-__-__-___.xx-xxxx-x.compute.internal"
with:
Error attaching EBS volume "vol-000a00a00000000a0" to instance
"i-1111b1b11b1111111": VolumeInUse: vol-000a00a00000000a0 is
already attached to an instance
Warning FailedMount {kubelet ip-172-__-__-___.xx-xxxx-x.compute.internal}
Unable to mount volumes for pod "the pod for php app":
timeout expired waiting for volumes to attach/mount for pod "the pod".
list of unattached/unmounted volumes=
[volume-959bo default-token-xxxxx]
我试图:
要装载的剩余卷要么是default-token-xxxxx,要么是volume-959bo(PHP应用程序中的卷名),而不是mysql数据(mysql应用程序中的卷名)。因此错误似乎是由您使用的底层存储引起的,在本例中是
EBS
。OpenShift文档实际上明确指出,块存储就是这种情况,请参阅
我知道这将适用于NFS和Glusterfs存储,并且在许多使用这些存储类型的项目中都这样做了,但不幸的是,在您的情况下,它不受支持它们是否在同一名称空间中?你应该能够做到这一点。事件日志中有任何内容吗?它们肯定在相同的名称空间中。看起来正常,
oc get events
中的任何内容以及底层存储类型?警告为FailedMount。它说不能将同一卷连接到两个不同的实例。openshift网站现在只允许创建ebs存储…谢谢。我自己永远也不会明白这一点。
Warning FailedMount {controller-manager }
Failed to attach volume "pvc-________-____-____-____-____________"
on node "ip-172-__-__-___.xx-xxxx-x.compute.internal"
with:
Error attaching EBS volume "vol-000a00a00000000a0" to instance
"i-1111b1b11b1111111": VolumeInUse: vol-000a00a00000000a0 is
already attached to an instance
Warning FailedMount {kubelet ip-172-__-__-___.xx-xxxx-x.compute.internal}
Unable to mount volumes for pod "the pod for php app":
timeout expired waiting for volumes to attach/mount for pod "the pod".
list of unattached/unmounted volumes=
[volume-959bo default-token-xxxxx]