編輯

共用方式為


修正在 AKS Arc 中管理記憶體時的已知問題和錯誤

使用本文可協助您針對 AKS Arc 中的記憶體相關問題進行疑難解答和解決。

設定持續性磁碟區宣告會導致錯誤:「無法初始化代理程式。 錯誤: mkdir /var/log/agent: 許可權遭拒」

此權限遭拒絕的錯誤表示預設儲存類別可能不適合您的工作負載,且會發生在執行於 Kubernetes 1.19.x 版或更新版本上的 Linux 工作負載。 遵循安全性最佳做法之後,許多 Linux 工作負載都會指定 Pod 的 securityContext fsGroup 設定。 工作負載無法在 Azure Stack HCI 上的 AKS 上啟動,因為預設記憶體類別未指定 fstype (=ext4) 參數,因此 Kubernetes 無法根據 fsGroup 工作負載所要求的變更檔案和永續性磁碟區的擁有權。

若要解決此問題,請參閱可用來佈建 PVC 的定義自訂儲存類別

容器記憶體介面 Pod 停滯在「ContainerCreating」狀態

使用 Kubernetes 1.16.10 版建立新的 Kubernetes 工作負載叢集,然後更新為 1.16.15。 更新之後,csi-msk8scsi-node-9x47m Pod 會停滯在 ContainerCreating 狀態,且 kube-proxy-qqnkr Pod 會停滯在 Terminating 狀態,如下列輸出所示:

Error: kubectl.exe get nodes  
NAME              STATUS     ROLES    AGE     VERSION 
moc-lf22jcmu045   Ready      <none>   5h40m   v1.16.15 
moc-lqjzhhsuo42   Ready      <none>   5h38m   v1.16.15 
moc-lwan4ro72he   NotReady   master   5h44m   v1.16.15

\kubectl.exe get pods -A 

NAMESPACE     NAME                        READY   STATUS              RESTARTS   AGE 
    5h38m 
kube-system   csi-msk8scsi-node-9x47m     0/3     ContainerCreating   0          5h44m 
kube-system   kube-proxy-qqnkr            1/1     Terminating         0          5h44m  

由於 kubelet 最終會處於不良狀態,且無法再與 API 伺服器通訊,因此唯一的解決方案是重新啟動 kubelet 服務。 重新啟動之後,叢集會進入執行中狀態。

從損毀傾印記錄填滿的磁碟記憶體

磁碟記憶體可以從所建立的損毀傾印記錄填滿。 這是因為已過期的內文代理程式客戶端憑證。 徵兆可能如下所示:

  • 服務無法啟動。
  • Kubernetes Pod、部署等無法啟動,因為資源不足。

重要

此問題可能會影響 2023 年 4 月 18 日之後於 2023 年 4 月 18 日發行到 2023 年 3 月發行後建立的所有新的「新版」管理與目標叢集節點。 此問題已在 2023-05-09 版和更新版本中修正。

此問題可能會影響任何涉及配置磁碟空間或寫入新檔案的作業,因此任何「磁碟空間/資源不足」錯誤都是不錯的提示。 若要檢查此問題是否存在於指定的節點上,請執行下列殼層命令:

clouduser@moc-lwm2oudnskl $ sudo du -h /var/lib/systemd/coredump/

此命令會報告診斷檔案所耗用的儲存空間。

根本原因

用來向服務端點驗證內文代理程式的客戶端憑證到期會導致代理程序當機,導致損毀傾印。 代理程式的當機/重試迴圈在初始啟動時大約是 5 秒,而且沒有逾時。 這表示節點文件系統每隔幾秒鐘就會建立大約 330 MB) 的新檔案 (,這可以快速取用磁碟記憶體。

風險降低

慣用的緩和措施是升級至具有更新憑證的最新版本 1.10.18.10425 版。 若要這樣做,請先在更新 AKS-HCI 主機之前,先將 工作負載叢集手動升級 至任何 支援的次要版本

如需 AKS Arc 版本和所有最新 AKS-HCI 新聞的詳細資訊,請訂閱 AKS 版本頁面

如果升級不是選項,您可以關閉 mdsd 服務。 針對每一個「輪機」節點:

  1. 使用下列殼層命令關閉 Geneva 代理程式:

    sudo systemctl disable --now mdsd
    
  2. 確認已成功停用「內文」代理程式:

    sudo systemctl status mdsd
    
  3. 使用下列命令刪除累積的檔案:

    sudo find /var/lib/systemd/coredump/ -type f -mmin +1 -exec rm -f {} \;
    sudo find /run/systemd/propagate -name 'systemd-coredump@*' -delete
    sudo journalctl --rotate && sudo journalctl --vacuum-size=500M
    
  4. 重新啟動節點:

    sudo reboot
    

記憶體 Pod 當機,且記錄指出 『createSubDir』 參數無效

如果您的部署中已安裝SMB或NFS CSI驅動程式,而且您升級至舊版的May組建,可能會發生錯誤。 不再接受其中一個稱為 createSubDir的參數。 如果這適用於您的部署,請遵循下列指示來解決記憶體類別失敗。

如果您遇到此錯誤,記憶體 Pod 會當機,而記錄表示 createSubDir 參數無效。

重新建立記憶體類別。

建立永續性磁碟區時,嘗試掛接磁碟區失敗

刪除 AKS Arc 環境中的永續性磁碟區或永續性磁碟區宣告之後,就會建立新的永續性磁碟區來對應至相同的共用。 不過,在嘗試掛接磁碟區時,掛接作業會失敗,而 Pod 會因 NewSmbGlobalMapping failed 錯誤而逾時。

若要解決無法掛接新磁碟區的問題,您可以透過 SSH 連線到 Windows 節點,並執行 Remove-SMBGlobalMapping,提供與該磁碟區對應的共用。 執行此命令之後,應可順利掛接磁碟區。