Мне нужно смонтировать хранилище 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. Это не только позволит вам использовать неизменяемые секреты и предотвратить повторение подобных проблем, но также позволит вам разделить проблемы и развернуть ваш модуль в разных средах (например, разработка, производство), каждая из которых может иметь разные секреты.