k8s nfs mount引數配置研究

2021-10-07 14:41:41 字數 1734 閱讀 3069

近期遇到乙個問題:某網元yaml中配置了nfs位址及掛載目錄,當nfs異常時,網元程序讀nfs掛載目錄超時卡住,導致執行緒佔滿,無法響應k8s心跳檢測,一段時間後,k8s重啟該網元pod,在終止pod時,由於nfs異常,umount卡住,導致pod一直處於terminating狀態。

為解決上述問題,需要實現如下兩點:

nfs異常,讀目錄不掛住

nfs異常,pod刪除不掛住

針對上述第乙個疑難,研究nfs引數配置檔案:/etc/nfsmount.conf,其中如下幾個引數引起我的注意:

# the number of times a request will be retired before

# generating a timeout

# retrans=2

## the number of minutes that will retry mount

# retry=2

## how to handle times out from servers (hard is strongly suggested)

# hard=true

# soft=false

# the amount of time, in tenths of a seconds, the client

# will wait for a response from the server before retransmitting

# the request.

# timeo=600

網上對上述幾個引數的含義及配置值說明五花八門,因此我對這幾個引數進行了測試驗證,測試環境:一台環境用於啟停nfs服務(命令:systemctl start/stop nfs-server.service),另外一台裝置做目錄掛載用:

(1)retry=2,表示mount的超時時間,單位是分鐘,超過這個時間mount報失敗

關閉nfs,分別設定1分鐘和2分鐘進行測試mount;測試結果證明retry含義確為mount超時時間,單位分鐘。

(2)soft=true,soft方式掛載系統,若nfs請求超時,則客戶端向呼叫程式返回錯誤;如果使用hard方式則客戶端一直重新請求直至成功。預設為hard。

預設hard模式,是讀和umount掛住的主要原因,為解決上述問題,需要改為soft模式。

(3)timeo=10,客戶端請求超時時間(以十分之一秒為單位

這個配置,很多文章都說是客戶端請求重傳前等待時間,含義不好理解,其實就是一次請求的超時時間;單位有的說是秒,有的說是0.1秒,有的說是0.7秒,測試發現單位是0.1秒。

timeo分別設定10和20進行測試,重試次數retrans都是2(加上本身的1次,總次數為3次),測試結果如下,總超時時間分別是3秒和6秒,符合預期,單位是0.1秒:

(4)retrans=2,請求重試次數

經測試單位是測試,非時間,測試結果如下:

經過上述研究,進行如下配置修改後,讀取不再超時,pod也能正常刪除,不再掛住了。

ps.1、若pod一直處於terminating,也可以強制刪除:kubectl delete pod foo --grace-period=0 --force

2、可使用umount -l -f 執行強制umount操作

3、也可以先建立本地目錄,讓本地目錄mount nfs裝置,再將本地目錄通過hostpath掛載到容器中,這樣不管引數是否設定,pod均能刪除,但是如果不設定引數,讀取還會掛住

k8s ingress配置websocket支援

問題分析 表現形式 websocket鏈結 報錯 200 1copywebsocket connection to ws faile error during websocket handshake unexpected response code 200 猜測引起原因以及應對方式 解決方案 由於k...

k8s ingress配置websocket支援

具體來說,使用的ingress controller不一樣,有關的設定也不太一樣 參考 在 nginx ingress controller 中預設已經支援websocket訪問,官方文件中說明websocket不需要特別的配置,但需要在註解中配置以下三項 網上看到的另一種寫法配置 沒實踐過,若是配...

k8s 自定義dns 配置k8s dns

dns domain name system 提供網域名稱解析服務,解決了難於記憶的ip位址問題,以更人性可讀可記憶可標識的方式對映對應ip位址。cluster dns擴充套件外掛程式用於支援k8s集群系統中各服務之間發現與呼叫。元件 skydns 提供dns解析服務 etcd 儲存dns資訊 ku...