iSCSI 卷
在将数据存储在 iSCSI 卷上的 Rancher 启动的 Kubernetes 集群中,你可能会遇到 kubelet 无法自动连接 iSCSI 卷的问题。成此问题的原因很可能是 iSCSI 启动器工具不兼容。你可以在每个集群节点上安装 iSCSI 启动器工具来解决此问题。
将数据存储到 iSCSI 卷的由 Rancher 启动的 Kubernetes 集群使用 iSCSI 启动器工具,该工具嵌入在 kubelet 的 rancher/hyperkube Docker 镜像中。该工具从每个 kubelet(即 initiator)发现并发起与 iSCSI 卷(即 target)的会话。但是,在某些情况下,initiator 和 target 上安装的 iSCSI 启动器工具的版本可能不匹配,从而导致连接失败。
如果你遇到此问题,你可以在集群中的每个节点上安装启动器工具来解决该问题。你可以通过登录到集群节点并输入以下其中一个命令来安装 iSCSI 启动器工具:
| 平台 | 包名 | 安装命令 | 
|---|---|---|
Ubuntu/Debian  | 
  | 
  | 
RHEL  | 
  | 
  | 
在节点上安装启动器工具后,编辑集群的 YAML,编辑 kubelet 配置以挂载 iSCSI 二进制文件和配置,如下面的示例所示。
| 
 注意事项 
  | 
services:
  kubelet:
    extra_binds:
      - "/etc/iscsi:/etc/iscsi"
      - "/sbin/iscsiadm:/sbin/iscsiadm"
如果你使用的是 RHEL 7.9,你需要挂载文件 /usr/lib64/libcrypto.so.10,如下例所示。
services:
  kubelet:
    extra_binds:
      - "/etc/iscsi:/etc/iscsi"
      - "/sbin/iscsiadm:/sbin/iscsiadm"
      - "/usr/lib64/libcrypto.so.10:/usr/lib/libcrypto.so.10"
如果你使用的是 RHEL 8.6,你需要挂载文件 /usr/lib64/libcrypto.so.1.1,如下例所示。
services:
  kubelet:
    extra_binds:
      - "/etc/iscsi:/etc/iscsi"
      - "/sbin/iscsiadm:/sbin/iscsiadm"
      - "/usr/lib64/libcrypto.so.1.1:/usr/lib/libcrypto.so.1.1"
| 
 要验证 iscsiadm 是否正常工作,你可以在任何节点上运行命令   |