【问题标题】:GKE Kubernetes Persistent VolumeGKE Kubernetes 持久卷
【发布时间】:2018-12-09 20:04:54
【问题描述】:

我尝试为我的 rethinkdb 服务器使用持久卷。但是我收到了这个错误:

Unable to mount volumes for pod "rethinkdb-server-deployment-6866f5b459-25fjb_default(efd90244-7d02-11e8-bffa-42010a8400b9)": timeout expired waiting for volumes to attach/mount for pod "default"/"rethinkdb-server-deployment-
Multi-Attach error for volume "pvc-f115c85e-7c42-11e8-bffa-42010a8400b9" Volume is already used by pod(s) rethinkdb-server-deployment-58f68c8464-4hn9x

我认为 Kubernetes 部署了一个新节点而没有删除旧节点,因此它无法在两者之间共享文件卷,因为我的 pvc 是 ReadWriteOnce。这个永久卷必须以自动方式创建,所以我不能使用永久磁盘,格式化它...

我的配置:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  namespace: default
  name: rethinkdb-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 30Gi



apiVersion: apps/v1beta1
kind: Deployment
metadata:
  namespace: default
  labels:
    db: rethinkdb
    role: admin
  name: rethinkdb-server-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rethinkdb-server
  template:
    metadata:
      name: rethinkdb-server-pod
      labels:
        app: rethinkdb-server
    spec:
      containers:
      - name: rethinkdb-server
        image: gcr.io/$PROJECT_ID/rethinkdb-server:$LAST_VERSION
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        ports:
        - containerPort: 8080
          name: admin-port
        - containerPort: 28015
          name: driver-port
        - containerPort: 29015
          name: cluster-port
        volumeMounts:
        - mountPath: /data/rethinkdb_data
          name: rethinkdb-storage
      volumes:
       - name: rethinkdb-storage
         persistentVolumeClaim:
          claimName: rethinkdb-pvc

你是如何管理这个的?

【问题讨论】:

    标签: kubernetes google-kubernetes-engine persistent-volumes


    【解决方案1】:

    我看到您已在 deployment 中添加了 PersistentVolumeClaim。我还看到您正在尝试扩展节点池。

    PersistentVolumeClaim 可用于部署,但前提是您不扩展 deployment。这就是出现该错误消息的原因。您看到的错误表明,在复制新 pod 时,该卷已被现有 pod 使用。

    因为您正在尝试扩展deployment,其他副本将尝试挂载并使用相同的卷。

    解决方案:将 PersistentVolumeClaim 部署在 statefulset 对象中,而不是 deployment。关于如何部署statefulset 的说明可以在in this article 中找到。使用statefulset,您将能够将 PersistentVolumeClaim 附加到 pod,然后扩展节点池。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-26
      相关资源
      最近更新 更多