背景:运行的好好的k8s集群,某天断电,发现一个节点炸了,显示NotReady
kubectl get nodes
可以确定 k8s-node1是真的炸了,那么如何查找问题呢? 我们用它:journalctl工具是CentOS-7才有的工具
Systemd 统一管理所有 Unit 的启动日志。带来的好处就是 ,可以只用journalctl一个命令,查看所有日志(内核日志和 应用日志)。日志的配置文件/etc/systemd/journald.conf journalctl用法: 查看所有日志(默认情况下 ,只保存本次启动的日志): journalctl 查看内核日志(不显示应用日志): journalctl -k 查看系统本次启动的日志: journalctl -b 查看上一次启动的日志(需更改设置): 在该[Journal]部分下,将该Storage=选项设置为“persistent”以启用持久记录: vim /etc/systemd/journald.conf . . . [Journal] Storage=persistent 查看httpd服务的日志信息:
我们使用的是:
追踪日志 要主动追踪当前正在编写的日志,大家可以使用-f标记。同样功能类似为tail -f,只要不终止,会一直监控 journalctl -f 也许最有用的过滤方式是你感兴趣的单位。我们可以使用这个-u选项来过滤我们可以使用这个-u选项来过滤 journalctl -u 所以我们最终使用的命令是: journalctl -f -u kubelet!
最后重新启动。
#重启docker
systemctl daemon-reload systemctl restart docker
#重启kubelet
systemctl restart kubelet.service
这次的原因是断电导致的集群某个节点挂掉。
可以看出kubernetes容灾能力很强,重启docker后,node节点上部署的容器也在逐步恢复。