自动日志获取
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错误日志的方法,如果无法根据日志修复状态,可以附带日志信息联系阿里云技术支持;