Kubernetes 3Master+Haproxy+Keepalived搭建过程中的排错思路思考 问题篇(上)
错误关键信息
kubeadm init报错
This error is likely caused by:
- The kubelet is not running
- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)
kubelet报错:
"Error getting node" err="node \"master01\" not found"
"Error getting node" err="node \"master01\" not found"
"Error getting node" err="node \"master01\" not found"
环境说明
本环境是基于Kubernetes 1.23.0
|
IP地址 |
实现说明 | |
|
master01 |
10.1.101.69 |
基于Haporxy做负载均衡 |
|
master02 |
10.1.101.66 | |
|
master03 |
10.1.101.67 | |
|
master-vip |
10.1.101.65 |
基于Keepalived做VIP |
|
node01 |
10.1.101.68 |
|
监听端口 |
负载均衡 | |
|
Haproxy |
16443 |
master01:6443 |
|
master02:6443 | ||
|
master03:6443 |
当前已做完前期系统配置,K8S所需要的依赖包安装,kubeadm相关安装包均已安装,Haproxy和Keepalived已安装完毕并启动。
接下来是要对master01节点进行初始化~
问题出现
kubeadm init --apiserver-advertise-address=10.1.101.69 --apiserver-bind-port=6443 --control-plane-endpoint=10.1.101.65:16443 --kubernetes-version v1.23.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=172.17.0.0/16 --v=5

结果出现问题:

首先提取一下关键信息:
This error is likely caused by:
- The kubelet is not running
- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)
这里有两个关键信息
1.kubelet出问题
2.cgroup可能有问题
这两个方向,也就是接下来排查的思路要从这两个地方入手。
方向1)kubelet
首先我们先排查kubelet
systemctl status kubelet -l

果然这里的kubelet是有问题的,我们提取关键信息:
"Error getting node" err="node \"master01\" not found"
"Error getting node" err="node \"master01\" not found"
"Error getting node" err="node \"master01\" not found"
这里说一下排查思路
1.kubelet自身问题
2.DNS解析问题(域名 + not found)
3.VIP+端口 问题
于是开始在网上百度

这里基本上结果都是基于已经生成集群的情况下出现该问题,所以基本没什么用。这里在查就不太好进行
于是看看域名解析有没有问题。
首先cat一下hosts文件,再使用ping 命令试一下

结果没啥问题,感觉DNS这块应该问题不大。
方向2)Cgroup
查看一下docker资源隔离的驱动是systemd,应该问题也不大。

单节点验证安装
接下来我尝试改动主控节点IP地址,做一个单节点的安装实验。

因为我这个安装包之前做个单节点的安装,所以可以100%确认安装包是没有问题的,版本也是没有问题的。因此我尝试改动了一下--control-plane-endpoint的IP地址,想再次确认一下我之前操作是否有问题,如果有问题,那么单节点的安装会失败。结果单节点安装成功了。
此时,可以得到三个重要信息。
1)我之前的kubernetes准备环境操作没有问题
2)kubelet本身没有问题
3)kubelet找不到VIP及VIP端口这个是导致失败的主要原因
所以接下去的排查方向,应该围绕3)展开
与此同时,我也把这个结果咨询了一下朋友

所以我再排查一下我的HA,KEEP,还有KUBELET这三个组件。(其实到目前为止,排查思路是正确的)
Haproxy及Keepalived排查
首先是HA,看一下haproxy.cfg文件
/etc/haproxy/haproxy.cfg

感觉没啥问题。再看看Haproxy的状态

感觉像是没有加载配置文件,或者没生效。
再看一下keepalived.conf
/etc/keepalived/keepalived.conf

感觉没啥问题,在看一下keepalived状态

keepalived状态像是没有加载配置文件。于是做一波加载的操作。
systemctl daemon-reload && systemctl restart keepalived.service && systemctl restart haproxy.service
![]()
再看一下输出状态,和之前有明显不同。

再看一下VIP

也都配到了ens192上,然后再本地ping一下 ping 10.1.101.65,也没有问题,可以通。

端口排查
查看Haproxy的16443端口是否打开,并监听
netstat -tnulp|grep 6443
看结果好像也没什么问题。
到此,我的思路用完了。所以为什么Kubelet找不到VIP+端口呢?究竟是哪里有问题?
欢迎和我说说你的思路 ~
问题原因及后续专家排查思路会放到下期,敬请期待。
更多推荐

所有评论(0)