KubeSphere多集群管理


一、集群接入KubeSphere管理

前提:所有k8s集群需安装kubesphere,并能通过kubesphere管理界面对集群资源进行管理。

kubesphere多集群管理分为Host集群Member集群,有且只能有一个Host集群,可以存在一个或多个Member集群Host集群提供中央控制平面,可以通过Host集群的管理控制台操作控制Member集群的一切资源,Member集群的管理控制台只能管理本集群的资源。

集群接入有两种方式:直接连接和代理连接。

  1. 接入方式一:直接连接
    如果 Host 集群(简称 H 集群)的任何节点都能访问 Member 集群(简称 M 集群)的 kube-apiserver 地址,您可以采用直接连接。当 M 集群的 kube-apiserver 地址可以暴露给外网,或者 H 集群和 M 集群在同一私有网络或子网中。
    Host集群:

    编辑ks安装配置文件,设置

    1
    2
    multicluster:
    clusterRole: host

    Member集群:

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

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

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

    1
    jwtSecret: "gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU"

    编辑ks安装配置文件,设置

    1
    2
    3
    4
    multicluster:
    clusterRole: member
    authentication:
    jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU
  2. 接入方式二:代理连接

    ​ KubeSphere 的组件 Tower 用于代理连接。Tower 是一种通过代理在集群间建立网络连接的工具。如果 Host 集群(简称 H 集群)无法直接访问 Member 集群(简称 M 集群),您可以暴露 H 集群的代理服务地址,这样可以让 M 集群通过代理连接到 H 集群。当 M 集群部署在私有环境(例如 IDC)并且 H 集群可以暴露代理服务时,适用此连接方法。当您的集群分布部署在不同的云厂商上时,同样适用代理连接的方法。

    Host集群:

    编辑ks安装配置文件,设置

    1
    2
    3
    4
    multicluster:
    clusterRole: host
    # 需设置公网IP地址8080端口转发到Tower组件
    proxyPublishAddress: http://139.198.120.120:8080

    Member集群:

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

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

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

    1
    jwtSecret: "gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU"

    编辑ks安装配置文件,设置

    1
    2
    3
    4
    multicluster:
    clusterRole: member
    authentication:
    jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU

    Host集群中央控制平面增加Member集群时,根据指示在 M 集群中创建一个 agent.yaml 文件,然后将代理部署复制并粘贴到该文件中。在该节点上执行 kubectl create -f agent.yaml 然后等待代理启动并运行。请确保 M 集群可以访问代理地址。

二、多集群管理跨地区高可用及灾备

    kubesphere支持 **Solo** 和 **Federation(联邦)**两种集群管理模式:
    Solo 管理模式支持将独立部署的 Kubernetes 集群在 KubeSphere 容器平台上统一运维管理。
    Federation 联邦管理模式支持把多个 Kubernetes 集群聚合,形成 Kubernetes 资源池,用户在部署应用时,可以把应用的副本分别部署到池中不同 Kubernetes 集群里,从上层实现应用跨区、跨集群的高可用。

​		`Host集群`管理员可以新建企业空间,企业空间可以绑定多个`Member集群`,

对所有`Member集群`进行配置**外网访问网关**(在创建应用路由之前,需要先启用外网访问入口,即网关,用来负责将请求转发到对应的后端服务),之后就可以跨集群部署应用(Deployments、Statefulsets),不支持DaemonSets,可以设置在每个集群的副本数,通过独立的对外访问入口(比如Kong、Nginx等)对Member集群应用进行负载均衡,保证了应用的高可用。