家裡跟公司 WordPress 都是架設在 K8S + NFS 環境
NFS 用 Windows Server 或 Synology 架的
但在進行主題更新或外掛刪除都會碰到外掛目錄下有 .nfs00xxx 導致砍不掉
嘗試進 Pod 用指令刪除顯示 Resource busy
lsof 檢查是否鎖定看不太出來
從 server 上看可以看到被 System 鎖住
但就不知道要怎麼去解決,每次都要放一段時間才能解鎖,不知怎麼解?謝謝
.nfsXXXX 檔案的產生, 是因為 NFS Client 在 Open file 的狀態下, 沒有先 Close file, 就去執行 Delete file 造成的.
此時, 因為 Open 狀態還持續, NFS 不能擅自將檔案刪除, 他就把這個還在被 Open 的檔案改名為 .nfsxxxx, 然後持續提供給當初 Open 的那個程式使用 (所以你想刪除他就報 Resource Busy, 因為他還在被某人 Open 的狀態, 不能刪), 直到當初 Open 他的程式下達 Close 命令 (或者中斷存取後 timeout), 才會將此檔案刪除.
回到 k8s 的架構, 由於你的 NFS Server 是在外部, k8s 必須透過 Storage Class 來跟她溝通, 所以這時候對 NFS Server 來說, 你的 NFS Client 其實是 k8s 的 NFS Storage class:
以上是生成原因的推測, 問題要去查你的 NFS Storage class 或 Provisoiner 才知...
感謝雷神前輩,我是先嘗試把 ReadWriteOnce 改成 ReadWriteMany 再砍 pod 無效,再嘗試砍 nfs-client-provisioner pod 無效,再調整了 nfs-client-provisioner 資源,原先是沒設定 requests limits,調整完後再 helm upgrade 目前測試暫時沒再發生
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
limits:
cpu: 1
memory: 1Gi
requests:
cpu: 100m
memory: 128Mi