Утверждение постоянного тома для Azure Disk с определенными разрешениями пользователя - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь создать динамический том Azure Disk для использования в модуле с конкретными требованиями к разрешениям.

Контейнер работает под идентификатором пользователя 472, поэтому янеобходимо найти способ монтирования тома с разрешениями rw (как минимум) для этого пользователя.

со следующим StorageClass определенным

apiVersion: storage.k8s.io/v1
kind: StorageClass
provisioner: kubernetes.io/azure-disk
reclaimPolicy: Delete
volumeBindingMode: Immediate
metadata:
  name: foo-storage
mountOptions:
  - rw
parameters:
  cachingmode: None
  kind: Managed
  storageaccounttype: Standard_LRS

и этим PVC

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: foo-storage
  namespace: foo
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: foo-storage
  resources:
    requests:
      storage: 1Gi

Я могу запустить следующее в модуле:

containers:
  - image: ubuntu
    name: foo
    imagePullPolicy: IfNotPresent
    command:
      - ls
      - -l
      - /var/lib/foo
    volumeMounts:
      - name: foo-persistent-storage
        mountPath: /var/lib/foo
volumes:
  - name: foo-persistent-storage
    persistentVolumeClaim:
      claimName: foo-storage

Модуль будет монтироваться и запускаться правильно, но kubectl logs <the-pod> покажет

total 24
drwxr-xr-x 3 root root  4096 Nov 23 11:42 .
drwxr-xr-x 1 root root  4096 Nov 13 12:32 ..
drwx------ 2 root root 16384 Nov 23 11:42 lost+found

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

Я пытался добавить раздел mountOptions в StorageClass, но все, что я пытаюсь (uid=472, user=472и т.д.) Я получаю ошибки монтирования при запуске, например,

mounting arguments: --description=Kubernetes transient mount for /var/lib/kubelet/plugins/kubernetes.io/azure-disk/mounts/m1019941199 --scope -- mount -t ext4 -o group=472,rw,user=472,defaults /dev/disk/azure/scsi1/lun0 /var/lib/kubelet/plugins/kubernetes.io/azure-disk/mounts/m1019941199
Output: Running scope as unit run-r7165038756bf43e49db934e8968cca8b.scope.
mount: wrong fs type, bad option, bad superblock on /dev/sdc,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

Я также пытался получить некоторую информацию от man mount , но я не нашел ничего работающего.

Как настроить этот класс хранения, утверждение постоянного тома и монтирование тома так, чтобы пользователь без полномочий root, выполняющий контейнер process получает доступ для записи (и создания подкаталогов) в смонтированном пути?

1 Ответ

0 голосов
/ 25 ноября 2018

Вам необходимо определить securityContext вашей спецификации pod следующим образом, чтобы она соответствовала новому запущенному пользователю и идентификатору группы:

securityContext:
  runAsUser: 472
  fsGroup: 472

Стабильная диаграмма Grafana Helm также делает то же самоепуть.См. securityContext в разделе Конфигурация здесь: https://github.com/helm/charts/tree/master/stable/grafana#configuration

...