K8S叢集儲存服務相關日誌獲取指南

kanjunbao發表於2018-09-14

自動日誌獲取

1. 在一臺可以通過kubectl訪問叢集的節點上下載指令碼:

curl -o diagnose_storage.sh http://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/diagnose/diagnose_storage.sh

2. 執行指令碼:

sh diagnose_storage.sh logs podID nameSpaceName

其中:
podID為出問題的pod ID;
nameSpaceName為出問題pod的名詞空間;

3. 檢視日誌:

在當前目錄下面會生成日誌檔案:

一個logs目錄和對其打包的檔案;
logs下面包括:flexvolume、disk 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-bp19myla3uvnt6zihejb/192.168.247.85
Node-Selectors:  <none>
# 登陸節點,檢視日誌:
# ssh 192.168.247.85
# ls /var/log/alicloud/flexvolume*
flexvolume_disk.log  flexvolume_nas.log  flexvolume_oss.log

可以看到雲盤、nas、oss掛載的日誌;

provsioner外掛日誌(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-bp19myla3uvnt6zihejb/192.168.247.85
Node-Selectors:  <none>
# 登陸節點,檢視kubelet日誌:
# ssh 192.168.247.85
# journalctl -u kubelet -r -n 1000 &> kubelet.log
-n的值表示期望看到的日誌行數;

上述為獲取flexvolume、provsioner、Kubelet錯誤日誌的方法,如果無法根據日誌修復狀態,可以附帶日誌資訊聯絡阿里雲技術支援;


相關文章