簡體   English   中英

調試 nfs 卷“無法為 pod 附加或安裝卷”

[英]Debugging nfs volume "Unable to attach or mount volumes for pod"

我已經根據https 中的示例設置了一個服務 RMW pv 的 nfs 服務器://github.com/kube.netes/examples/tree/master/staging/volumes/nfs

此設置在許多生產環境中對我來說都很好,但在某些特定的 GKE 集群實例中,mount 在 pod 重新啟動后停止工作。

從 kubelet 日志中,我看到以下內容重復了很多次

無法為 pod“api-bf5869665-zpj4c_default(521b43c8-319f-425f-aaa7-e05c08282e8e)”附加或裝載卷:卸載的卷=[shared-mount],未附加的卷=[geekadm.net deployment-role-token-6tg9p shared-mount]:等待條件超時; 跳繩

同步 pod 521b43c8-319f-425f-aaa7-e05c08282e8e 時出錯(“api-bf5869665-zpj4c_default(521b43c8-319f-425f-aaa7-e05c08282e8e)”),跳過:未安裝的卷=[共享安裝],未連接的卷=[geekadm net deployment-role-token-6tg9p shared-mount]:等待條件超時

在任何節點上手動安裝 nfs 都可以正常工作: mount -t nfs <service ip>:/ /tmp/mnt

我怎樣才能進一步調試這個問題? 除了 kubelet 之外,還有其他我可以查看的日志嗎?

如果 pod 由於掛載速度太慢而被踢出節點,您可能會在日志中看到類似的消息。

Kubelets 甚至在日志中告知這個問題。
來自 Kubelet 的示例日志:
為 /var/lib/kubelet/pods/c9987636-acbe-4653-8b8d-aa80fe423597/volumes/kube.netes.io~gce-pd/pvc-fbae0402-b8c7-4bc8-b375-1060487d730d 和 fsGroup 集設置卷所有權。 如果該卷有很多文件,那么設置卷所有權可能會很慢,請參閱https://github.com/kube.netes/kube.netes/issues/69699

原因:
pod.spec.securityContext.fsGroup 設置使 kubelet 對為給定 pod 安裝的卷中的所有文件運行 chown 和 chmod。 如果文件很大且文件很多,這可能是一件非常耗時的事情。

默認情況下,Kube.netes 遞歸地更改每個卷內容的所有權和權限,以匹配掛載該卷時在 Pod 的 securityContext 中指定的 fsGroup。 文件

解決方案:
您可以通過以下方式處理。

  1. 減少卷中的文件數量。
  2. 停止使用 fsGroup 設置。

安裝命令行時是否指定了 nfs 版本? 我在 AKS 上遇到了同樣的問題,但受到https://stackoverflow.com/a/71789693/1382108的啟發,我檢查了 nfs 版本。 注意到我的 PV 有一個 vers=3。 當我嘗試使用掛起的mount -t nfs -o vers=3命令掛載命令行時, vers=4.1它立即起作用。 更改了我的 PV 中的版本,下一個 Pod 工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM