我在公司的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”的多次附加错误已将卷专有地附加到一个节点,而不能附加到另一个节点
这是我的资源。
它包含两个目录和一个文件
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
这种使用持久性的方式是否错误?可能是多连接错误的原因吗?
答案 0 :(得分:0)
看起来您正在尝试将相同的PVC
附加到另一个node
中。
访问模式 请求使用特定访问模式进行存储时,声明使用与卷相同的约定
在您看到的.yaml
中,您已经设置了accessModes: ReadWriteOnce
。
PersistentVolume
可以通过资源提供者支持的任何方式安装在主机上。如下表所示,提供商将具有不同的功能,并且每个PV的访问模式都将设置为该特定卷支持的特定模式。例如,NFS可以支持多个读/写客户端,但是特定的NFS PV可能以只读方式在服务器上导出。每个PV都有自己的一组访问模式,用于描述特定PV的功能。访问方式为:
ReadWriteOnce –该卷可以通过单个节点以读写方式安装
ReadOnlyMany –该卷可以被许多节点只读装载
ReadWriteMany –该卷可以被许多节点读写安装
从Kubernetes关于Persistent Volumes
的文档中,您可以了解到CephFS确实支持所有accessModes