K8S中pod在掛載volume時出現FailedMount錯誤(exit status 32)

問題

先是在k8s中開啓了一個persistentvolume和persistentvolumeclaim,後端掛載NFS,然後在和volume相同的namespace中啓動一個pod掛載前面的persistentvolumeclaim。發現pod一直處於containercreating狀態,使用describe查看pod的詳細錯誤信息,提示在掛載volume時出現FailedMount錯誤,exit status 32。具體錯誤信息如下:

Events:
  FirstSeen LastSeen    Count   From            SubobjectPath   Reason      Message
  ───────── ────────    ─────   ────            ─────────────   ──────      ───────
  20s       20s     1   {scheduler }        Scheduled   Successfully assigned testpod to 192.168.0.10
  4s        4s      1   {kubelet 192.168.0.10}          FailedMount Unable to mount volumes for pod "testpod_default": exit status 32
  4s        4s      1   {kubelet 192.168.0.10}          FailedSync  Error syncing pod, skipping: exit status 32

解決方法

首先,要想成功掛載nfs,必須在kubernetes集羣的每個node上安裝nfs-common。

然後,在創建persistentvolume和persistentvolumeclaim時他們的name必須相同,而且和pod中的spec.containers.volumeMounts.name以及spec.volumes.name,spec.volumes.persistentVolumeClaim.claimName全都相同,此時才能成功掛載,啓動Pod。

經過以上兩步,應該就能順利解決問題了。這不知道算不算是k8s的一個bug,碰到問題在網上找了各種方案都不行,最後自己經過多次嘗試,終於解決了。希望分享出來能夠幫助到其他人。

—————後續更新————
搭建了一個新的k8s集羣,又碰到了這個問題,掛載卷失敗。上面的解決方案也試過了,還是不行。本以爲是使用了新版的kubernetes的原因,在網上到處查找解決方法都不行,最後發現是沒有將NFS服務器掛載到管理平臺本地目錄中導致了錯誤,真是太傻逼了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章