Kubernetes 库伯内特斯持久体积

Kubernetes 库伯内特斯持久体积,kubernetes,google-kubernetes-engine,persistent-volumes,Kubernetes,Google Kubernetes Engine,Persistent Volumes,我尝试为我的数据库服务器使用一个持久卷。但我有一个错误: 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-deploym

我尝试为我的数据库服务器使用一个持久卷。但我有一个错误:

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部署了一个新节点,但没有删除旧节点,因此无法在两者之间共享le卷,因为我的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

您是如何管理的?

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

PersistentVolumeClaim
将用于展开,但仅当您不缩放
展开时。这就是出现错误消息的原因。您看到的错误表明,在复制新pod时,现有pod已经在使用该卷

由于您正在尝试扩展
部署
,其他复制副本将尝试装载并使用相同的卷


解决方案:在
statefulset
对象中部署PersistentVolumeClaim,而不是
部署
。可以找到有关如何部署
状态集的说明。使用,您将能够将PersistentVolumeClaim连接到pod,然后缩放节点池

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

PersistentVolumeClaim
将用于展开,但仅当您不缩放
展开时。这就是出现错误消息的原因。您看到的错误表明,在复制新pod时,现有pod已经在使用该卷

由于您正在尝试扩展
部署
,其他复制副本将尝试装载并使用相同的卷

解决方案:在
statefulset
对象中部署PersistentVolumeClaim,而不是
部署
。可以找到有关如何部署
状态集的说明。使用,您将能够将PersistentVolumeClaim连接到pod,然后缩放节点池