3

我遇到了控制器管理器和调度程序没有响应的问题,这与我发现的 github 问题无关(rancher#11496azure#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 内存(Ubuntu 16、Docker 17.03.3)。

提前致谢 !

4

2 回答 2

4

首先要查看的区域是您的日志...您可以导出以下日志并附加它们吗?

/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}'
于 2019-04-26T16:15:24.870 回答
1

请在主节点中运行此命令

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后,问题就解决了。

于 2021-07-02T20:15:46.990 回答