首页 / 平台管理 / 集群管理 / 集群 / 集群互联(Alpha)

集群互联(Alpha)

支持在网络模式同为 Kube-OVN 的集群之间配置集群互联,使集群间 Pod 可以互通访问。集群互联控制器是 Kube-OVN 提供的扩展组件,负责收集不同集群之间的网络信息,并通过下发路由将多个集群的网络打通。

例如在一组集群互联中,包含集群 A、集群 B 和集群 C,在进行集群间负载均衡时,当集群 A 的 Pod 过载或故障时,需要将流量切换到集群 B 和 集群 C,此时集群互联发挥提供集群间 Pod 互通的作用。

前提条件

多节点搭建 Kube-OVN 联通控制器

  1. 选择 任意集群中的三个或三个以上节点 部署联控控制器,在本例中准备了三个节点。

  2. 选择任一节点当作 Leader,替换相关参数并执行相应命令。

在 Global 集群部署集群互联控制器

在 global 集群的任意控制节点中,根据注释替换如下参数,并执行以下命令创建 ConfigMap 资源。

注意:为了保证操作的正确性,在 global 集群上名为 ovn-ic 的 ConfigMap 不允许修改。如有参数需要变更,请删除该 ConfigMap,重新配置正确后再应用 ConfigMap。

cat << EOF |kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: ovn-ic
  namespace: cpaas-system
data:
  ic-db-host: "192.168.39.22,192.168.39.24,192.168.39.37"   # 集群互联控制器所在节点地址,在本例中,即部署控制器的三个节点 local IP
  ic-nb-port: "6645"            # 集群互联控制器 nb 端口,默认为 6645
  ic-sb-port: "6646"            # 集群互联控制器 sb 端口,默认为 6646
EOF

加入集群互联

将一个网络模式为 Kube-OVN 的集群加入集群互联。

前提条件

集群中 创建的子网ovn-defaultjoin 子网 与集群互联组内的任意集群网段均不冲突。

操作步骤

  1. 在左侧导航栏中,单击 集群管理 > 集群

  2. 单击待加入集群互联的 集群名称

  3. 在右上角单击 操作 > 集群互联

  4. 单击 加入集群互联

  5. 选择集群的网关节点。

  6. 单击 加入

相关操作

更新互联集群的网关节点信息

更新已加入集群互联组的集群网关节点信息。

操作步骤

  1. 在左侧导航栏中,单击 集群管理 > 集群

  2. 单击待更新网关节点信息的 集群名称

  3. 在右上角单击 操作 > 集群互联

  4. 单击待更新网关节点信息的集群对应的更新网关节点

  5. 重新选择集群的网关节点。

  6. 单击 更新

退出集群互联

已加入集群互联组的集群退出集群互联,退出后,将断开集群 Pod 与外部集群 Pod 的连接。

操作步骤

  1. 在左侧导航栏中,单击 集群管理 > 集群

  2. 单击待退出集群互联的 集群名称

  3. 在右上角单击 操作 > 集群互联

  4. 单击待退出集群互联的集群对应的退出集群互联

  5. 正确输入集群名称。

  6. 单击 退出

手动重置

某些情况下,例如误编辑了 ovn-ic-config 的配置时,OVN-IC 可能出现配置异常的情况。同时由于端口被占用,也可能配置无法恢复,因此需要手动重置环境。在这种情况下,可以按以下操作重置环境:

  1. 首先删除名为 ovn-ic-config 的 configmap。

    kubectl -n kube-system delete cm ovn-ic-config
  2. 获取 pod 名称。

    kubectl -n kube-system -lovn-nb-leader=true get pods

    输出示例值如下:

    NAME                          READY   STATUS    RESTARTS   AGE
    ovn-central-7c97cdbd9-k5qll   1/1     Running   0          7m4s
  3. 进入上一步中获取到的 pod 名称并执行以下操作。

    kubectl -n kube-system exec -ti ovn-central-7c97cdbd9-k5qll bash
  4. 在容器中执行以下命令,获取端口信息。

    ovn-nbctl show | grep ts

    输出示例值如下:

    switch ae275e63-c2db-44a7-a1b1-c76c37b5965b (ts)
        port ts-az1
        port ts-az0
            router-port: az0-ts
        port az0-ts
  5. 删除 ts 相关的所有端口,执行命令 ovn-nbctl lsp-del <端口名称>

    注意:该步骤中删除的端口来自于上一步中获取的端口信息,例如在上一步中包含有三个端口:ts-az1ts-az0az0-ts,执行以下命令删除这三个端口。

    ovn-nbctl lsp-del ts-az1
    ovn-nbctl lsp-del ts-az0
    ovn-nbctl lrp-del az0-ts
  6. 处理完毕后执行命令 exit 退出容器,然后再次按照本文档重新部署 ovn-ic-config 即可。