Istio多集群调研

版本 1.12

概述

将多个集群纳于同一网格下管理。

部署模型

总共有4种基本部署结构:

  1. 相同网络下多控制面

    两集群处在相同网络下,各自部署一个控制面,istio资源只影响到本集群中的sidecar;因为处在相同网络,pod与pod之间可以直接通信(同上)。
    Istio多集群调研_第1张图片

  2. 相同网络下单控制面

    两集群处在相同网络下,其中一个集群共用另一集群的控制平面,在控制平面组所在集群创建istio资源可以下发到两个集群sidecar中;因为处在相同网络,pod与pod之间可以直接通信(网格istiod做了集群间的服务发现和流量打通工作,无须其他配置);但是要实现共享控制面,需要通过eastwest-gateway暴露主控制面的istiod服务。

Istio多集群调研_第2张图片

  1. 不同网络下多控制面

    两集群处在不同网络下,各自部署一个控制平面,istio资源只影响到本集群中的sidecar;因为处在不同网络,pod与pod之间不能直接通信,需要通过eastwest-gateway来互相暴露应用服务;无需使用eastwest-gateway暴露istiod服务。

Istio多集群调研_第3张图片

  1. 不同网络下单控制面

    两集群处在不同网络下,其中一个集群共用另一集群的控制平面,在控制平面组所在集群创建istio资源可以下发到两个集群sidecar中;因为处在不同网络,pod与pod之间不能直接通信,需要通过eastwest-gateway来互相暴露服务,并且需要在控制平面所在集群使用eastwest-gateway暴露主控制面的istiod的服务。
    Istio多集群调研_第4张图片

部署准备

以上4种部署结构,有些前置工作都是一样。

参考before you begin.

  1. 准备两个kubernetes集群,版本1.20, 1.21, 1.22, 1.23。

  2. 配置API Server Access

    每个集群中的 API 服务器必须能被网格中其他集群访问。 很多云服务商通过网络负载均衡器(NLB)开放 API 服务器的公网访问。 如果 API 服务器不能被直接访问,则需要调整安装流程以放开访问。 例如,用于多网络、主-从架构配置的 东西向网关 就可以用来开启 API 服务器的访问。

    我们做实验的机器每个集群apiserver 6443端口可以互相连通,无需额外工作。

  3. 配置kubeconfig及环境变量,参考环境变量 一节

    先参考Kubernetes 配置文件 配置(kubectl)对多个集群的访问。

    因为已有两个集群的kubeconfig文件,也可以直接将两者合并,形式如下:

    #合并后的kubeconfig
    apiVersion: v1
    clusters:
    - cluster: //来自cluster1 config
    ...
    - cluster: //来自cluster2 config
    
    contexts:
    - context: //来自cluster1 config
    ...
    - context: //来自cluster2 config
    ...
    users: 同上
    
    
    # 测验,可以看到有两个context存在
    kubectl  config get-contexts
    CURRENT   NAME                         CLUSTER    AUTHI

你可能感兴趣的:(服务网格,kubernetes,容器,云原生)