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 10251systemctl status kube-scheduler.service 命令检查发现服务启动了但是该端口没有启动。

netstat -lntp|grep 10251
systemctl status kube-scheduler.service

3、修改/etc/systemd/system/kube-scheduler.service配置文件,将 --port=0 \改为 --port=10251 \
file

file

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

file

然后查看:

[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节点
file
还有三个主节点
集群是正常的

回复:
恩 默认主节点是没部署kubelet的,不具备服务调度能力。一般生产上都是这么做的。如果想让主节点可具备调度能力,可以像worker节点一样去在master上部署一下相关服务,也就可以get no看到了


相关文章:
慕课网|为啥二进制安装的k8s集群,用kubectl get no查看不到master节点,只能看到worker节点

为者常成,行者常至