1.查看k8集群各个组件的状态,kubectl get cs --all-namespaces
发现scheduler组件和controller-manager组件Unhealthy
2.报错表示连不上本地的10251和10252端口,那么首先查看其监听的端口是否存在
ss -ntlpu |grep 10251
ss -ntlpu |grep 10252
可知端口不存在。查看其后端服务是否存在
3.查看其后端服务是否存在,kubectl get pod -A |grep kube-system
可知状态正常Running
那么此时就怀疑是不是容器执行没有开启这两个端口的策略,在机器上找到scheduler和controller-manager的配置yaml(以kube-scheduler举例子)
4.检查组件yaml配置的端口(容器run时的参数配置了--port=0)。
find ./ -name "*scheduler*"
可知scheduler组件和controller-manager组件的yaml中默认禁用了非安全端口,故删除--port=0(两者都删除此配置项)。
5.重启kubelet,systemctl restart kubelet,在查看cs的状态
可知已修复