概念

先同步下术语:

  • 集群:共享APIServer的节点集合

    基于istio常见方案

    多控制面
    • 两套istio控制面,不共享原数据,共享根CA
    • 容器网络不需要打通,跨集群访问通过istio gateway,双方集群都需要,对端集群暴露一个公网ip
    • 两个集群Pod地址范围可以重叠,双方集群互不干扰
    • 依赖于DNS解析,.cluster.local解析为本集群,{svc_name}.{namespace}.global访问其他集群。

DNS具体咋解析呢?

  • 用户需要在集群中部署istiocoredns
  • 用户在istio中加ServiceEntry,里面配置个不存在的ip,就会导致dns错误
  • 用户需要在CoreDNS中加个配置,将错误ip的.global后缀的域名丢给istiocoredns解析

总体来说,配置较为复杂

单控制面(VPN直连)

  • 一个控制面pilot负责将所有子集群的APIServer里的Service,Node,Pod收集起来,统一用xDS分发。
  • 要求扁平网络

    单控制面(集群感知)

  • 要求单控制面能访问所有集群的APIServer,然后控制面下发IstioGateway地址

  • 然后sidecar将其他集群的服务地址改为网关地址

    集群联邦

    https://github.com/kubernetes-sigs/kubefed
    开源k8s集群联邦。能通过主集群的一组API协调一组集群的配置。
    image.png