背景环境信息
- 操作系统 Debian 10 buster
- 1个控制节点(192.168.1.2) + 2个Worker节点(192.168.1.[2、3])
- Kubernetes版本为最新的1.27.3
- 容器运行时选containerd
- 网络插件CNI为Calico
- Pod子网10.244.0.0/16
kubeadm init初始化集群很顺利,按照教程配置.kube目录,拷贝配置文件,安装网络插件,部署nginx也能访 问,但就是在启动Nginx时发现配置转发的集群内主机名找不到,这还是同一个Namespace下的。
初步判断可能是集群DNS问题,启动busybox进入命令行模式,看了一下/etc/resolv.conf没问题,直接ping其它pod IP发现ping不通,ping互联网IP发现也ping不通,这完全就是无网的状态啊~
这情况有点不对,一顿折腾之后问题解决,核心关键点就在于这三台虚机节点我曾经用kubeadm初始化过一个集群,但我在kubeadm reset时,没有根据提示完成最后关键遗留操作
执行下ipvsadm --clear,如果没有这个命令就
apt install ipvsadm
安装一下删除
/etc/cni/net.d
这个目录如果有
$HOME/.kube
这个目录就删除,通常Worker节点都没有这个目录清除iptables规则
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
,这个命令是用于配置Linux操作系统中的iptables防火墙规则:iptables -F
: 这个命令用于清除所有的防火墙规则,包括所有的链(chains)中的规则。-F
选项表示"flush"(清除)规则。iptables -t nat -F
: 这个命令用于清除"nat"表中的规则,"nat"表用于网络地址转换(Network Address Translation,NAT)。-t nat
选项表示指定使用"nat"表。iptables -t mangle -F
: 这个命令用于清除"mangle"表中的规则,"mangle"表用于修改数据包的特定字段。-t mangle
选项表示指定使用"mangle"表。iptables -X
: 这个命令用于删除用户自定义的链(chains)。-X
选项表示删除链。
通过这个命令组合,首先清除了所有防火墙规则,然后清除了"nat"表和"mangle"表中的规则,并最后删除了所有用户自定义的链。这样做可以将防火墙规则恢复到默认状态,以便重新配置规则。
经过以上4个关键步骤,再推荐一下重启一下节点,然后重新kubeadm init初始化集群,问题解决~