Microk8s节点加入失败:待加入节点主机名无法解析为对应IP,拒绝加入(400)
解决MicroK8s Join Worker节点时主机名无法解析的400错误
遇到这个“待加入节点的主机名无法解析为对应IP,拒绝加入(400)”的报错别慌,这本质是集群控制节点和待加入的worker节点之间无法通过主机名正确解析到对方的IP地址,下面是几个实操有效的解决办法:
方法1:手动配置/etc/hosts主机名映射
这是最直接的解决方案,强制让两个节点互相识别对方的主机名和IP:
- 在控制节点上执行以下命令获取自身IP和主机名:
# 获取控制节点IP hostname -I # 获取控制节点主机名 hostname - 在worker节点上同样执行上述命令,拿到它的IP和主机名。
- 编辑控制节点的
/etc/hosts文件,添加worker节点的IP和主机名映射:sudo nano /etc/hosts # 在文件末尾添加一行,替换成实际的worker IP和主机名 192.168.1.101 k8s-worker-01 - 编辑worker节点的
/etc/hosts文件,添加控制节点的IP和主机名映射:sudo nano /etc/hosts # 在文件末尾添加一行,替换成实际的控制节点IP和主机名 192.168.1.100 k8s-master-01 - 保存退出后,重新在worker节点执行
microk8s join命令即可。
方法2:用IP生成join命令,绕开主机名解析
如果不想修改hosts文件,可以让控制节点直接生成基于IP的join命令:
- 在控制节点执行:
# 替换成你的控制节点实际IP microk8s add-node --advertise-address 192.168.1.100 - 此时生成的join命令会包含控制节点的IP而非主机名,比如类似这样:
microk8s join 192.168.1.100:25000/abcdef123456 --worker - 在worker节点执行这个带IP的join命令,就能避免主机名解析问题。
方法3:检查节点间DNS解析与连通性
如果上面的方法没解决,先排查基础网络问题:
- 在控制节点ping worker节点的主机名,看是否能返回正确的IP:
ping k8s-worker-01 -c 3 - 在worker节点ping控制节点的主机名,同样验证解析是否正常。
- 如果ping不通,说明DNS配置有问题,要么修复集群的DNS服务,要么回到方法1用hosts映射兜底。
方法4:确认防火墙规则未阻断通信
有时候防火墙导致的通信异常也可能被误报为解析错误,临时关闭防火墙测试:
- 控制节点和worker节点都执行(以ufw为例):
sudo ufw disable - 测试join命令是否成功,成功后再重新配置防火墙规则,开放MicroK8s所需的端口(比如25000、16443等)。
内容的提问来源于stack exchange,提问作者nobody1879
相关产品推荐
相关产品推荐

