背景:運行的好好的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節點上部署的容器也在逐步恢復。
