Стадия жизненного цикла модуля: Общедоступная версия

У модуля есть требования для установки

Как проверить работоспособность модуля?

Нужно проверить статус подов в неймспейсе d8-csi-s3. У всех подов статус должен быть Running или Completed, и поды должны быть запущены на каждой из нод.

kubectl -n d8-csi-s3 get pod -owide -w

Возможно ли поменять параметры подключения к S3 для уже созданных PV?

Нет, данные для подключения к хранилищу не могут быть изменены. Изменение StorageClass также не влияет на параметры подключения в уже существующих PV.

Почему размер примонтированной директории в поде отображается как 1 петабайт в df -h?

Это особенность монтирующего модуля geesefs. Значение Used также не меняется во время использования.

Что делать, если я превышу квоту bucket’a или пользователя во время использования модуля?

Превышение квоты – нештатная ситуация. Пользователи должны избегать этого. Дальнейшее поведение зависит от того, какое именно хранилище вы используете в качестве бэкенда. Возможные варианты:

  • Вы сможете копировать/редактировать файлы в подах, но изменения не отразятся на содержимом хранилища.
  • Под может выйти из строя и будет перезапущен.

Как мне получить информацию об используемом пространстве?

На сегодняшний день единственный способ — использовать интерфейс хранилища: либо веб-интерфейс, либо командную строку.

Могу ли я использовать несколько S3-хранилищ в одном модуле?

Да, это возможно. Для этого вам нужно будет создать еще один S3StorageClass и PVC. Затем назначьте PVC и смонтируйте том в поде следующим образом:

kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: csi-s3-test-nginx
  namespace: default
spec:
  containers:
   - name: csi-s3-test-nginx
     image: nginx
     volumeMounts:
       - mountPath: /usr/share/nginx/html/s3
         name: webroot
       - mountPath: /opt/homedir
         name: homedir
  volumes:
   - name: webroot
     persistentVolumeClaim:
       claimName: csi-s3-pvc # PVC name
       readOnly: false
   - name: homedir
     persistentVolumeClaim:
       claimName: csi-s3-pvc2 # PVC-2 name
       readOnly: false
EOF

Могу ли я использовать один и тот же bucket в нескольких подах?

Да. Укажите bucketName в S3StorageClass. В этом случае внутри bucket для каждого PV будут созданы новые папки.

Почему удалённый S3StorageClass не исчезает?

S3StorageClass удаляется только после своих PersistentVolume. Модуль сразу удаляет StorageClass, чтобы из него больше не создавались новые PV, но сохраняет Secret csi-s3-<имя S3StorageClass> в d8-csi-s3 и сам S3StorageClass, пока на этот Secret ссылается хотя бы один PV: без него PV нельзя смонтировать, а при удалении PV нельзя удалить его bucket. В этом состоянии у условия Ready причина Deleting, а в сообщении перечислены PV, удаления которых ждёт модуль:

kubectl get s3storageclasses <имя> -o jsonpath='{.status.conditions[?(@.type=="Ready")].message}'

Удалите PVC этих PV. S3StorageClass исчезнет после удаления последнего PV. PV с политикой Retain сам не удаляется: удалите объект PV вручную, когда он больше не нужен, — данные останутся в bucket.

Поиск неисправностей

Проблемы при создании PVC

Проверьте логи provisioner’a: kubectl -n d8-csi-s3 logs -l app=csi-provisioner-s3 -c csi-s3

Проблемы с созданием контейнеров

Убедитесь, что для MountPropagation не установлено значение false.

Проверьте логи s3-драйвера: kubectl -n d8-csi-s3 logs -l app=csi-s3 -c csi-s3