【问题标题】:Kubernetes 1.18.4, iSCSIKubernetes 1.18.4,iSCSI
【发布时间】:2020-07-07 20:19:09
【问题描述】:

我在从 Kubernetes 连接每个 iSCSI 卷时遇到问题。当我从工作节点尝试使用 iscisiadm 时,它可以工作。这是我从 kubectl description pod 中得到的。

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)

我只是使用来自 kubernetes.io 的 iscsi.yaml 文件!

---
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 目标是在 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

有人遇到同样的问题吗?

【问题讨论】:

  • 欢迎您!这些 .yaml 文件是您应该用于此任务的文件吗?如果是这样,请考虑向 kuernetes 提交错误。此外,如果您能澄清您尝试的更多内容,它可以帮助我们诊断您的问题。
  • 您好,谢谢! :) 不,他们不是。我尝试部署 SQL Container,但遇到了同样的问题“找不到记录(退出状态 21)所以我只是尝试了一些更简单的方法。问题是一样的。当我直接从节点使用 iscsiadm 时,它可以工作。抱歉格式!:(“7 月 6 日 10:29:52 k8s-worker-2 kubelet[1059]: E0706 10:29:52.468632 1059 iscsi_util.go:420] iscsi: 无法获取 iSCSI 磁盘的任何路径,最后看到的错误: Jul 6 10:29:52 k8s-worker-2 kubelet[1059]: iscsi: failed to attach disk: Error: iscsiadm:

标签: kubernetes iscsi


【解决方案1】:

记住不要为目标使用主机名。使用 IP。出于某种原因,如果目标是主机名,它会报错有关请求重复会话的错误。如果目标是 IP,则可以正常工作。我现在有多个 iSCSI 目标安装在不同的 pod 中,我非常欣喜若狂。

您的 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-package。

看一看:kubernetes-iSCSIvolume-failed-iscsi-diskiscsi-into-container-fails

【讨论】:

  • 嗨,刚刚编辑了问题。是的,我使用了 IP 并安装了 open-iscsi。我正在使用 Ubuntu 18.04。我设法直接从没有 CHAP 的节点连接卷。如果有帮助,我用 kubeadm 安装了 kubernetes 集群!
  • 您是否禁用了我在回答中提到的身份验证?你能分享你遵循的指南吗?
  • 嗨,我没有使用 targetcli。 iSCSI Target 是在 IBM Storwize V7000 上创建的,没有 CHAP。我设法在不使用 CHAP 的情况下从工作节点(Ubuntu 18.04,open-iscsi)连接到目标(您可以在问题中看到输出)。我也从 Windows 尝试过,它可以工作。问题是为什么 pod 没有得到它……我看不出问题出在身份验证或 iSCSI 目标上,我的意思是现在……:),更多的是 pod 没有看到目标节点( /etc/iscsi/node 为空)?
  • 您能否以正确的格式将所有这些额外信息粘贴到帖子中 - 以及这些来自您帖子正下方评论中的信息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多