共计 1166 个字符,预计需要花费 3 分钟才能阅读完成。
最近在弄 K8S 集群,3 个 master 节点组成,使用的 kuboard(很适合我这种小白)作为图形界面。在 kuboard 中看到很多 controller 节点分片更新报错。截图如下:
大致意思就是:更新节点时某个服务的节点找不到了。网上基本找了一圈也没找到类似问题和解决办法,这里总结下。
分析解决:
1. 请注意 controller,这个关键字,应该是 controller-manager 这个管理控制组件,那就先看下 controller-manager,执行:
kubectl get pods -n kube-system -o wide
controller-manager 居然累计重启已经 23 次了,会不会是因为重启导致找不到节点呢?
2. 带着疑问,那接下来想的是为何导致重启呢?执行:
kubectl describe pods/kube-controller-manager-k8s-master3 -n kube-system
仔细看了遍 describe 会详细记录关于 pod 的信息,也能看到重启次数,我这里是想找下最后一次重启时间,然后再去看下对应时间的日志,到底是什么原因重启。由于 pod 自动重启恢复正常看不到具体错误日志。同时,注意到 controller-manager 是有 Liveness 存活检查的,每 10S 检查一次,到这里大概能猜测到 kuboard 里面经常报更新节点找不到的错误了(还有很多正常的更新节点日志输出),那个频繁更新节点,应该就是定时健康检查。
3. 那接下来想看具体日志,执行:
kubectl logs -f kube-controller-manager-k8s-master3 -n kube-system --tail 100
可是这已经是重启后的日志,截取部分更新节点报错的日志,我是真没看出到底是啥问题,要说问题可能是 apiserver 接口请求超时。这个日志看起来真费劲, 日志级别也没有,而且上次重启日志我该如何查看呢? 到这里没办法继续往下排查了。
4. 然后再看了下几个节点,是不是都有这个报错,无意中发现其中一个节点并没有报这个错误。对比下该节点的系统版本和内核。发现系统版本为:centos 7.7,内核版本为 4.4 . 再看报错节点系统版本为:7.3 内核版本:4.4。去搜了下 kuboard 文档,推荐用 centos7.6 以上。于是删除节点,更新系统版本到最新 7.8(注意更新系统版本后,系统内核是默认的 3.10,再升级下内核到 4.4。否则还会遇到一些问题,坑比较多)。Error updating Endpoint 更新节点报错暂时没有了,就这样因为系统内核问题导致这个更新报错。
总结
K8S 系统版本推荐升级到 7.6 以上,内核版本当然也是推荐 4.4.
对于重启的日志我真没看出来到底怎么回事,如果有同学遇到欢迎讨论提出你的问题。
后续遇到问题再陆续总结分享,谢谢大家~