错误关键信息

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+端口呢?究竟是哪里有问题?

欢迎和我说说你的思路 ~

问题原因及后续专家排查思路会放到下期,敬请期待。

更多推荐