Kubernetes:我可以将来自同一PV的不同子路径安装到同一容器的不同位置吗?

时间:2019-01-24 20:46:09

标签: kubernetes ceph persistent-volumes

我可以将来自同一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 PersistentVolume

它包含两个目录和一个文件

  • 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

这种使用持久性的方式是否错误?可能是多连接错误的原因吗?

1 个答案:

答案 0 :(得分:0)

看起来您正在尝试将相同的PVC附加到另一个node中。

  

访问模式   请求使用特定访问模式进行存储时,声明使用与卷相同的约定

在您看到的.yaml中,您已经设置了accessModes: ReadWriteOnce

  

PersistentVolume可以通过资源提供者支持的任何方式安装在主机上。如下表所示,提供商将具有不同的功能,并且每个PV的访问模式都将设置为该特定卷支持的特定模式。例如,NFS可以支持多个读/写客户端,但是特定的NFS PV可能以只读方式在服务器上导出。每个PV都有自己的一组访问模式,用于描述特定PV的功能。

     

访问方式为:

     
      
  • ReadWriteOnce –该卷可以通过单个节点以读写方式安装

  •   
  • ReadOnlyMany –该卷可以被许多节点只读装载

  •   
  • ReadWriteMany –该卷可以被许多节点读写安装

  •   

从Kubernetes关于Persistent Volumes的文档中,您可以了解到CephFS确实支持所有accessModes