存儲(chǔ)FAQ-Flexvolume
本文介紹您在使用云盤、NAS及OSS存儲(chǔ)卷時(shí)常見問題的處理方法。
如何解決存儲(chǔ)卷掛載不上的問題?
您需要檢查Flexvolume和動(dòng)態(tài)存儲(chǔ)插件是否安裝,如果沒有,請安裝Flexvolume和動(dòng)態(tài)存儲(chǔ)插件。
方式一:檢查Flexvolume是否安裝
執(zhí)行以下命令獲取Pod信息。
kubectl get pod -n kube-system | grep flexvolume
預(yù)期輸出:
flexvolume-4wh8s 1/1 Running 0 8d
flexvolume-65z49 1/1 Running 0 8d
flexvolume-bpc6s 1/1 Running 0 8d
flexvolume-l8pml 1/1 Running 0 8d
flexvolume-mzkpv 1/1 Running 0 8d
flexvolume-wbfhv 1/1 Running 0 8d
flexvolume-xf5cs 1/1 Running 0 8d
查看Flexvolume Pod狀態(tài)是否為Running,且運(yùn)行的數(shù)量與節(jié)點(diǎn)數(shù)量相同。
如果運(yùn)行狀態(tài)不對,請參見插件運(yùn)行日志分析。
方式二:檢查動(dòng)態(tài)存儲(chǔ)插件是否安裝
如果使用云盤的動(dòng)態(tài)存儲(chǔ)功能,需要確認(rèn)是否安裝動(dòng)態(tài)存儲(chǔ)插件,執(zhí)行以下命令查看Pod信息。
kubectl get pod -n kube-system | grep alicloud-disk
預(yù)期輸出:
alicloud-disk-controller-8679c9fc76-lq6zb 1/1 Running 0 7d
如果運(yùn)行狀態(tài)不對,請參考插件運(yùn)行日志分析。
如何查看存儲(chǔ)相關(guān)日志?
您可以查看Flexvolume日志、Provisioner插件日志和Kubelet日志。
方式一:查看Flexvolume日志(master1上執(zhí)行)
kubectl get pod -n kube-system | grep flexvolume
kubectl logs flexvolume-4wh8s -n kube-system
kubectl describe pod flexvolume-4wh8s -n kube-system
查看云盤、NAS及OSS驅(qū)動(dòng)日志。
執(zhí)行以下命令查看Host節(jié)點(diǎn)上持久化的日志。如果某個(gè)Pod掛載失敗,查看Pod所在的節(jié)點(diǎn)地址。
kubectl describe pod nginx-97dc96f7b-xbx8t | grep Node
預(yù)期輸出:
Node: cn-hangzhou.i-bp19myla3uvnt6zi****/192.168.XX.XX
Node-Selectors: <none>
登錄節(jié)點(diǎn),查看云盤、NAS、OSS掛載的日志。
ssh 192.168.XX.XX
ls /var/log/alicloud/flexvolume*
預(yù)期輸出:
flexvolume_disk.log flexvolume_nas.log flexvolume_o#ss.log
方式二:查看Provisioner插件日志(master1上執(zhí)行)
kubectl get pod -n kube-system | grep alicloud-disk
kubectl logs alicloud-disk-controller-8679c9fc76-lq6zb -n kube-system
kubectl describe pod alicloud-disk-controller-8679c9fc76-lq6zb -n kube-system
方式三:查看Kubelet日志
如果某個(gè)Pod掛載失敗,查看Pod所在的節(jié)點(diǎn)地址。
kubectl describe pod nginx-97dc96f7b-xbx8t | grep Node
預(yù)期輸出:
Node: cn-hangzhou.i-bp19myla3uvnt6zi****/192.168.XX.XX
Node-Selectors: <none>
登錄節(jié)點(diǎn),查看kubelet日志。
ssh 192.168.XX.XX
journalctl -u kubelet -r -n 1000 &> kubelet.log
上述為獲取Flexvolume、Provisioner、Kubelet錯(cuò)誤日志的方法,如果無法根據(jù)日志修復(fù)狀態(tài),可以附帶日志信息聯(lián)系阿里云技術(shù)支持。
如何解決Kubelet出現(xiàn)不受ACK管理的Pod日志的問題?
Pod異常退出,導(dǎo)致數(shù)據(jù)卷掛載點(diǎn)在卸載過程中沒有清理干凈,最終導(dǎo)致Pod無法刪除。Kubelet的GC流程對數(shù)據(jù)卷垃圾回收實(shí)現(xiàn)并不完善,目前需要手動(dòng)或腳本自動(dòng)化實(shí)現(xiàn)垃圾掛載點(diǎn)的清理工作。
wget https://raw.githubusercontent.com/AliyunContainerService/kubernetes-issues-solution/master/kubelet/kubelet.sh
sh kubelet.sh