У нас есть образ докера, который обрабатывает некоторые файлы на общем ресурсе samba.
Для этого мы создали общий ресурс cifs, который монтируется в /mnt/dfs, и доступ к файлам в контейнере можно получить с помощью:
docker run -v /mnt/dfs/project1:/workspace image
Теперь, что меня попросили сделать, это загрузить контейнер в k8s и получить доступ к общему ресурсу cifs из модуля, можно использовать драйвер тома cifs usiong FlexVolume. Вот и всплывают некоторые вопросы.
Я установил это репо как набор демонов
https://k8scifsvol.juliohm.com.br/
и это работает.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: cifs-volumedriver-installer
spec:
selector:
matchLabels:
app: cifs-volumedriver-installer
template:
metadata:
name: cifs-volumedriver-installer
labels:
app: cifs-volumedriver-installer
spec:
containers:
- image: juliohm/kubernetes-cifs-volumedriver-installer:2.4
name: flex-deploy
imagePullPolicy: Always
securityContext:
privileged: true
volumeMounts:
- mountPath: /flexmnt
name: flexvolume-mount
volumes:
- name: flexvolume-mount
hostPath:
path: /usr/libexec/kubernetes/kubelet-plugins/volume/exec/
Следующее, что нужно сделать, это добавить PeristentVolume, но для этого нужна емкость, в примере 1Gi. Значит ли это, что мы теряем все данные на smb-сервере? Зачем должна быть емкость для уже существующего сервера?
Кроме того, как мы можем получить доступ к подкаталогу монтирования /mnt/dfs из модуля? Итак, как получить доступ к данным из /mnt/dfs/project1 в модуле?
Нужен ли нам вообще PV? Может ли модуль просто прочитать с подключенного общего ресурса хоста?
apiVersion: v1
kind: PersistentVolume
metadata:
name: mycifspv
spec:
capacity:
storage: 1Gi
flexVolume:
driver: juliohm/cifs
options:
opts: sec=ntlm,uid=1000
server: my-cifs-host
share: /MySharedDirectory
secretRef:
name: my-secret
accessModes:
- ReadWriteMany