集群互联(Alpha)
支持在网络模式相同且均为 Kube-OVN 的集群之间配置集群互联,以实现集群中 Pod 的相互访问。Cluster Interconnect Controller 是 Kube-OVN 提供的扩展组件,负责收集不同集群之间的网络信息,并通过下发路由连接多个集群的网络。
目录
前提条件已构建多节点 Kube-OVN 互联控制器部署 DeploymentPodman 和 Containerd 部署在 Global 集群中部署集群互联控制器加入集群互联相关操作更新互联集群的网关节点信息退出集群互联清理互联集群残留卸载互联集群配置集群网关高可用前提条件
-
不同集群的子网 CIDR 不能相互重叠。
-
需要准备一组可由各集群的 kube-ovn-controller 通过 IP 访问的机器,用于部署跨集群互联的控制器。
-
每个集群都需要准备一组可由该集群的 kube-ovn-controller 通过 IP 访问的机器,后续将这些机器用作跨集群互联的网关节点。
-
此功能仅适用于默认 VPC,用户自定义 VPC 无法使用互联功能。
已构建多节点 Kube-OVN 互联控制器
有三种可用的部署方式:部署 Deployment(平台 v3.16.0 及更高版本支持)、Podman 部署和 Containerd 部署。
部署 Deployment
注意:平台 v3.16.0 及更高版本支持此部署方式。
操作步骤
-
在集群的一个控制平面节点上执行以下命令,从 kube-ovn-controller Pod 中获取
install-ic-server.sh安装脚本。 -
打开当前目录中的脚本文件,并按如下方式修改参数。
修改后的参数配置如下:
-
保存脚本文件,并使用以下命令执行。
Podman 和 Containerd 部署
-
选择任意集群中的三个或更多节点来部署 Interconnected Controller。本例准备了三个节点。
-
选择任意节点作为 Leader,并根据不同的部署方式执行以下命令。
注意:配置前,请检查
/etc下是否存在 ovn 目录。如果不存在,请使用命令mkdir /etc/ovn创建该目录。-
容器部署命令 注意:执行命令
podman images | grep ovn获取 Kube-OVN 镜像地址。-
Leader 节点的命令:
-
其他两个节点的命令:
-
-
Containerd 部署命令
注意:执行命令
crictl images | grep ovn获取 Kube-OVN 镜像地址。-
Leader 节点的命令:
-
其他两个节点的命令:
-
-
在 Global 集群中部署集群互联控制器
在 global 的任意控制平面节点中,根据注释替换以下参数,并执行以下命令创建 ConfigMap 资源。
注意:为确保正常运行,不允许修改 global 上名为 ovn-ic 的 ConfigMap。如果需要更改任何参数,请删除该 ConfigMap,正确重新配置后再应用 ConfigMap。
加入集群互联
将网络模式为 Kube-OVN 的集群加入集群互联。
前提条件
集群中的已创建子网、ovn-default 和加入子网不得与集群互联组中的任何集群网段冲突。
操作步骤
-
在左侧导航栏中,单击集群 > 集群的集群。
-
单击要加入集群互联的集群名称。
-
在右上角单击选项 > 集群互联。
-
单击加入集群互联。
-
为集群选择一个网关节点。
-
单击加入。
相关操作
更新互联集群的网关节点信息
更新已加入集群互联组的集群网关节点信息。
操作步骤
-
在左侧导航栏中,单击集群 > 集群的集群。
-
单击要更新网关节点信息的集群名称。
-
在右上角单击操作 > 集群互联。
-
对于要更新网关节点信息的集群,单击更新网关节点。
-
重新为集群选择网关节点。
-
单击更新。
退出集群互联
已加入集群互联组的集群退出集群互联。退出后,该集群的 Pod 将与外部集群的 Pod 断开连接。
操作步骤
-
在左侧导航栏中,单击集群 > 集群的集群。
-
单击要停用的集群名称。
-
在右上角单击选项 > 集群互联。
-
对于要退出的集群,单击退出集群互联。
-
正确输入集群名称。
-
单击退出。
清理互联集群残留
如果删除集群时未退出集群互联,控制器上可能会残留一些数据。当您尝试使用这些节点再次创建集群并加入集群互联时,可能会失败。您可以在控制器(kube-ovn-controller)的 /var/log/ovn/ovn-ic.log 日志中查看详细的错误信息。部分错误消息可能包括:
操作步骤
-
对要加入的集群退出互联集群。
-
在容器或 Pod 中执行清理脚本。
您可以直接在 ovn-ic-db 容器或 ovn-ic-controller Pod 中执行清理脚本。请选择以下任一方法:
方法 1:在 ovn-ic-db 容器中执行
-
进入 ovn-ic-db 容器,并使用以下命令执行清理操作。
然后执行以下任一清理命令:
-
使用原始集群的名称执行清理操作。将 <cluster-name> 替换为原始集群的名称:
-
使用原始集群中任意节点的名称执行清理操作。将 <node-name> 替换为原始集群中任意节点的名称:
-
方法 2:在 ovn-ic-controller Pod 中执行
-
进入 ovn-ic-controller Pod,并使用以下命令执行清理操作。
然后执行以下任一清理命令:
-
使用原始集群的名称执行清理操作。将 <cluster-name> 替换为原始集群的名称:
-
使用原始集群中任意节点的名称执行清理操作。将 <node-name> 替换为原始集群中任意节点的名称:
-
-
卸载互联集群
注意:步骤 1 至步骤 3需要在所有已加入互联集群的业务集群上执行。
操作步骤
-
退出互联集群。具体有两种退出方法, 请根据需要选择其中一种。
-
删除业务集群中名为 ovn-ic-config 的 ConfigMap。使用以下命令。
-
通过平台操作退出互联集群。
-
-
使用以下命令进入 ovn-central 的 Leader Pod。
-
使用以下命令清理 ts 逻辑交换机。
-
登录部署控制器的节点并删除控制器。
-
Podman 命令:
-
Containerd 命令:
-
-
使用以下命令删除 global 集群中名为 ovn-ic 的 ConfigMap。
配置集群网关高可用
加入集群互联后,如需将集群网关配置为高可用,请执行以下步骤:
-
登录需要转换为高可用网关的集群,并执行以下命令,将
enable-ic字段更改为false。注意:将
enable-ic字段更改为false会中断集群互联,直到再次将其设置为true。 -
更新
gw-nodes字段来修改网关节点配置,并使用英文逗号分隔网关节点;同时将enable-ic字段更改为true。 -
进入集群 ovn-central 中的 Pod,并执行
ovn-nbctl lrp-get-gateway-chassis {current cluster name}-ts命令,验证配置是否已生效。