前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KubeSphere3.0启用k8s多集群

KubeSphere3.0启用k8s多集群

作者头像
jwangkun
发布2021-12-23 16:48:18
1.1K0
发布2021-12-23 16:48:18
举报
文章被收录于专栏:John Wong's BlogJohn Wong's Blog

1. 概述

多集群功能涉及到多个集群之间的网络连通,了解集群之前的网络拓扑有助于减少接下来的工作量。

多集群功能需要创建一个 Host Cluster,实际即是一个开启了多集群功能的 KubeSphere 集群,简称 H 集群。H 集群管理的所有集群称之为 Member Cluster,即是一个普通的未开启多集群功能的 KubeSphere 集群,简称 M 集群。H 集群只能有一个,M 集群可以有多个。在多集群架构中,要求 H 集群和 M 集群网络可以直连或者通过代理连通,M 集群之间的网络可以是处在完全隔离的环境中。

2. 直接连接

如果 M 集群 kube-apiserver 地址可以在 H 集群上的任一节点上都能访问,即可以使用直接连接的方式。直接连接方式适用于 M 集群可以暴露 kube-apiserver 地址或者 H 和 M 集群处在同一个私网环境中。

2.1. 安装 Host Cluster 集群

安装 Host Cluster 与安装 KubeSphere 没有大的区别,唯一的区别在于安装时确保 installer 的配置文件 ClusterConfiguration 中 multicluster 项如下配置。

代码语言:javascript
复制
multicluster:
  clusterRole: host

如果你已经有一个安装好的 KubeSphere 集群,也可以通过修改 cluster configuration 的方式改变集群的角色,然后等待配置生效。

代码语言:javascript
复制
kubectl edit cc ks-installer -n kubesphere-system

2.2 安装 Member Cluster 集群

为了能够使 host 集群直接管理 member 集群,需要将 member 集群的 jwtSecret 设置与 host 相同。 首先在 host 集群上执行下列命令获取到 host 集群的 jwtSecret。

代码语言:javascript
复制
$ kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret
  jwtSecret: "WaSEiGROspi5*******"

安装 Member Cluster 和安装普通的未开启多集群功能的集群没有任何区别。确保安装时 installer 的 ClusterConfiguration 中 multicluster 项设置角色,同时填入上面获取的 host 的 jwtSecret。

代码语言:javascript
复制
#ClusterConfiguration中默认有此key的,找到后直接修改value值
authentication:
  jwtSecret: WaSEiGROspi5o*******

multicluster:
  clusterRole: member

配置完成后,执行安装。如果你已经有一个安装好的 KubeSphere 集群,也可以通过修改 cluster configuration 的方式改变集群的角色和 jwtSecret,然后等待配置生效。

代码语言:javascript
复制
kubectl edit cc ks-installer -n kubesphere-system

2.3. 导入集群

打开 H 集群 dashboard,点击添加集群,输入集群基本信息后点击下一步。

连接方式选择 直接连接 KubeSphere 集群, 将 Member 集群的 kubeconfig 内容粘贴到输入框中。确保 kubeconfig 中的 server 地址在 H 集群中的任一节点都可以访问。KubeSphere API Server 地址填写 KubeSphere APIServer 的地址,也可以不填。

点击导入,等待集群初始化完成即可

3. 代理连接

代理连接使用了 KubeSphere 的 Tower 组件,Tower 是一个可以在集群间通过代理方式创建网络连接的工具。如果 H 集群不能直接访问 M 集群,可以通过暴露 H 集群代理服务地址,M 集群通过代理来创建和 H 集群的网络连接。代理连接的方式适用于 M 集群处在非公开的 IDC 机房等私有环境,而 H 集群有能力暴露代理服务的场景。

3.1. 安装 Host Cluster

安装 Host Cluster 与安装 KubeSphere 没有大的区别,唯一的区别在于安装时确保 installer 的配置文件 ClusterConfiguration 中 multicluster 项如下配置 。

代码语言:javascript
复制
multicluster:
  clusterRole: host

