我有一个控制器管理器和调度器没有响应的问题,这与我发现的github问题(rancher#11496,azure#173,…)无关
两天前,我们的3节点HA集群中的一个节点上的一个POD导致内存溢出。在该牧场主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)。
谢谢!
答案 0 :(得分:0)
第一个要查看的区域是您的日志...可以导出以下日志并附加吗?
/var/log/kube-controller-manager.log
控制器管理器是一个端点,因此您需要执行“获取端点”。您可以运行以下命令吗?
kubectl -n kube-system获取端点kube-controller-manager
和
kubectl -n kube-system描述端点kube-controller-manager
和
kubectl -n kube-system获取端点kube-controller-manager -o jsonpath ='{。metadata.annotations.control-plane.alpha.kubernetes.io/leader}'
答案 1 :(得分:0)
请在主节点运行此命令
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后,问题就解决了。