如何解决Minikube两个Kubernetes集群间Ingress访问被拒绝问题?
跨Minikube集群访问Ingress的问题解决步骤
1. 验证集群间基础网络连通性
- 从目标集群的任意Pod中,ping另一个集群的网桥IP(比如从virbr1网段的Pod ping
192.168.50.1):kubectl exec -it <你的Pod名称> -- ping 192.168.50.1 - 如果ping不通,先排查主机防火墙是否拦截了跨网桥流量,暂时关闭防火墙测试(比如
sudo systemctl stop firewalld或sudo ufw disable)。
2. 确认Ingress的实际监听状态
- 获取每个集群的Minikube节点IP:
minikube -p <集群Profile名称> ip - 在主机上测试Ingress端口的连通性(以80端口为例):
nc -zv <Minikube节点IP> 80 - 再从另一个集群的Pod中执行同样的
nc命令,确认端口是否可达。
3. 为集群节点添加跨网段路由
Minikube节点默认没有到另一个集群网段的路由,需要手动添加:
- 进入第一个集群的节点:
minikube -p <profile1> ssh - 添加到第二个集群网段的路由:
sudo ip route add 192.168.50.0/24 via 192.168.39.1 - 同理,进入第二个集群节点,添加到第一个集群网段的路由:
minikube -p <profile2> ssh sudo ip route add 192.168.39.0/24 via 192.168.50.1
4. 调整防火墙规则(可选,若关闭防火墙后正常)
如果关闭防火墙后连通性恢复,添加永久允许规则:
- 以firewalld为例:
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.39.0/24" destination address="192.168.50.0/24" accept' --permanent sudo firewall-cmd --reload - 以ufw为例:
sudo ufw allow from 192.168.39.0/24 to 192.168.50.0/24 sudo ufw allow from 192.168.50.0/24 to 192.168.39.0/24
5. 配置Ingress域名解析
如果使用域名访问Ingress,需在Pod内配置hosts映射:
- 进入Pod编辑hosts文件:
kubectl exec -it <你的Pod名称> -- bash -c 'echo "<目标集群MinikubeIP> <Ingress域名>" >> /etc/hosts' - 之后再尝试访问Ingress域名。
内容的提问来源于stack exchange,提问作者Jesse Adelman
相关产品推荐
相关产品推荐

