k8s 集群-master 主节点异常处理
一、查看节点状态
[root@hombd03 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
hombd04 NotReady <none> 7d4h v1.20.2
hombd05 NotReady <none> 7d4h v1.20.2
可以看到 master 节点有问题,看不到
二、在主节点查看状态
[root@homaybd03 ~]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
scheduler Unhealthy Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
etcd-1 Healthy {"health":"true"}
etcd-2 Healthy {"health":"true"}
[root@homaybd03 ~]#
使用 kubectl get cs
检查k8s组件状态时发现 scheduler unhealthy
。
2、通过 netstat -lntp|grep 10251
和 systemctl status kube-scheduler.service
命令检查发现服务启动了但是该端口没有启动。
netstat -lntp|grep 10251
systemctl status kube-scheduler.service
3、修改/etc/systemd/system/kube-scheduler.service配置文件,将 --port=0 \改为 --port=10251 \
4、重启服务
systemctl daemon-reload
systemctl restart kube-scheduler.service
5、重新检查服务,发现正常了
[root@hombd03 system]# netstat -lntp|grep 10251
tcp6 0 0 :::10251 :::* LISTEN 307/kube-scheduler
然后查看:
[root@hombd03 system]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}
etcd-2 Healthy {"health":"true"}
etcd-1 Healthy {"health":"true"}
[root@homaybd03 system]#
然后查看节点:
[root@hombd03 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
hombd04 Ready <none> 12d v1.20.2
hombd05 Ready <none> 12d v1.20.2
[root@hombd03 ~]#
重启之后,可以看到节点状态都正常了,咦,怎么看不到主节点master呢?,折腾了好久,还以为是主节点有问题,原来是主节点是没部署kubelet的,不具备服务调度能力。
为啥二进制安装的k8s集群,用kubectl get no查看不到master节点,只能看到worker节点
还有三个主节点
集群是正常的
回复:
恩 默认主节点是没部署kubelet的,不具备服务调度能力。一般生产上都是这么做的。如果想让主节点可具备调度能力,可以像worker节点一样去在master上部署一下相关服务,也就可以get no看到了
相关文章:
慕课网|为啥二进制安装的k8s集群,用kubectl get no查看不到master节点,只能看到worker节点
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)