為什麼我看到一個 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'.
這可能是因為您的工作匣未啟用 EIT,或是您的應用程式 Pod 被排程至一個未啟用 EIT 的工作匣節點上。 以下任一條件成立:
ENABLE_EITconfigmap 中,false或EIT_ENABLED_WORKER_POOLS為空。- 該 Pod 所執行的工作節點池並未列於
EIT_ENABLED_WORKER_POOLS中。 - 在 RHCOS 工作節點上,EIT 套件已安裝,但尚未重新啟動該節點以啟用這些套件。
- 在 RHCOS 工作節點上,先前曾執行過一輪卸載與重新安裝的循環,期間未重新開機,導致套件處於損壞的「已分層」狀態。
解決問題
請按照以下步驟來找出並解決問題原因。
檢查哪些節點已啟用 EIT
檢視 file-csi-driver-status 配置映射,以確認哪些節點已安裝 EIT 套件,並確認配置是否正確。
-
請描述該 ConfigMap 的狀態,以查看哪些節點已啟用 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 的節點。
- 將包含該節點的工作者池新增至 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> -
在除錯殼層中,檢查 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中列出的節點所對應的工作者 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,隨後在未重新啟動節點的情況下重新啟用 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 套件。 無需更新 ConfigMap。
對於 RHCOS 節點,在安裝完成後,您仍須將節點清空並重新啟動,EIT 才會生效。 將節點中的資料排空、重新啟動,然後解除其連線,以減輕對正在執行中的工作負載的影響。 在該節點重新啟動之前,任何使用啟用 EIT 的 PVC 並被排程至該新節點的 Pod,都會出現相同的「UnresponsiveMountHelperContainerUtility」錯誤。 Ubuntu 當新增節點時,(IKS) 和 RHEL (ROKS) 節點無需重新開機。