使用 Submariner 实现 Karmada 成员集群彼此联网

本文演示了如何使用 Submariner 将成员集群彼此联网。

Submariner 将相连集群之间的网络扁平化,并实现 Pod 和服务之间的 IP 可达性。

安装 Karmada

安装 Karmada 控制面

遵循快速入门中的步骤安装 Karmada 控制面后,您就可以用 Karmada 管控集群。

接入成员集群

在下面的步骤中,我们将创建一个成员集群,然后将该集群接入 Karmada 控制面。

  1. 创建成员集群

我们将创建一个名为 cluster1 的集群,想要将 KUBECONFIG 文件放到 $HOME/.kube/cluster.config 中。运行以下命令:

  1. hack/create-cluster.sh cluster1 $HOME/.kube/cluster1.config

这将按 kind 的设置创建集群。

  1. 将成员集群接入 Karmada 控制面

导出 KUBECONFIG 并切换到 karmada apiserver

  1. export KUBECONFIG=$HOME/.kube/karmada.config
  2. kubectl config use-context karmada-apiserver

然后安装 karmadactl 指令集并接入成员集群:

  1. go install github.com/karmada-io/karmada/cmd/karmadactl
  2. karmadactl join cluster1 --cluster-kubeconfig=$HOME/.kube/cluster1.config

除原始成员集群外,确保至少有两个成员集群接入 Karmada。

在本例中,我们将两个成员集群接入了 Karmada:

  1. # kubectl get clusters
  2. NAME VERSION MODE READY AGE
  3. cluster1 v1.21.1 Push True 16s
  4. cluster2 v1.21.1 Push True 5s
  5. ...

部署 Submariner

我们将使用 subctl CLI 在 host clustermember clusters 上部署 Submariner 组件。 按照Submariner 官方文档,这是推荐的部署方法。

Submariner 使用一个中央 Broker 组件来简化所有相关集群中所部署的 Gateway Engines 之间的元数据信息交换。 Broker 必须部署在单个 Kubernetes 集群上。该集群的 API server必须能够到达 Submariner 连接的所有 Kubernetes 集群,因此我们将其部署在 karmada-host 集群上。

安装 subctl

请参阅 SUBCTL 安装

使用 karmada-host 用作 Broker

  1. subctl deploy-broker --kubeconfig /root/.kube/karmada.config --kubecontext karmada-host

集群 1 和集群 2 接入到 Broker

  1. subctl join --kubeconfig /root/.kube/cluster1.config broker-info.subm --natt=false
  1. subctl join --kubeconfig /root/.kube/cluster2.config broker-info.subm --natt=false

连通性测试

请参阅多集群服务发现