为什么我看到 UnresponsiveMountHelperContainerUtility 错误File Storage for VPC?
虚拟私有云
您的应用在使用基于区域的 dp2 配置文件 File Storage for VPC 进行传输中加密(EIT)时,会出现 UnresponsiveMountHelperContainerUtility 错误,导致应用无法正常运行。
使用 EIT(传输中加密)排查 VPC 文件存储系统无响应的问题。
您会看到类似以下示例的错误信息:
Code: UnresponsiveMountHelperContainerUtility,
Description: Failed to mount target because unable to make connection to mount helper container service.,
BackendError: Failed to send EIT based request. Failed with error:
Post "http://unix/api/mount": dial unix /var/lib/ibmshare.sock: connect: no such file or directory,
Action: Check if EIT is enabled from storage operator.
Run command 'kubectl edit configmap addon-vpc-file-csi-driver-configmap -n kube-system'
and set 'ENABLE_EIT' flag to 'true'.
要么是您的 worker 池未启用 EIT,要么是您的应用 pod 被调度到了一个未启用 EIT 的 worker 池节点上。 以下条件之一成立:
ENABLE_EITconfigmap 中false或EIT_ENABLED_WORKER_POOLS为空。- 该 Pod 运行的 worker 池未在
EIT_ENABLED_WORKER_POOLS中列出。 - 在 RHCOS 工作节点上,EIT 软件包已安装,但尚未重启节点以激活这些软件包。
- 在 RHCOS 工作节点上,此前曾进行过一次卸载和重新安装的操作,期间未重启系统,导致该软件包处于“已分层”但损坏的状态。
解决问题
请按照以下步骤排查并解决问题原因。
检查哪些节点启用了 EIT
查看 file-csi-driver-status 配置映射,以确认哪些节点已安装EIT软件包,并确认配置是否正确。
-
描述该状态配置映射,以查看哪些节点启用了 EIT。 查找
EIT_ENABLED_WORKER_NODES键,其中列出了工作池名称以及已完成EIT安装的节点的IP地址。oc describe cm file-csi-driver-status -n kube-system示例输出:
EIT_ENABLED_WORKER_NODES: ---- default: - 10.240.0.89 - 10.240.0.87 - 10.240.0.88空值表示尚未有任何节点安装 EIT。
-
请确认“
ENABLE_EIT”已设置为“true”,并且目标工作池已列在“EIT_ENABLED_WORKER_POOLS”中。oc describe cm addon-vpc-file-csi-driver-configmap -n kube-system
请确认您的应用 Pod 正在支持 EIT 的节点上运行
列出您的 Pod,以查明它们被调度到了哪个节点,然后与上一节中的列表进行核对。
-
列出您的 Pod,并记录每个 Pod 运行的节点 IP 地址。
oc get pods -A -o wide -
将该节点的 IP 地址与步骤 1 中提供的
EIT_ENABLED_WORKER_NODES列表进行核对。 如果该 Pod 位于该列表中未包含的节点上,请执行以下任一操作:- 使用节点选择器或亲和性规则,将 Pod 迁移到支持 EIT 的节点上。
- 将包含该节点的 worker 池添加到 configmap 中的
EIT_ENABLED_WORKER_POOLS中,并等待操作员完成协调。
针对不同操作系统的注意事项
所需软件包的安装方式因工作节点操作系统的不同而有所差异。
Ubuntu 以及 RHEL
无需重新引导。 这些软件包在安装完成后立即生效。 如果该节点的 IP 地址出现在 EIT_ENABLED_WORKER_NODES 中,且该 Pod 位于该节点上,则 EIT 应能正常工作。 如果套接字仍然缺失,请检查存储操作员 Pod 的日志,查看是否有安装错误。
oc logs -n kube-system -l app=ibm-vpc-file-csi-operator --tail=100
RHCOS / CoreOS
RHCOS 是一个不可变的操作系统。 除非重启节点,否则这些软件包不会生效,即使该节点的 IP 地址已经出现在 EIT_ENABLED_WORKER_NODES 中。
Node 显示为支持 EIT,但挂载仍失败
如果该节点的 IP 地址已列在 EIT_ENABLED_WORKER_NODES 中,但您仍然看到“UnresponsiveMountHelperContainerUtility”错误,则说明自安装软件包以来该节点尚未重启。 在重启之前,/var/lib/ibmshare.sock 套接字并不存在。
要确认是否即将重启,请在受影响的节点上运行以下命令:
-
使用 OpenShift 命令行界面(CLI)在受影响的节点上打开一个调试终端。
oc debug node/<nodeName> -
在调试 shell 中,检查 EIT 包是否已准备就绪但尚未激活。
chroot /host rpm-ostree status在输出结果中,查找一个状态为“待处理”或“已分阶段”的图层,该图层中列出了
mount-helper和mount-helper-container。 如果这些软件包出现在未标记为“(booted)”的层中,则需要重启系统才能激活它们。以下示例输出显示了已准备好在下次启动时安装的软件包:
State: idle Deployments: ● ostree-unverified-registry:... ... LayeredPackages: mount-helper mount-helper-container ostree-unverified-registry:... (booted) ...
要解决此问题,请将受影响的 RHCOS 节点排空并重启,以避免对正在运行的工作负载造成影响。
-
通过匹配其 IP 地址,查找
EIT_ENABLED_WORKER_NODES中列出的节点的 worker ID。ibmcloud ks workers --cluster CLUSTER_ID -
在重启之前,清空该节点以安全地移除所有正在运行的 Pod。
oc drain <node-name> --ignore-daemonsets --delete-emptydir-data -
重新启动已断电的节点。
ibmcloud ks worker reboot --cluster CLUSTER_ID --worker WORKER_ID -
节点恢复联机并进入
Ready状态后,请解除其锁定,以便工作负载能够再次被调度到该节点上。oc uncordon <node-name>
在 RHCOS 上安装作业时出现“已分层”错误,导致安装失败
如果您之前已在 RHCOS 工作池上卸载了 EIT,随后在未重启节点的情况下重新启用了它,则存储操作员的安装作业可能会失败,并显示类似以下的错误:
error: Packages are already layered: mount-helper-<version>.rpm mount-helper-container-<version>.rpm
出现这种情况是因为 rpm-ostree uninstall 仅将删除操作标记为待处理。 在重新启动之前,这些软件包仍会保留在当前的启动层中。 当操作员尝试再次运行 rpm-ostree install 时,系统会将这些软件包识别为已安装。
要解决此问题:
-
在重启之前,清空该节点以安全地移除所有正在运行的 Pod。
oc drain <node-name> --ignore-daemonsets --delete-emptydir-data -
重新启动 RHCOS 节点以应用待处理的卸载操作。
ibmcloud ks worker reboot --cluster CLUSTER_ID --worker WORKER_ID -
节点恢复联机并进入
Ready状态后,请解除其锁定,以便工作负载能够再次被调度到该节点上。oc uncordon <node-name> -
节点恢复联机后,之前安装的软件包已不复存在。 存储运营商会在下一个对账周期自动重新安装这些文件,通常只需几分钟。
-
在运维人员通过
EIT_ENABLED_WORKER_NODES报告该节点已启用 EIT 功能后,请清空节点并重新启动,以激活新安装的软件包,然后解除该节点的隔离状态。
RHCOS 的卸载并重新安装完整流程为:卸载后重启 → 操作员重新安装 → 再次重启以激活。
向启用了 EIT 的工作池中添加了新节点
当一个新节点加入已列入 EIT_ENABLED_WORKER_POOLS 的工作池时,存储操作员会在该节点的下一个同步周期中自动在其上安装 EIT 软件包。 无需更新配置映射。
对于 RHCOS 节点,在安装完成后,您仍需清空节点并重启该节点,EIT 才会生效。 排空节点,重启该节点,然后解除其隔离状态,以减少对正在运行的工作负载的影响。 在节点重启之前,任何使用启用了 EIT 的 PVC 并被调度到该新节点的 Pod 都会遇到相同的“UnresponsiveMountHelperContainerUtility”错误。 Ubuntu (IKS) 和 RHEL (ROKS) 节点在添加新节点时无需重启。