集群互联(Alpha)
它支持配置网络模式与 Kube-OVN 相同的集群之间的集群互联,使集群中的 Pod 可以相互访问。Cluster Interconnect Controller 是 Kube-OVN 提供的扩展组件,负责收集不同集群之间的网络信息,并通过下发路由连接多个集群的网络。
目录
前提条件构建多节点 Kube-OVN 互联控制器Deploy 部署Podman 和 Containerd 部署在 global 集群中部署集群互联控制器加入集群互联相关操作更新互联集群的网关节点信息退出集群互联清理互联集群残留卸载互联集群配置集群网关高可用前提条件
-
不同集群的子网 CIDR 不能相互重叠。
-
需要有一组能够被各集群的 kube-ovn-controller 通过 IP 访问的机器,用于部署跨集群互联的控制器。
-
每个集群都需要存在一组可被 kube-ovn-controller 通过 IP 访问的机器,后续将用作网关节点。
-
此功能仅适用于默认 VPC,用户自定义 VPC 不能使用互联功能。
构建多节点 Kube-OVN 互联控制器
提供三种部署方式:Deploy 部署(平台 v3.16.0 及更高版本支持)、Podman 部署和 Containerd 部署。
Deploy 部署
注意:平台 v3.16.0 及更高版本支持此部署方式。
操作步骤
-
在集群主节点上执行以下命令,从 kube-ovn-controller Pod 中获取
install-ic-server.sh安装脚本。 -
打开当前目录下的脚本文件,并按如下方式修改参数。
修改后的参数配置如下:
-
保存脚本文件,并使用以下命令执行脚本。
Podman 和 Containerd 部署
-
选择任意集群中的 三个或以上节点 来部署互联控制器。以下示例准备了三个节点。
-
选择任意节点作为 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 和 join 子网不能与集群互联组中的任何集群网段冲突。
操作步骤
-
在左侧导航栏中,单击 Clusters > Cluster of clusters。
-
单击要加入集群互联的 cluster 名称。
-
在右上角,单击 Options > Cluster Interconnect。
-
单击 Join the cluster interconnect。
-
为该集群选择一个网关节点。
-
单击 Join。
相关操作
更新互联集群的网关节点信息
更新已加入集群互联组的集群网关节点信息。
操作步骤
-
在左侧导航栏中,单击 Clusters > Cluster of clusters。
-
单击需要更新网关节点信息的 Cluster name。
-
在右上角,单击 Operations > Cluster Interconnect。
-
对需要更新网关节点信息的集群,单击 Update Gateway Node。
-
重新选择该集群的网关节点。
-
单击 Update。
退出集群互联
已加入集群互联组的集群退出集群互联后,集群 Pod 将与外部集群 Pod 断开连接。
操作步骤
-
在左侧导航栏中,单击 Clusters > Cluster of clusters。
-
单击要下线的 cluster 名称。
-
在右上角,单击 Options > Cluster Interconnect。
-
单击要退出的集群对应的 Exit cluster interconnection。
-
正确输入集群名称。
-
单击 Exit。
清理互联集群残留
当集群在未退出互联集群的情况下被删除时,控制器上可能会残留部分数据。当再次使用这些节点创建集群并加入互联集群时,可能会失败。你可以在控制器(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命令,验证配置是否生效。