自動日志擷取
1. 在一台可以通過kubectl通路叢集的節點上下載下傳腳本:
curl -o diagnose_storage.sh
http://aliacs-k8s-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/public/diagnose/diagnose_storage.sh2. 執行腳本:
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錯誤日志的方法,如果無法根據日志修複狀态,可以附帶日志資訊聯系阿裡雲技術支援;