全部產品
Search
文件中心

Container Service for Kubernetes:儲存FAQ-Flexvolume

更新時間:Jun 19, 2024

本文介紹您在使用雲端硬碟、NAS及OSS儲存卷時常見問題的處理方法。

類型問題
儲存常見問題
雲端硬碟儲存卷常見問題
NAS儲存卷常見問題
OSS儲存卷常見問題

如何解決儲存卷掛載不上的問題?

您需要檢查Flexvolume和動態儲存裝置外掛程式是否安裝,如果沒有,請安裝Flexvolume和動態儲存裝置外掛程式。

方式一:檢查Flexvolume是否安裝

執行以下命令擷取Pod資訊。

kubectl get pod -n kube-system | grep flexvolume

預期輸出:

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狀態是否為Running,且啟動並執行數量與節點數量相同。

如果運行狀態不對,請參見外掛程式作業記錄分析。

方式二:檢查動態儲存裝置外掛程式是否安裝

如果使用雲端硬碟的動態儲存裝置功能,需要確認是否安裝動態儲存裝置外掛程式,執行以下命令查看Pod資訊。

kubectl get pod -n kube-system | grep alicloud-disk

預期輸出:

alicloud-disk-controller-8679c9fc76-lq6zb     1/1 Running   0   7d           

如果運行狀態不對,請參考外掛程式作業記錄分析。

如何查看儲存相關日誌?

您可以查看Flexvolume日誌、Provisioner外掛程式日誌和Kubelet日誌。

方式一:查看Flexvolume日誌(master1上執行)

執行get命令查看出錯的Pod。
kubectl get pod -n kube-system | grep flexvolume
執行log命令,查看出錯Pod的日誌。
kubectl logs flexvolume-4wh8s -n kube-system
kubectl describe pod flexvolume-4wh8s -n kube-system
說明 在Pod描述最後若干行是Pod運行狀態的描述,可以根據描述分析錯誤。

查看雲端硬碟、NAS及OSS驅動日誌。

執行以下命令查看Host節點上持久化的日誌。如果某個Pod掛載失敗,查看Pod所在的節點地址。

kubectl describe pod nginx-97dc96f7b-xbx8t | grep Node

預期輸出:

Node: cn-hangzhou.i-bp19myla3uvnt6zi****/192.168.XX.XX
Node-Selectors:  <none>

登入節點,查看雲端硬碟、NAS、OSS掛載的日誌。

ssh 192.168.XX.XX
ls /var/log/alicloud/flexvolume*

預期輸出:

flexvolume_disk.log  flexvolume_nas.log  flexvolume_o#ss.log

方式二:查看Provisioner外掛程式日誌(master1上執行)

執行get命令查看出錯的Pod。
kubectl get pod -n kube-system | grep alicloud-disk
執行log命令,查看出錯Pod的日誌。
kubectl logs alicloud-disk-controller-8679c9fc76-lq6zb -n kube-system
kubectl describe pod alicloud-disk-controller-8679c9fc76-lq6zb -n kube-system
說明 在Pod描述最後若干行是Pod運行狀態的描述,可以根據描述分析錯誤。

方式三:查看Kubelet日誌

如果某個Pod掛載失敗,查看Pod所在的節點地址。

kubectl describe pod nginx-97dc96f7b-xbx8t | grep Node

預期輸出:

Node: cn-hangzhou.i-bp19myla3uvnt6zi****/192.168.XX.XX
Node-Selectors:  <none>

登入節點,查看kubelet日誌。

ssh 192.168.XX.XX
journalctl -u kubelet -r -n 1000 &> kubelet.log
說明 -n的值表示期望看到的日誌行數。

上述為擷取Flexvolume、Provisioner、Kubelet錯誤記錄檔的方法,如果無法根據日誌修複狀態,可以附帶日誌資訊聯絡阿里雲支援人員。

如何解決Kubelet出現不受ACK管理的Pod日誌的問題?

Pod異常退出,導致資料卷掛載點在卸載過程中沒有清理乾淨,最終導致Pod無法刪除。Kubelet的GC流程對資料卷記憶體回收實現並不完善,目前需要手動或指令碼自動化實現垃圾掛載點的清理工作。

您需要在問題節點運行以下指令碼,對垃圾掛載點進行清理。
wget https://raw.githubusercontent.com/AliyunContainerService/kubernetes-issues-solution/master/kubelet/kubelet.sh
sh kubelet.sh