安装主集群-远程集群多网络网格
在两个集群上以主集群-远程集群多网络拓扑安装 Istio。
在此操作步骤中,CLUSTER1 是 East 集群,CLUSTER2 是 West 集群。East 集群是主集群,West 集群是远程集群。
您可以调整这些说明,以适用于跨越两个以上集群的网格。
拓扑
跨集群边界的服务工作负载通过专用的东西向流量网关间接通信。 每个集群中的网关必须可从另一个集群访问。
cluster2 中的服务将通过同一个东西向网关访问 cluster1 中的控制平面。
前提条件
- 您已在组成网格的所有集群中安装 Alauda Container Platform Multi-Network(以前称为 Alauda Container Platform Networking for Multus)插件,并且 kube-ovn 必须为 v4.1.5 或更高版本。
- 您可以访问两个支持外部负载均衡器的集群。
WARNING
在主集群-远程集群模式下,如果外部负载均衡器地址为 IP 地址且为 IPv6,则在 Alauda Service Mesh v2.1.2 之前的版本中不支持主集群-远程集群部署。
- 您已在组成网格的所有集群中安装 Alauda Service Mesh v2 Operator。
- 您已完成为多集群网格创建证书。
- 您已完成将证书应用于多集群拓扑。
- 您已在本地安装
istioctl,以便用于执行这些操作步骤。
操作步骤
创建用于定义要安装的 Istio 版本的 ISTIO_VERSION 环境变量
在 East 集群上安装 IstioCNI
运行以下命令,在 East 集群上安装 IstioCNI 资源:
在 East 集群上安装 Istio
-
运行以下命令,在 East 集群上创建
Istio资源:将以下
Istio资源保存到istio-external.yaml:- 这使得安装在 East 集群上的控制平面能够作为其他远程集群的外部控制平面。
- 将
spec.values.global.proxy.seccompProfile.type设置为RuntimeDefault,可以使注入的 sidecar 满足RestrictedPod Security Admission 配置文件的要求。由于此控制平面还会注入远程 West 集群中的工作负载,因此此设置适用于两个集群。有关更多信息,请参阅 Pod Security Admission。
使用
kubectl应用Istio资源: -
运行以下命令,等待控制平面返回“Ready”状态条件:
-
运行以下命令,在 East 集群上创建东西向网关:
WARNING对于运行 4.11 之前 Linux kernel 版本的节点(例如 CentOS 7),必须在安装网关前完成额外配置。
可选:将东西向网关部署到 Infra Nodes(点击展开)
运行以下命令修补网关部署:
-
运行以下命令,通过网关暴露控制平面,使 West 集群中的服务可以访问该控制平面:
-
运行以下命令,通过网关暴露应用服务:
在 West 集群上安装 IstioCNI
运行以下命令,在 West 集群上安装 IstioCNI 资源:
在 West 集群上安装 Istio
-
运行以下命令,保存运行在 East 集群中的东西向网关的 IP 地址:
-
运行以下命令,在 West 集群上创建
Istio资源: -
运行以下命令,为 West 集群中的
istio-system命名空间添加注释,使其由 East 集群中的控制平面管理: -
运行以下命令,在 East 集群上安装远程 secret,为访问 West 集群上的 API server 提供权限:
-
运行以下命令,等待
Istio资源返回“Ready”状态条件: -
运行以下命令,在 West 集群上创建东西向网关:
WARNING对于运行 4.11 之前 Linux kernel 版本的节点(例如 CentOS 7),必须在安装网关前完成额外配置。
可选:将东西向网关部署到 Infra Nodes(点击展开)
运行以下命令修补网关部署:
NOTE由于 West 集群使用远程配置文件安装,因此在 East 集群上暴露应用服务会同时在两个集群的东西向网关上暴露这些服务。
验证 primary-remote 拓扑
要确认 primary-remote 拓扑正常运行,请在两个独立的 Alauda Container Platform 集群上部署示例应用。目标是建立一个基准环境,以便生成并观测跨集群流量。
操作步骤
首先,在 East 集群上部署所需的示例应用。
此集群将托管 helloworld 服务的 v1 版本。
-
在
East集群上为这些应用创建专用命名空间。 -
应用所需标签,为
sample命名空间启用 Istio sidecar 自动注入。 -
部署
helloworld应用组件。a. 首先,建立
helloworld服务端点。b. 然后,部署
helloworld应用的v1实例。 -
部署
sleep应用,用作发送测试请求的客户端。 -
暂停操作,直到
helloworld-v1部署完全可用且就绪。 -
同样,等待
sleep部署报告Ready状态。
在 West 集群上重复上述设置。
此集群将托管 helloworld 服务的 v2 版本。
-
在
West集群上创建sample命名空间。 -
同样为此命名空间启用 Istio sidecar 注入。
-
部署
helloworld应用组件。a. 在
West集群上创建通用的helloworld服务端点。b. 部署
helloworld应用的v2实例。 -
在
West集群上部署客户端sleep应用。 -
等待
helloworld-v2部署完全可用。 -
最后,确保
West集群上的sleep部署已就绪。
验证集群间的流量
在两个集群上部署并运行应用后,下一步是发送请求,并确认流量是否在整个服务网格中正确进行负载均衡。
-
从
East集群中的一个 Pod 向helloworld服务发送一系列 10 个请求。预期结果是收到来自
helloworld-v1(East)和helloworld-v2(West)的混合响应,这表明服务网格正在跨集群边界路由请求。示例输出
-
在
West集群上执行相同的测试。同样,你应该能观察到来自该服务
v1和v2的响应,这确认了无论请求来自哪个集群,primary-remote 负载均衡都能正常工作。
从开发环境中移除 primary-remote 拓扑
完成验证和实验后,你应拆除 primary-remote 配置,以清理开发环境并释放资源。
操作步骤
-
执行一条命令,从
East集群中移除所有 Istio 组件和示例应用。 -
运行相应的命令,在
West集群上执行相同的清理操作。