Istio多集群调研

本文详细介绍了Istio在多集群环境下的部署模型,包括相同和不同网络下的多主、单控制面配置,强调了istio如何打通集群间的流量,以及验证部署和问题诊断的方法。重点讨论了无需额外配置serviceEntry等来实现服务间连通性,并指出多集群理解中的常见误区。
摘要由CSDN通过智能技术生成

版本 1.12

概述

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

部署模型

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

  1. 相同网络下多控制面

    两集群处在相同网络下,各自部署一个控制面,istio资源只影响到本集群中的sidecar;因为处在相同网络,pod与pod之间可以直接通信(同上)。
    在这里插入图片描述

  2. 相同网络下单控制面

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

在这里插入图片描述

  1. 不同网络下多控制面

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

在这里插入图片描述

  1. 不同网络下单控制面

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

部署准备

以上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    AUTHINFO          NAMESPACE
              kubernetes-admin@kubernetes  kubernetes kubernetes-admin   
    *         minikube                     minikube   minikube          default
    

    然后需要配置CTX_CLUSTER1,CTX_CLUSTER2环境变量以供后续部署使用:

    export CTX_CLUSTER1=<your cluster1 context>
    export CTX_CLUSTER2=<your cluster2 context>
    
  4. 配置网格多集群间信任关系。参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个示例 Istio集群配置脚本: ``` #!/bin/bash # 定义集群名称 PRIMARY_CLUSTER_NAME=primary SECONDARY_CLUSTER_NAME=secondary # 定义集群地址 PRIMARY_CLUSTER_ADDRESS=10.10.1.10 SECONDARY_CLUSTER_ADDRESS=10.10.2.10 # 安装 Istio istioctl install --set profile=demo # 配置第一个集群 kubectl create namespace istio-primary kubectl label namespace istio-primary istio-injection=enabled istioctl manifest generate --set profile=demo \ --set values.global.remotePilotAddress=${SECONDARY_CLUSTER_ADDRESS}:15012 \ --set values.global.remotePolicyAddress=${SECONDARY_CLUSTER_ADDRESS}:15004 \ > primary.yaml kubectl apply -f primary.yaml -n istio-primary # 配置第二个集群 kubectl create namespace istio-secondary kubectl label namespace istio-secondary istio-injection=enabled istioctl manifest generate --set profile=demo \ --set values.global.remotePilotAddress=${PRIMARY_CLUSTER_ADDRESS}:15012 \ --set values.global.remotePolicyAddress=${PRIMARY_CLUSTER_ADDRESS}:15004 \ > secondary.yaml kubectl apply -f secondary.yaml -n istio-secondary # 配置双向网格 istioctl x create-remote-secret --context=${PRIMARY_CLUSTER_NAME} \ --name=${SECONDARY_CLUSTER_NAME} | kubectl apply -f - -n istio-primary istioctl x create-remote-secret --context=${SECONDARY_CLUSTER_NAME} \ --name=${PRIMARY_CLUSTER_NAME} | kubectl apply -f - -n istio-secondary ``` 这个脚本将创建两个 Kubernetes 集群,一个主集群和一个次要集群。它将在每个集群安装 Istio,并配置远程 Pilot 和 Mixer 以实现双向网格。请注意,此示例使用 `istioctl` 命令行工具来生成 Istio 配置文件,并将其应用于每个集群
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值