天天看點

噩夢中驚醒, 随之陷入噩夢

中午睡覺, 夢到一群母蜘蛛圍攻我, 我卻不能動, 苦苦掙紮在音樂聲中驚醒

醒來後, 繼續工作, 突然發現伺服器磁盤占用100%, 操作巨卡, 一臉問号

是不是之前部署的istio的鏡像無法下載下傳, 導緻的, 我忘記了删除部署

然後将istio全部删除, 叢集還是卡, 節點丢失

最後重新開機了各個節點的kubelet, 叢集正常了

但是呢, 很多挂載pv的POD一直create狀态, 然後describe一下, 發現pvc無法挂載

這種情況一般是pvc被其他哥們強占, 是以按照經驗是這種路子, 然後分析了, 發現沒有活着的哥們強占他

想起之前的情況: 

不知什麼原因, 和ROOK挂載後出現POD迷失的情況, 也就是無法删除并且留在了node上, 重新開機kubelet, 檢視allkube可以看到沒了 但是呢, 目标node一直報錯 Jul 5 00:17:28 localhost kubelet: E0705 00:17:28.138366 938 kubelet_volumes.go:128] Orphaned pod "94d9dcc1-7ee6-11e8-95bf-000c29ab3f28" found, but volume paths are still present on disk : There were a total of 1 errors similar to this. Turn up verbosity to see them.

解決方式: cd /var/lib/kubelet/pods 删除報錯對應的檔案夾, 删除不了隻能先重新開機機器

那麼是什麼原因造成POD迷失的呢, 是由于kubelet不正常被kill了 POD迷失後, k8s會自動部署該POD新的執行個體, 而迷失的POD還持有原PVC的挂載, 是以如果PVC的政策是RWO, 那麼新的執行個體無法挂載 這個時候得尋找這個迷失POD的節點 需要檢視kubelet的日志, 找到出現上述錯誤的節點kubelet, 按照上述操作幹死 幹死後新的執行個體也是無法起來的, 使用k8s将新執行個體幹死, 這時候又是坑中坑, 一直是Terminating狀态, 無法幹死 這個時候, 檢視這個新執行個體的node, 到node上重新開機kublet即可幹死它, 最好确認下該node的kubelet日志 重新部署該POD, 還是起不來, 報錯無法挂載pvc 一看ceph監控吓一跳

噩夢中驚醒, 随之陷入噩夢

檢視osd的日志

噩夢中驚醒, 随之陷入噩夢

這裡osd保證叢集健康的方式是osd之間互相的heat, 按照這個ip找到了叢集中的osd執行個體, 發現真的無法ping通 直接ping該ods執行個體所在node的docker0端口, 發現仍然無法ping通, 排除了osd容器的問題, 是node的網絡問題 最後搞笑的發現是ping其他節點的這台主機網絡有問題, 最後發現是3台master的網絡出了問題, 有點麻煩!!! 分析後, 類似網絡覆寫分裂, master之間可以通, 而node之間也可以通, 但master和node之間無法通行 檢視master的ip a flanneld的overlay有2個網段!!! 蛋疼蛋疼 (這裡後面在細細記錄了~)

噩夢中驚醒, 随之陷入噩夢

首先想到是重新開機master的flanneld和docker, 一台一台來, 否則導緻docker, flanneld, etcd互相依賴起不來, 叢集GG 無效 重新開機node的flaneld和docker 無效 重新開機node的kubelet 無效 崩潰~~

重新開機master的flanneld, docker, kubelet, kube-proxy 無效 萬般無奈, 不如直接重新開機master, 幹你媽的

噩夢中驚醒, 随之陷入噩夢

重新開機後flanneld的overlay隻有1個子網段了 ping之後發現OK了~ 随之按此方法依次重新開機另外兩台master, 最後發現還有幾台node, 也重新開機下解決 最後ceph叢集全部正常

噩夢中驚醒, 随之陷入噩夢

重新嘗試部署新執行個體 部署成功, 并且成功加載pvc, 資料沒丢, 隻是丢了一段剛剛當機時間的監控資料

噩夢中驚醒, 随之陷入噩夢

一臉驚歎~

繼續閱讀