Kubernetes 1.18.4, iSCSI

У меня проблемы с подключением тома по iSCSI от Kubernetes. Когда я пытаюсь использовать iscisiadm с рабочего узла, он работает. Это то, что я получил из модуля описания kubectl.

Normal   Scheduled               <unknown>             default-scheduler        Successfully assigned default/iscsipd to k8s-worker-2
Normal   SuccessfulAttachVolume  4m2s                  attachdetach-controller  AttachVolume.Attach succeeded for volume "iscsipd-rw"
Warning  FailedMount             119s                  kubelet, k8s-worker-2    Unable to attach or mount volumes: unmounted volumes=[iscsipd-rw], unattached volumes=[iscsipd-rw default-token-d5glz]: timed out waiting for the condition
Warning  FailedMount             105s (x9 over 3m54s)  kubelet, k8s-worker-2    MountVolume.WaitForAttach failed for volume "iscsipd-rw" : failed to get any path for iscsi disk, last err seen:iscsi: failed to attach disk: Error: iscsiadm: No records found(exit status 21)

Я просто использую iscsi.yaml файл с сайта kubernetes.io!

---
apiVersion: v1
kind: Pod
metadata:
  name: iscsipd
spec:
  containers:
  - name: iscsipd-rw
    image: kubernetes/pause
    volumeMounts:
    - mountPath: "/mnt/iscsipd"
      name: iscsipd-rw
  volumes:
  - name: iscsipd-rw
    iscsi:
      targetPortal: 192.168.34.32:3260
      iqn: iqn.2020-07.int.example:sql
      lun: 0
      fsType: ext4
      readOnly: true

Open-iscsi установлен на всех рабочих узлах (всего на двух из них).

● iscsid.service - iSCSI initiator daemon (iscsid)
   Loaded: loaded (/lib/systemd/system/iscsid.service; enabled; vendor preset: e
   Active: active (running) since Fri 2020-07-03 10:24:26 UTC; 4 days ago
     Docs: man:iscsid(8)
  Process: 20507 ExecStart=/sbin/iscsid (code=exited, status=0/SUCCESS)
  Process: 20497 ExecStartPre=/lib/open-iscsi/startup-checks.sh (code=exited, st
 Main PID: 20514 (iscsid)
    Tasks: 2 (limit: 4660)
   CGroup: /system.slice/iscsid.service
           ├─20509 /sbin/iscsid
           └─20514 /sbin/iscsid

ISCSI Target создается на IBM Storwize V7000. Без CHAP.

Я попытался подключиться к iscsiadm с рабочего узла, и он работает.

sudo iscsiadm -m discovery -t sendtargets -p 192.168.34.32
192.168.34.32:3260,1 iqn.1986-03.com.ibm:2145.hq-v7000.hq-v7000-rz1-c1
192.168.34.34:3260,1 iqn.1986-03.com.ibm:2145.hq-v7000.hq-v7000-rz1-c1

sudo iscsiadm -m node --login
Logging in to [iface: default, target: iqn.1986-03.com.ibm:2145.hq-v7000.hq-v7000-rz1-c1, portal: 192.168.34.32,3260] (multiple)
Logging in to [iface: default, target: iqn.1986-03.com.ibm:2145.hq-v7000.hq-v7000-rz1-c1, portal: 192.168.34.34,3260] (multiple)
Login to [iface: default, target: iqn.1986-03.com.ibm:2145.hq-v7000.hq-v7000-rz1-c1, portal: 192.168.34.32,3260] successful.
Login to [iface: default, target: iqn.1986-03.com.ibm:2145.hq-v7000.hq-v7000-rz1-c1, portal: 192.168.34.34,3260] successful.

Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 32768 bytes / 32768 bytes
Disklabel type: dos
Disk identifier: 0x5b3d0a3a

Device     Boot Start       End   Sectors  Size Id Type
/dev/sdb1        2048 209715199 209713152  100G 83 Linux

Кто-нибудь сталкивается с такой же проблемой?


person markoc    schedule 06.07.2020    source источник
comment
Добро пожаловать! Эти файлы .yaml - те, которые вы должны использовать для этой задачи? Если это так, подумайте также о том, чтобы зарегистрировать ошибку с помощью kuernetes. Кроме того, если вы еще раз уточните, что вы пробовали, это поможет нам диагностировать вашу проблему.   -  person Riley    schedule 06.07.2020
comment
Привет и спасибо! :) Нет, они не. Я попытался развернуть контейнер SQL и получил ту же проблему. Записи не найдены (статус выхода 21). Поэтому я просто попробовал что-то более простое. И проблема была такая же. Когда я использую iscsiadm напрямую с узлов, он работает. Простите за формат! :( 6 июля, 10:29:52 k8s-worker-2 kubelet [1059]: E0706 10: 29: 52.468632 1059 iscsi_util.go: 420] iscsi: не удалось получить путь к диску iscsi, последняя ошибка: 6 июля 10 : 29: 52 k8s-worker-2 kubelet [1059]: iscsi: не удалось подключить диск: Ошибка: iscsiadm:   -  person markoc    schedule 06.07.2020


Ответы (1)


Не забудьте не использовать имя хоста для цели. Используйте IP. По какой-то причине, если целью является имя хоста, он выдает ошибку о запросе дублированного сеанса. Если целью является IP-адрес, он работает нормально. Теперь у меня есть несколько целей iSCSI, установленных в разных модулях, и я в полном восторге.

У вас также может быть проблема с аутентификацией для вашей цели iscsi.

Если вы еще не используете аутентификацию CHAP, вам все равно необходимо отключить аутентификацию. Например, если вы используете targetcli, вы можете выполнить следующие команды, чтобы отключить его.

$ sudo targetcli
/> /iscsi/iqn.2003-01.org.xxxx/tpg1 set attribute authentication=0 # will disable auth
/> /iscsi/iqn.2003-01.org.xxxx/tpg1 set attribute generate_node_acls=1 # will force to use tpg1 auth mode by default

Если это вам не помогает, поделитесь своей целевой конфигурацией iscsi или руководством, которому вы следовали.

Что важно, проверьте, на всех ли ваших узлах установлен пакет open-iscsi.

Взгляните: kubernetes-iSCSI, volume-failed-iscsi-disk, iscsi-into-container-fails.

person Malgorzata    schedule 06.07.2020
comment
Привет, только что отредактировал вопрос. Да, я использовал IP и установлен open-iscsi. Я использую Ubuntu 18.04. Мне удалось подключить том напрямую с узлов без CHAP. Если это поможет, я установил кластер kubernetes с помощью kubeadm! - person markoc; 07.07.2020
comment
Вы отключили аутентификацию, как я уже упоминал в своем ответе? Можете ли вы поделиться руководством, за которым вы следовали? - person Malgorzata; 08.07.2020
comment
Привет, я не использую targetcli. iSCSI Target создается на IBM Storwize V7000 и без CHAP. Мне удалось подключиться с рабочего узла (Ubuntu 18.04, open-iscsi) к цели без использования CHAP (вы можете увидеть результат в вопросе). Пробовал тоже из винды, работает. Вопрос в том, почему pod этого не понимает ... Я не вижу, что проблема заключается в аутентификации или iSCSI Target, я имею в виду сейчас ... :), более того, pod не видит целевые узлы ( / etc / iscsi / node пуст)? - person markoc; 08.07.2020
comment
Можете ли вы вставить всю эту дополнительную информацию в сообщение в правильном формате - в том числе из комментария прямо под вашим сообщением? - person Malgorzata; 04.08.2020