Rancher 2.0 - 故障排除和修复“控制器管理器不健康问题”
Posted
技术标签:
【中文标题】Rancher 2.0 - 故障排除和修复“控制器管理器不健康问题”【英文标题】:Rancher 2.0 - Troubleshooting and fixing “Controller Manager Unhealthy Issue” 【发布时间】:2019-07-16 14:10:59 【问题描述】:我遇到了控制器管理器和调度程序没有响应的问题,这与我发现的 github 问题无关(rancher#11496、azure#173、...)
两天前,我们的 3 节点 HA 集群中的一个节点上的一个 POD 发生了内存溢出。在该 rancher webapp 无法访问之后,我们找到了受感染的 pod,并通过 kubectl 将其缩放为 0。但这需要一些时间,才能弄清楚一切。
从那时起,rancher webapp 工作正常,但控制器管理器和调度程序不断发出警报,无法正常工作。警报不一致,有时它们都在工作,有时它们的健康检查 url 拒绝连接。
NAME STATUS MESSAGE ERROR
controller-manager Unhealthy Get http://127.0.0.1:10252/healthz: dial tcp 127.0.0.1:10252: connect: connection refused
scheduler Healthy ok
etcd-0 Healthy "health": "true"
etcd-2 Healthy "health": "true"
etcd-1 Healthy "health": "true"
在受感染的节点上重新启动控制器管理器和调度程序无效。甚至用
重新加载所有组件docker restart kube-apiserver kubelet kube-controller-manager kube-scheduler kube-proxy
也没有效果。
有人可以帮我找出在不停机的情况下解决问题并解决此问题的步骤吗?
节点托管在 DigitalOcean 上的服务器上,每个服务器具有 4 个内核和 8GB RAM(Ubuntu 16、Docker 17.03.3)。
提前致谢!
【问题讨论】:
共享来自控制器 pod 的日志。它有帮助 感谢您的评论!你能帮我吗?我不知道也无法找到控制器 pod 是问题之一。kubectl get pods --namespace kube-system
未列出 controller-manager
或 scheduler
实际上kubectl get pods --all-namespaces
似乎没有列出任何类似于“控制器管理器”的东西,或者我真的不知道我在寻找什么......
它位于 kube-system 命名空间中
好吧,也许这就是问题所在.. kubectl get pods --namespace kube-system
返回这些 Pod canal-XXXXX
x3 cert-manager-XXXXX
kube-dns-XXXXX
kube-dns-autoscaler-XXXXX
metrics-server-XXXXX
metrics-server-XXXXX
rke-ingress-controller-deploy-job-XXXXX
rke-kubedns-addon-deploy-job-XXXXX
3@34rke-kubedns-addon-deploy-job-XXXXX
rke-kubedns-addon-deploy-job-XXXXX
8@34@98765@34@798 987654339@这对你有意义吗?
【参考方案1】:
首先要查看的是您的日志...您可以导出以下日志并附加它们吗?
/var/log/kube-controller-manager.log
控制器管理器是一个端点,所以你需要做一个“获取端点”。您可以运行以下命令吗:
kubectl -n kube-system get endpoints kube-controller-manager
和
kubectl -n kube-system describe endpoints kube-controller-manager
和
kubectl -n kube-system get endpoints kube-controller-manager -o jsonpath='.metadata.annotations.control-plane\.alpha\.kubernetes\.io/leader'
【讨论】:
我也有同样的问题 - 日志是空的。和下面的命令输出: $ kubectl -n kube-system get endpoints kube-controller-manager NAME ENDPOINTS AGE kube-controller-manager请在主节点中运行此命令
sed -i 's|- --port=0|#- --port=0|' /etc/kubernetes/manifests/kube-scheduler.yaml
sed -i 's|- --port=0|#- --port=0|' /etc/kubernetes/manifests/kube-controller-manager.yaml
systemctl restart kubelet
重启kubelet后,问题就解决了。
【讨论】:
最佳答案,运行良好,可能与此 issue 相关联以上是关于Rancher 2.0 - 故障排除和修复“控制器管理器不健康问题”的主要内容,如果未能解决你的问题,请参考以下文章