You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让本地两个minikube集群实现跨集群Pod通信?

双minikube集群跨Pod通信及DNS访问的手动路由解决方案

1. 收集集群网络信息

分别获取两个集群的Pod子网和节点IP:

  • 针对集群A(profile名称假设为clusterA):
    • 执行minikube ssh -p clusterA -- ip route,找到开头为Pod网段的路由条目(例如10.244.0.0/24 dev cni0 ...),记录这个子网(如10.244.0.0/24)
    • 执行minikube ip -p clusterA获取集群A的节点IP(例如192.168.49.2)
  • 针对集群B(profile名称假设为clusterB):
    • 执行minikube ssh -p clusterB -- ip route记录Pod子网(如10.244.1.0/24)
    • 执行minikube ip -p clusterB获取集群B的节点IP(例如192.168.49.3)

2. 手动添加跨集群路由

在两个集群的节点上添加指向对方Pod子网的路由:

  • 给集群A节点添加集群B的Pod子网路由:
    minikube ssh -p clusterA -- sudo ip route add <集群B的Pod子网> via <集群B的节点IP>
    
    示例:minikube ssh -p clusterA -- sudo ip route add 10.244.1.0/24 via 192.168.49.3
  • 给集群B节点添加集群A的Pod子网路由:
    minikube ssh -p clusterB -- sudo ip route add <集群A的Pod子网> via <集群A的节点IP>
    
    示例:minikube ssh -p clusterB -- sudo ip route add 10.244.0.0/24 via 192.168.49.2

3. 解决跨集群DNS访问问题

临时方案(单Pod生效)

在需要访问对方DNS的Pod中手动添加hosts条目:

  • 集群A的Pod访问hello.dnsb:
    kubectl exec -it <PodA名称> -- echo "<集群B的Ingress IP> hello.dnsb" >> /etc/hosts
    
  • 集群B的Pod访问hello.dnsa:
    kubectl exec -it <PodB名称> -- echo "<集群A的Ingress IP> hello.dnsa" >> /etc/hosts
    

持久方案(全集群生效)

修改集群的CoreDNS配置,添加自定义域名解析:

  1. 编辑CoreDNS的ConfigMap:
    kubectl edit configmap coredns -n kube-system
    
  2. 在Corefile块中添加对方域名的解析规则(以集群A添加hello.dnsb为例):
    hello.dnsb:53 {
        errors
        cache 30
        forward . <集群B的节点IP>
    }
    
  3. 重启CoreDNS使配置生效:
    kubectl rollout restart deployment coredns -n kube-system
    

集群B同理添加hello.dnsa的解析规则。

4. 验证连通性

  • 跨Pod通信验证:在集群A的Pod中ping集群B的Pod IP
    kubectl exec -it <PodA名称> -- ping <PodB的IP>
    
  • DNS访问验证:在集群A的Pod中访问对方Ingress域名
    kubectl exec -it <PodA名称> -- curl hello.dnsb
    

内容的提问来源于stack exchange,提问作者user1870400

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:21:02