直接连接

如果主集群的任何节点都能访问的 kube-apiserver 地址,您可以采用直接连接。当成员集群的 kube-apiserver 地址可以暴露给外网,或者主集群和成员集群在同一私有网络或子网中时,此方法均适用。

要通过直接连接使用多集群功能,您必须拥有至少两个集群,分别用作主集群和成员集群。您可以在安装 KubeSphere 之前或者之后将一个集群指定为主集群或成员集群。有关安装 KubeSphere 的更多信息,请参考在 Linux 上安装在 Kubernetes 上安装

准备主集群

主集群为您提供中央控制平面,并且您只能指定一个主集群。

如果已经安装了独立的 KubeSphere 集群,您可以编辑集群配置,将 clusterRole 的值设置为 host

  • 选项 A - 使用 Web 控制台:

    使用 admin 帐户登录控制台,然后进入集群管理页面上的 CRD,输入关键字 ClusterConfiguration,然后转到其详情页面。编辑 ks-installer 的 YAML 文件,方法类似于启用可插拔组件

  • 选项 B - 使用 Kubectl:

    kubectl edit cc ks-installer -n kubesphere-system
    

ks-installer 的 YAML 文件中,搜寻到 multicluster,将 clusterRole 的值设置为 host,然后点击确定(如果使用 Web 控制台)使其生效:

multicluster:
  clusterRole: host

要设置主集群名称,请在 ks-installer 的 YAML 文件中的 multicluster.clusterRole 下添加 hostClusterName 字段:

multicluster:
  clusterRole: host
  hostClusterName: <主集群名称>

备注

  • 建议您在准备主集群的同时设置主集群名称。若您的主集群已在运行并且已经部署过资源,不建议您再去设置主集群名称。
  • 主集群名称只能包含小写字母、数字、连字符(-)或者半角句号(.),必须以小写字母或数字开头和结尾。

您需要稍等片刻待该更改生效。

在 Linux 上或者在现有 Kubernetes 集群上安装 KubeSphere 之前,您可以定义一个主集群。如果您想在 Linux 上安装 KubeSphere,需要使用 config-sample.yaml 文件。如果您想在现有 Kubernetes 集群上安装 KubeSphere,需要使用两个 YAML 文件,其中一个是 cluster-configuration.yaml

要设置一个主集群,请在安装 KubeSphere 之前,将 config-sample.yamlcluster-configuration.yaml 文件中对应的 clusterRole 的值修改为 host

multicluster:
  clusterRole: host

要设置主集群名称,请在 config-sample.yamlcluster-configuration.yaml 文件中的 multicluster.clusterRole 下添加 hostClusterName 字段:

multicluster:
  clusterRole: host
  hostClusterName: <主集群名称>

备注

  • 主集群名称只能包含小写字母、数字、连字符(-)或者半角句号(.),必须以小写字母或数字开头和结尾。

信息

如果您在单节点集群上安装 KubeSphere (All-in-One),则不需要创建 config-sample.yaml 文件。这种情况下,您可以在安装 KubeSphere 之后设置主集群。

您可以使用 kubectl 来获取安装日志以验证状态。运行以下命令,稍等片刻,如果主集群已准备就绪,您将看到成功的日志返回。

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

准备成员集群

为了通过主集群管理,您需要使它们之间的 jwtSecret 相同。因此,您首先需要在主集群中执行以下命令来获取它。

kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret

命令输出结果可能如下所示:

jwtSecret: "gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU"

如果已经安装了独立的 KubeSphere 集群,您可以编辑集群配置,将 clusterRole 的值设置为 member

  • 选项 A - 使用 Web 控制台:

    使用 admin 帐户登录控制台,然后进入集群管理页面上的 CRD,输入关键字 ClusterConfiguration,然后转到其详情页面。编辑 ks-installer 的 YAML 文件,方法类似于启用可插拔组件

  • 选项 B - 使用 Kubectl:

    kubectl edit cc ks-installer -n kubesphere-system
    

ks-installer 的 YAML 文件中对应输入上面所示的 jwtSecret

authentication:
  jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU

向下滚动并将 clusterRole 的值设置为 member,然后点击确定(如果使用 Web 控制台)使其生效:

multicluster:
  clusterRole: member

您需要稍等片刻待该更改生效。

在 Linux 上或者在现有 Kubernetes 集群上安装 KubeSphere 之前,您可以定义。如果您想在 Linux 上安装 KubeSphere,需要使用 config-sample.yaml 文件。如果您想在现有 Kubernetes 集群上安装 KubeSphere,需要使用两个 YAML 文件,其中一个是 cluster-configuration.yaml

要设置,请在安装 KubeSphere 之前,在 config-sample.yamlcluster-configuration.yaml 文件中输入上方 jwtSecret 所对应的值,并将 clusterRole 的值修改为 member

authentication:
  jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU
multicluster:
  clusterRole: member

备注

如果您在单节点集群上安装 KubeSphere (All-in-One),则不需要创建 config-sample.yaml 文件。这种情况下,您可以在安装 KubeSphere 之后设置。

您可以使用 kubectl 来获取安装日志以验证状态。运行以下命令,稍等片刻,如果已准备就绪,您将看到成功的日志返回。

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

导入成员集群

  1. admin 身份登录 KubeSphere 控制台,转到集群管理页面点击添加集群

  2. 导入集群页面,输入要导入的集群的基本信息。您也可以点击右上角的编辑模式以 YAML 格式查看并编辑基本信息。编辑完成后,点击下一步

  3. 连接方式,选择直接连接 Kubernetes 集群,复制 kubeconfig 内容并粘贴至文本框。您也可以点击右上角的编辑模式以 YAML 格式编辑的 kubeconfig。

    备注

    请确保主集群的任何节点都能访问 kubeconfig 中的 server 地址。
  4. 点击创建,然后等待集群初始化完成。

通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知


感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。