Назад | Перейти на главную страницу

Не удается подключить хранилище CIFS к кластеру k8s

Мне нужно смонтировать хранилище CIFS, пытаясь использовать flexvolume, fstab / cifs, но я понятия не имею, что делаю не так.

Использование microk8s v1.18

root@master:~/yamls# cat pod.yaml 
apiVersion: v1
kind: Secret
metadata:
  name: cifs-secret
  namespace: default
type: fstab/cifs
data:
  username: 'xxxxxxxxxxx='
  password: 'xxxxxxxxxxxxxxxxxxxxxx=='
---
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - name: busybox
    image: busybox
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: test
      mountPath: /data
  volumes:
  - name: test
    flexVolume:
      driver: "fstab/cifs"
      fsType: "cifs"
      secretRef:
        name: "cifs-secret"
      options:
        networkPath: "//srv/storage"
        mountOptions: "dir_mode=0755,file_mode=0644,noperm"

Но

root@master:~/yamls# kubectl apply -f pod.yaml 
pod/busybox configured
The Secret "cifs-secret" is invalid: type: Invalid value: "fstab/cifs": field is immutable

Об изменении типа секрета на Opaque Я понял это

Events:
  Type     Reason       Age                   From                                      Message
  ----     ------       ----                  ----                                      -------
  Normal   Scheduled    <unknown>             default-scheduler                         Successfully assigned default/busybox to spb-airsys-services.spb.rpkb.ru
  Warning  FailedMount  17m (x23 over 48m)    kubelet, master  MountVolume.SetUp failed for volume "test" : Couldn't get secret default/cifs-secret err: Cannot get secret of type fstab/cifs

Что мне нужно использовать с драйвером CIFS в секрете? Почему это так сложно? Это изменение API или что-то еще? Почему версия API меняется от версии к версии, это придумано для обеспечения совместимости версий?

И что вы можете предложить в будущем для монтирования NFS? Более того, какие методы вы используете для создания снимков монтирования (или любой другой системы резервного копирования)?

Если секрет помечен как неизменный при создании, его нельзя изменить; его можно только удалить и воссоздать. Сначала вам нужно удалить старый неизменный секрет.

kubectl delete secret cifs-secret

Если вы намереваетесь изменить секрет, не помечайте его как неизменяемый. Вы, кажется, не сделали этого в этом YAML, но кажется, что вы сделали это раньше.

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

Вы должны отделить создание секрета от создания пода и использовать для этого разные файлы YAML. Это не только позволит вам использовать неизменяемые секреты и предотвратить повторение подобных проблем, но также позволит вам разделить проблемы и развернуть ваш модуль в разных средах (например, разработка, производство), каждая из которых может иметь разные секреты.