【发布时间】:2019-01-24 20:46:08
【问题描述】:
我可以将来自同一个 PV 的不同子路径挂载到同一个容器的不同位置吗?
我在公司的 Kubernetes 集群上运行了几个 wordpress 实例。每个实例都有自己的持久化卷和容器。我设置的唯一特点是,我将 PV 的多个路径安装到容器的多个路径上。
自几周前我们将 Kubernetes 升级到当前版本以来,我所有的容器都运行良好。从那以后,地狱开始了。
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:38:32Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:25:46Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
当重新启动一个 pod 时,如果它被安排在不同的节点上运行,它会卡在 PodInitializing 上并显示以下事件消息
卷“pvc-ac6b35f3-7716-11e8-adda-b60483de6a40”的多附加错误卷已独占附加到一个节点,无法附加到另一个节点
这是我的资源。
一个 Ceph RBD 持久卷
它包含两个目录和一个文件
-
html/: php 文件目录 -
logs/: 有日志文件的目录 -
container-data.txt: 包含一些信息的文本文件
定义为:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rbd-wordpress-mysite
labels:
app: wordpress
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
我的豆荚
kind: Deployment
apiVersion: apps/v1beta1
metadata:
name: wordpress-mysite
labels:
app: wordpress
namespace: unibz
spec:
template:
metadata:
name: wordpress-mysite
labels:
app: wordpress
namespace: unibz
spec:
containers:
- name: wordpress-mysite
image: myimage
volumeMounts:
- mountPath: "/root/container-data.txt"
name: wordpress-data
subPath: container-data.txt
- mountPath: "/var/www/html"
name: wordpress-data
subPath: html
- mountPath: "/var/log/apache2"
name: wordpress-data
subPath: logs
ports:
- containerPort: 80
name: wordpress-http
volumes:
- name: wordpress-data
persistentVolumeClaim:
claimName: rbd-wordpress-mysite
- name: wordpress-conf
configMap:
name: wordpress-conf
这种使用持久性的方式是错误的吗?会不会是 Multi-Attach 错误的原因?
【问题讨论】:
标签: kubernetes ceph persistent-volumes