日前,自己運維的一個機器學習平臺出現了登入不上的情況,因其架構基於Docker設計,為排查問題,經歷了慘痛的踩坑過程,紀實如下:
kubectl get node
檢視節點狀態,結果為Ready/NotReady
kubectl get pod -n xxx
檢視指定pod的狀態,結果為Running、Error、CrashLoopBackOff、PodInitializing等狀態,對於Error和Crash等狀態的pod要進行處理
kubectl get nodes 列出所有執行的pod資訊
kubectl get ns 列出所有的名稱空間
kubectl get pods -o wide 列出pod以及執行的pod節點資訊
kubectl get node -n rook-ceph
檢視rook-ceph的狀態,rook使用kubernetes原語使ceph儲存系統能夠在kubernetes上執行。
ceph -s
檢視ceph叢集的狀態,正常時為HEATH_OK,ceph有時會出現掛載不上的情況,需要重新mount
systemctl status docker
檢視docker狀態,結果有Running、Activating(start)等
systemctl restart docker
重啟Docker
systemctl start docker
啟動Docker
systemctl stop docker
停止Docker
systemctl status kube-apiserver
檢視
Kubernetes API server 的狀態
activating(start)
在上面restart docker的時候,會出現卡死的情況,status一直處在activating狀態,嘗試了N多辦法,都無法實現start,最終採用了萬能大法:重啟系統
reboot
重啟系統:慎用
重啟之後,docker自動啟動,狀態顯示為Running,但是kubectl get pod -n xxx中有部分pod的狀態是Error,需要重啟相關Pod
kubectl delete pod -n xxx xxx_fullname
檢視pod的啟動資訊
kubectl describe pod -n xxx xxx_fullname
我是會說科技,關注我,一起聊聊IT、科技、資料、安全、金融那些事。