Том уже привязан исключительно к одному узлу и не может быть присоединен к другому - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть довольно простой стручок Kubernetes.Я хочу набор с состоянием и хочу следующий процесс:

  1. Я хочу загрузить initcontainer и распаковать архив из s3 в том, подключенный к initcontainer
  2. Я хочу смонтироватьэтот том для моего основного контейнера, который будет использоваться

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: app
  namespace: test
  labels:
    name: app
spec:
  serviceName: app
  replicas: 1
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      initContainers:
      - name: preparing
        image: alpine:3.8
        imagePullPolicy: IfNotPresent
        command:
          - "sh"
          - "-c"
          - |
            echo "Downloading data"
            wget https://s3.amazonaws.com/.........
            tar -xvzf xxxx-........ -C /root/
        volumeMounts:
        - name: node-volume
          mountPath: /root/data/

      containers:
      - name: main-container
        image: ecr.us-west-2.amazonaws.com/image/:latest
        imagePullPolicy: Always

        volumeMounts:
        - name: node-volume
          mountPath: /root/data/

  volumeClaimTemplates:
  - metadata:
      name: node-volume
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: gp2-b
      resources:
        requests:
          storage: 80Gi

Я продолжаю получать следующую ошибку:

Сначала я запускаю это, и я вижулоги моего архива, загружаемого initcontainer.Примерно на полпути он завершается и выдает следующую ошибку:

Multi-Attach error for volume "pvc-faedc8" Volume is 
already exclusively attached to one node and can't be 
attached to another

1 Ответ

0 голосов
/ 26 февраля 2019

Похоже, у вас есть свисающий PVC и / или PV , который подключен к одному из ваших узлов.Вы можете зайти в узел по ssh и запустить df или mount для проверки.

Если вы посмотрите на this , то PVCs в StatefulSet всегда отображаются на их имена pod, поэтомуВполне возможно, что у вас все еще есть подвесной модуль (?)

Вы можете попробовать удалить PVC и соответствующий PV:

$ kubectl -n test-node delete pvc pvc-faedc8
$ kubectl -n test-node delete pv <pv-name>
...