1. 程式人生 > >ceph rbd在k8s中掛載卡住導致應用無法啟動的問題

ceph rbd在k8s中掛載卡住導致應用無法啟動的問題

故障現象

服務掛上rbd正常讀寫,經過很長時間之後再次釋出就會出現timeout的錯誤,導致服務無法啟動,但是如果強制把服務縮容到0,然後再發布改成1,這樣就能啟動成功,短時間內再次進行釋出操作,rbd掛載 解除安裝又很正常了,故障再不會出現了

故障表現

  1. rbd map程序卡住無法正常退出
rbd map rbd19 --id admin -m xxxx --key=xxxxx
  1. 應用啟動報錯
timeout expired waiting for volumes to attach or mount for pod

掛載rbd超時

故障的原因

ceph版本小於ceph version 12.2.8-291時, rbd在低版本中有瑕疵, rbd map後需要檢查核心udev返回的兩個事件,一個事件是rbd,一個事件是block,這2個事件不一定是有序的,但是rbd命令裡檢查這2個事件是有序的,就會導致可能漏掉了一個檢查,永遠在等待,其實rbd已經map上了。

rbd map程序卡住之後,kubelet遲遲等不到程序的正常返回,進而判斷map超時,於是就是列印'timeout expired waiting for volumes to attach or mount for pod'

解決辦法