ГКЕ Кубернетес Упорный Том - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь использовать постоянный том для своего сервера 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

Как вам это удается?

1 Ответ

0 голосов
/ 13 июля 2018

Я вижу, что вы добавили PersistentVolumeClaim в deployment. Я также вижу, что вы пытаетесь масштабировать пул узлов.

A PersistentVolumeClaim будет работать при развертывании, но только если вы не масштабируете deployment. Вот почему появилось это сообщение об ошибке. Ошибка, которую вы видите, говорит о том, что этот том уже используется существующим модулем при репликации нового модуля.

Поскольку вы пытаетесь масштабировать deployment, другие реплики будут пытаться смонтировать и использовать тот же том.

Решение. Разверните PersistentVolumeClaim в объекте statefulset, а не deployment. Инструкции по развертыванию statefulset можно найти в этой статье . С помощью statefulset вы сможете присоединить PersistentVolumeClaim к модулю, а затем масштабировать пул узлов.

...