安装 primary-remote 多网络网格
在两个集群上以 primary-remote 多网络拓扑安装 Istio。
在本操作步骤中,CLUSTER1 是 East 集群,CLUSTER2 是 West 集群。East 集群是主集群,West 集群是远程集群。
您可以根据需要调整这些说明,以支持跨越两个以上集群的网格。
拓扑结构
跨集群边界的服务工作负载通过专用的东西向网关间接通信。每个集群中的网关必须能够被另一个集群访问。
cluster2 中的服务将通过相同的东西向网关访问 cluster1 中的控制平面。
前提条件
- 您已在组成网格的所有集群上安装了 Alauda Container Platform Networking 的 Multus 插件,且 kube-ovn 版本必须为 v4.1.5 或更高。
- 您拥有支持外部负载均衡器的两个集群。
WARNING
在 primary-remote 模式下,如果外部负载均衡器地址是 IPv6 的 IP,则当前不支持 primary-remote 部署。
- 您已在组成网格的所有集群上安装了 Alauda Service Mesh v2 Operator。
- 您已完成为多集群网格创建证书。
- 您已完成将证书应用于多网络多集群拓扑。
- 您已在本地安装了
istioctl,以便运行这些操作步骤。
操作步骤
创建定义要安装的 Istio 版本的 ISTIO_VERSION 环境变量
在 East 集群安装 IstioCNI
通过运行以下命令在 East 集群上安装 IstioCNI 资源:
在 East 集群安装 Istio
-
通过运行以下命令在 East 集群上创建
Istio资源:将以下
Istio资源保存为istio-external.yaml:- 这将使安装在 East 集群上的控制平面作为其他远程集群的外部控制平面。
使用
kubectl应用该Istio资源: -
通过运行以下命令等待控制平面返回“Ready”状态条件:
-
通过运行以下命令在 East 集群创建东西向网关:
WARNING对于运行 Linux 内核版本早于 4.11(例如 CentOS 7)的节点,网关安装前需要进行额外配置。
可选:将东西向网关部署到 Infra Nodes(点击展开)
运行以下命令以修改网关部署:
-
通过运行以下命令通过网关暴露控制平面,使 West 集群中的服务能够访问控制平面:
-
通过运行以下命令通过网关暴露应用服务:
在 West 集群安装 IstioCNI
通过运行以下命令在 West 集群上安装 IstioCNI 资源:
在 West 集群安装 Istio
-
通过运行以下命令保存运行在 East 集群的东西向网关的 IP 地址:
-
通过运行以下命令在 West 集群创建
Istio资源: -
通过运行以下命令为 West 集群中的
istio-system命名空间添加注解,使其由 East 集群的控制平面管理: -
通过运行以下命令在 East 集群安装远程 secret,以便访问 West 集群的 API 服务器:
-
通过运行以下命令等待
Istio资源返回“Ready”状态条件: -
通过运行以下命令在 West 集群创建东西向网关:
WARNING对于运行 Linux 内核版本早于 4.11(例如 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 发送 10 个请求到helloworld服务。预期结果是来自
helloworld-v1(East)和helloworld-v2(West)的混合响应,证明服务网格已跨集群边界路由请求。示例输出
-
从
West集群执行相同测试。同样,您应观察到来自服务的
v1和v2响应,确认 primary-remote 负载均衡无论请求来源于哪个集群均正常工作。
从开发环境中移除 primary-remote 拓扑
完成验证和实验后,您应拆除 primary-remote 配置,以清理开发环境并释放资源。
操作步骤
-
运行单条命令,从
East集群中删除所有 Istio 组件和示例应用。 -
运行对应命令,在
West集群执行相同清理操作。