自动日志获取

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