如果你已经有一个安装好的 KubeSphere 集群,也可以通过修改 cluster configuration 的方式改变集群的角色,然后等待配置生效。

代码语言:javascript
复制
kubectl edit cc ks-installer -n kubesphere-system

1.设置代理服务地址

Host Cluster 安装成功后,kubesphere-system 项目下会创建一个名称为 tower,type 为 LoadBalancer 的代理服务。

如果集群有可以使用的 LoadBalancer 插件,可以看到 EXTERNAL-IP 栏目有对应的地址显示,KubeSphere 会自动获取这个地址,我们可以跳过接下来的设置代理的步骤。

代码语言:javascript
复制
$ kubectl -n kubesphere-system get svc
NAME       TYPE            CLUSTER-IP      EXTERNAL-IP     PORT(S)              AGE
tower      LoadBalancer    10.233.63.191   139.198.110.23  8080:30721/TCP       16h

2.如果一直没有对应的地址显示,则需要手动设置下代理地址。假设现在有可以对外的公网 IP 地址 139.198.120.120,已经通过端口转发的方式将此 IP 地址的 8080 端口转发到集群节点的 30721 端口 (请根据您具体的端口号转发)。

代码语言:javascript
复制
$ kubectl -n kubesphere-system get svc
NAME       TYPE            CLUSTER-IP      EXTERNAL-IP     PORT(S)              AGE
tower      LoadBalancer    10.233.63.191   <pending>  8080:30721/TCP       16h

3.修改配置文件,填入之前设置的地址

代码语言:javascript
复制
$ kubectl -n kubesphere-system edit clusterconfiguration ks-installer

multicluster:
    clusterRole: host
    proxyPublishAddress: http://139.198.120.120:8080 # 增加这一行,设置 tower 服务的访问地址,填入上面设置的 IP 地址

4.保存设置,并且重启 ks-apiserver

代码语言:javascript
复制
kubectl -n kubesphere-system rollout restart deployment ks-apiserver

3.2. 安装 Member Cluster

为了能够使 host 集群直接管理 member 集群,需要将 member 集群的 jwtSecret 设置与 host 相同。 在 host 集群上执行下列命令获取到 host 集群的 jwtSecret。

代码语言:javascript
复制
$ kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret
  jwtSecret: "WaSEiGROspi5o*******"

安装 Member Cluster 和安装普通的未开启多集群功能的集群没有任何区别。确保安装时 installer 的 ClusterConfiguration 中 multicluster 项如下配置,同时填入上面获取的 host 的 jwtSecret。

代码语言:javascript
复制
#ClusterConfiguration中默认有此key的,找到后直接修改value值
authentication:
  jwtSecret: WaSEiGROspi5o*******

multicluster:
  clusterRole: member

配置完成后,执行安装。如果你已经有一个安装好的 KubeSphere 集群,也可以通过修改 cluster configuration 的方式改变集群的角色和 jwtSecret,然后等待配置生效。

代码语言:javascript
复制
kubectl edit cc ks-installer -n kubesphere-system

3.3. 导入集群

  1. 打开 H 集群 dashboard,点击添加集群,输入集群基本信息后点击下一步。

连接方式选择 集群连接代理,点击导入

根据提示在 M 集群中,创建一个 agent.yaml 文件,并将生成的部署粘贴到文件中,在节点上执行 kubectl create -f agent.yaml,等待 agent 运行正常。确保 M 集群上可以访问 H 集群的代理地址。

集群代理运行正常后即可在 H 集群上看到导入的集群

下一篇: 在Kubernetes上部署Redis集群→

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 概述
  • 2. 直接连接
    • 2.1. 安装 Host Cluster 集群
      • 2.2 安装 Member Cluster 集群
        • 2.3. 导入集群
        • 3. 代理连接
          • 3.1. 安装 Host Cluster
            • 3.2. 安装 Member Cluster
              • 3.3. 导入集群
              相关产品与服务
              云数据库 Redis
              腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档