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 是否正常工作,你可以在任何节点上运行命令 |