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

как заставить Kubernetes монтировать тома ext4 через iscsi в журналируемом режиме вместо упорядоченного

Я запускаю kubernetes на Ubuntu 18.04.1, а некоторые из моих модулей запускаю с монтированием через ISCSI. Недавно я заметил (возможно, из-за неправильного отключения тома iscsi или по другим причинам), что по крайней мере один из экстентов iscsi (ext4 fs) иногда поврежден. Чтобы попытаться исправить это, я хотел бы изменить крепление на журнальное, а не на заказное. Я вижу это в системном журнале узла:

Dec 29 11:45:29 mira-b systemd[1]: Started Kubernetes transient mount for /var/lib/kubelet/plugins/kubernetes.io/iscsi/iface-default/192.168.xx.yy:3260-iqn.2005-10.home.mediastore:container-lun-0.
Dec 29 11:45:29 mira-b kubelet[27086]: I1229 11:45:29.988889   27086 operation_generator.go:506] MountVolume.WaitForAttach succeeded for volume "container-data-folder" (UniqueName: "kubernetes.io/iscsi/192.168.xx.yy:iqn.2005-10.home.mediastore:container:0") pod "container-65d6d65b75-z5l94" (UID: "41ef97fd-0ba2-11e9-ba38-0cc47abd5a26") DevicePath "/dev/disk/by-path/ip-192.168.xx.yy:3260-iscsi-iqn.2005-10.home.mediastore:container-lun-0"
Dec 29 11:45:29 mira-b kubelet[27086]: I1229 11:45:29.988951   27086 operation_generator.go:527] MountVolume.MountDevice succeeded for volume "container-data-folder" (UniqueName: "kubernetes.io/iscsi/192.168.xx.yy:iqn.2005-10.home.mediastore:container:0") pod "container-65d6d65b75-z5l94" (UID: "41ef97fd-0ba2-11e9-ba38-0cc47abd5a26") device mount path "/var/lib/kubelet/plugins/kubernetes.io/iscsi/iface-default/192.168.xx.yy:3260-iqn.2005-10.home.mediastore:container-lun-0"
Dec 29 11:45:29 mira-b kernel: [  389.683464] EXT4-fs (sdi): mounted filesystem with ordered data mode. Opts: (null)

Эта последняя строка сообщает мне, что ext4 fs монтируется в соответствии с заказом, но в документации k8s я не вижу способа указать, как монтировать FS, только "fs: ext4" в параметрах тома iscsi.

внутри контейнера / контейнера я вижу это

/dev/sdi on /config type ext4 (rw,relatime,stripe=256,data=ordered)

Есть ли способ явно заставить кубернеты монтировать ext4 fs, используя data = journaled вместо order? FWIW, моим резервным хранилищем ISCSI является ZFS, я уже включил синхронизацию записи для набора данных, в котором существует экстент, но чтобы исключить что-либо еще, я бы хотел, чтобы контейнер также регистрировался в журнале, чтобы попытаться убедиться, что любая запись завершена до любое отключение / размонтирование и т. д.

PS: Kubernetes версия 1.13.0

Обновление: я забыл свой yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: pod
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: pod
    spec:
      hostNetwork: true
      volumes:
      - name: pod-data-folder
        iscsi:
          targetPortal: 192.168.xx.yy
          iqn: iqn.2005-10.home.mediastore:pod
          lun: 0
          fsType: ext4

глядя на ответ @VAS, кажется, что параметры монтирования недействительны при указании встроенного тома iscsi и что он должен быть предоставлен как PV, аналогичный монтированию NFS. Я попробую.

Я не тестировал, но на основе Примеры ISCSI и код в PR Реализовать поддержку вариантов монтирования в PV # 41906 Я могу предположить, что параметры монтирования просто добавлены в команду монтирования плагина, поэтому YAML должен быть таким:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: iscsi
provisioner: kubernetes.io/iscsi
mountOptions:
  - rw
  - relatime
  - stripe=256

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0003
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: iscsi
  mountOptions:
    - data=journaled
  iscsi:
     targetPortal: 10.16.1.10
     iqn: example.server:storage.target00
     lun: 0
     fsType: 'ext4'
     readOnly: false