天天看點

K8S叢集存儲服務相關日志擷取指南

自動日志擷取

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錯誤日志的方法,如果無法根據日志修複狀态,可以附帶日志資訊聯系阿裡雲技術支援;