KubeSphere多集群管理

news2024/10/5 23:28:05

多集群管理

各种组织跨不同的云厂商或者在不同的基础设施上运行和管理多个 Kubernetes 集群的做法非常普遍。由于每个 Kubernetes 集群都是一个相对独立的单元,因此在多集群的场景下,需要多集群管理解决方案。

KubeSphere 的多集群管理为用户提供统一的控制平面,将应用程序及其副本分发到位于公有云或本地环境的多个集群。KubeSphere 还拥有跨多个集群的集中监控、日志系统、事件和审计日志等。

多集群架构

使用 KubeSphere 的中央控制平面管理多个集群之前,需要创建一个主集群。主集群是安装了 KubeSphere 设置角色为 Host 的集群,可以使用它提供的控制平面统一管理,只能有一个主集群存在。而多个成员集群可以同时存在,成员集群是安装了 KubeSphere 设置角色为 Member 的集群。主集群和成员集群之间的网络可以直接连接,或者通过代理连接。

启用多集群

设置主集群

可以在安装 KubeSphere 之前或者之后将一个集群指定为主集群

  1. 安装 KubeSphere 之前
# 设置安装配置文件 cluster-configuration.yaml 中的如下信息
multicluster:
  clusterRole: host     # 设置为主集群
  1. 安装 KubeSphere 之后
# 修改配置文件
kubectl edit cc ks-installer -n kubesphere-system
# 修改配置文件 cluster-configuration.yaml 中的如下信息
multicluster:
  clusterRole: host      # 设置为主集群

无论是安装前还是安装后,都可以通过下面的命令来检查,如果主集群准备就绪,将看到成功的日志返回。

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

设置成员集群

为了通过主集群管理,您需要使成员集群和主集群的 ​​jwtSecret​​​ 相同,先在主集群节点通过下面的命令查询主集群的 ​​jwtSecret​

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

类似主集群,也可以在安装 KubeSphere 之前或者之后将一个集群指定为成员集群

  1. 安装 KubeSphere 之前
# 设置安装配置文件 cluster-configuration.yaml 中的如下信息
# 设置 jwtSecret,从主集群中查询得来
authentication:
  jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU
……
multicluster:
  clusterRole: menber     # 设置为成员集群
  1. 安装 KubeSphere 之后
#  修改配置文件
kubectl edit cc ks-installer -n kubesphere-system
#  修改配置文件 cluster-configuration.yaml 中的如下信息
## 设置 jwtSecret,从主集群中查询得来
authentication:
  jwtSecret: gfIwilcc0WjNGKJ5DLeksf2JKfcLgTZU
…… 
multicluster:
  clusterRole: menber     # 设置为成员集群

无论是安装前还是安装后,都可以通过下面的命令来检查,如果成员集群准备就绪,将看到成功的日志返回。

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

导入成员集群

直接连接

当成员集群的 kube-apiserver 地址可以被主集群直接访问,或者与主集群在同一私有网络或子网中时,此方法适用

  • 以 ​​admin​​ 身份登录主集群 KubeSphere 控制台,转到集群管理页面点击添加集群。
  • 在导入集群页面,输入要导入的集群的基本信息。可以点击右上角的编辑模式以 YAML 格式查看并编辑基本信息。编辑完成后,点击下一步。
  • 在连接方式,选择直接连接 Kubernetes 集群,复制成员集群 kubeconfig 内容并粘贴至文本框。
  • 使用命令 cat $HOME/.kube/config 查看成员集群 kubeconfig 文件
  • 确保主集群的任何节点都能访问成员集群 kubeconfig 中的 ​​server​​ 地址。

  1. 点击创建,然后等待集群初始化完成。
代理连接

当成员集群部署在私有环境下,kube-apiserver 地址无法被直接访问,但主集群可以暴露代理服务并由成员集群访问,适用此连接方法

  1. 设置代理服务地址
  1. 执行以下命令来检查服务。
kubectl -n kubesphere-system get svc
  1. 命令输出结果可能如下所示。在此示例中,可以看出 ​​NodePort​​​ 为 ​​30092​​:
NAME       TYPE            CLUSTER-IP      EXTERNAL-IP     PORT(S)                   AGE
tower      LoadBalancer    10.233.63.191   <pending>       8080:30092/TCP            16h
  1. 由于 ​​EXTERNAL-IP​​​ 处于 ​​pending​​​ 状态,需要手动设置代理地址。例如,如果公有 IP 地址为 ​​139.198.120.120​​​,则需要将公网 IP 的端口,如​​30092​​​ 转发到 ​​NodeIP​​​:​​NodePort​​​。由于我们的环境没有公网的 LoadBalancer,因此就默认把这个地址设置为 ​​NodeIP​​​:​​NodePort​
  2. 修改配置文件中代理地址(直接用 ​​NodeIP​​​:​​NodePort​​ 代替)
#  修改配置文件
kubectl edit cc ks-installer -n kubesphere-system
#  修改配置文件 cluster-configuration.yaml 中的如下信息
multicluster:
    clusterRole: host
    # 设置代理地址,本来应该是设置公网地址转发  现在直接设置 NodeIP:NodePort
    proxyPublishAddress: http://172.172.30.131:30092
  1. 保存配置并稍等片刻,或者可以运行以下命令手动重启 ​​ks-apiserver​​ 使修改立即生效
kubectl -n kubesphere-system rollout restart deployment ks-apiserver
  1. 以 ​​admin​​ 身份登录 KubeSphere 控制台,转到集群管理页面点击添加集群。
  2. 在导入集群页面输入要导入的集群的基本信息。也可以点击右上角的编辑模式以 YAML 格式查看并编辑基本信息。编辑完成后,点击下一步。
  3. 在连接方式,选择集群连接代理,然后点击创建。主集群会为后面需要部署在成员集群上的代理组件生成相应Deployment 的 YAML 文件
  4. 根据上一步生成的文件内容,在成员集群中创建一个 ​​agent.yaml​​​ 文件,然后将内容复制并粘贴到该文件中。在该节点上执行 ​​kubectl create -f agent.yaml​​ 然后等待代理启动并运行。确保成员集群可以访问代理地址。
  5. 待集群代理启动并运行,会看到成员集群已经导入主集群。

移除成员集群

  1. 点击左上角的平台管理,选择集群管理。
  2. 在成员集群区域,点击要从中央控制平面移除的集群右侧的三个点图标,点击解绑集群。
  3. 在弹出的移除集群对话框,请仔细阅读风险提示信息。如果您仍然想移除成员集群,输入集群名称,点击确定以移除成员集群。

启用多集群下创建项目和工作负载

创建项目

在启用多集群的情况下,当创建项目时,可以选择创建项目或多集群项目

  1. 项目
  1.   需要指定某个集群,只在该集群下创建项目,非多集群模式下相同管理
  1. 多集群项目

  1.   多集群项目只是逻辑上的项目,实际上是在多个集群下创建相同名称的 namespace,从主集群控制台可以进行统一管理
  2. Host 集群中
  3. Menber 集群中

创建工作负载

单集群项目下的负载创建没有变化,此处不再赘述,多集群项目下的负载创建如下:

  1. 需要指定副本在不同集群的分配情况,以副本数量或权重的方式分配
  2. 新增集群差异化设置,可以为不同集群上设置不同的容器设置、端口设置和环境变量设置
  3. 点击创建,会在不同集群下的同名 namespace 下分别创建副本

多集群项目配置管理

首先由企业空间目录进入项目,路径:http://hostIP:30880/workspaces/system-workspace/projects,查看多集群项目

在多集群项目下创建配置字典(configmap)

分别进入两个集群的终端中查看:

可以看到,在两个集群中,同名的 namespace,下都有刚刚创建的配置字典

在主集群控制台,编辑配置字典

编辑后分别在两个集群终端查看字典内容,可以看到两个集群中的配置同步更新。

创建多集群配置文件后,单独更新任何一个集群中的配置都是不生效的,因此此时的配置本质上是多集群配置资源 FederatedConfigmap 类型的资源管理的,规定了创建的 configmap 需要应用到哪几个集群中,以及配置的值

多集群管理注意事项

  • 主集群和成员集群必须都安装 KubeSphere
  • 主集群和成员集群必须完成时间同步,最好由同一 NTP 服务管理
  • 主集群和成员集群必须设置正确的集群角色,并且在主集群和成员集群上的 ​​jwtSecret​​ 也相同。
  • 建议成员集群在导入主集群之前是干净环境,即没有创建任何资源。
  • 建议在主集群控制台创建资源,不建议登录成员集群控制台去创建资源,因为部分资源(例如:企业空间)将不会同步到主集群进行管理
  • 不建议您将主集群转换为成员集群,或将成员集群转换成主集群,如果一个成员集群曾经被导入进主集群,将该成员集群从先前的主集群解绑后,再导入进新的主集群时必须使用相同的集群名称,否则会导致环境中资源错乱无法使用
  • 只需在主集群上启用应用商店,就可以直接在成员集群上使用与应用商店相关的功能
  • 对于除应用商店外的其他可插拔组件,当在主集群上启用时,仍然需要在成员集群上手动启用相同组件以实现相同的功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1509908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习--Transformer 1

Transformer 是一个基于自注意力的序列到序列模型&#xff0c;与基于循环神经网络的序列到序列模型不同&#xff0c;其可以能够并行计算。 一、序列到序列模型 序列到序列模型输入和输出都是一个序列&#xff0c;输入与输出序列长度之间的关系有两种情况。第一种情况下&#…

【前端小技巧】各种奇奇怪怪的技巧合集

1&#xff0c;任意网页内容可编辑 使用方法&#xff1a;打开控制台&#xff0c;在console内输入这句话按回车&#xff1a;document.body.contentEditable‘true’ 然后你就可以编辑页面上的内容了&#xff0c;比如这样 2&#xff0c;浏览器直接运行HTML代码 使用方法&…

文件和流IO

文件可以看作是数据的集合&#xff0c;一般保存在磁盘或其他存储介质上文件I/O&#xff08;数据的输入/输出&#xff09;通过流&#xff08;Stream&#xff09;来实现&#xff1b;流提供一种向存储写入字节和从存储读取字节的方式对于流有5 种基本的操作&#xff1a;打开、读取…

Linux:进程

进程 知识铺垫冯诺依曼体系结构操作系统&#xff08;OS&#xff09; 进程概念进程的查看ps 命令获取进程 pid文件内查看进程终止进程的方式kill命令快捷键 进程的创建 forkfork 返回值问题 进程状态运行状态 &#xff1a;R休眠状态&#xff1a;S &#xff08;可中断&#xff09…

PCBA方案设计充气泵设计

随着科技的不断进步&#xff0c;充气泵在户外活动、露营和旅行中变得越来越常见。而充气泵的性能和稳定性主要依赖于其控制系统&#xff0c;其中芯片的设计和开发是充气泵方案的关键。SIC8833芯片是一款专门为充气泵设计的芯片&#xff0c;接下来我们来讲下充气泵方案芯片SIC88…

[java基础揉碎]面向对象多态

目录 问题引出多态: 代码如下: 多态(多种状态)的介绍: 多态的具体体现: 方法的多态: 对象的多态: 我们用多态解决最上面的问题: ​编辑 ​编辑 多态的注意事项和细节: 多态的向上转型: ​编辑 多态的向下转型 属性的重写问题 问题引出多态: 代码如下: 新建一个食物…

Open3D 利用四个点计算球心和半径 (28)

Open3D 利用四个点计算球心和半径 (28) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 给定的四个点坐标,计算球心和半径,提供验证的四个点来比较最终的结果是否准确。 二、算法实现 1.代码 代码如下(示例): import numpy as npdef calculate_sphere_center_…

如何选择AI项目:从任务自动化到社会价值的全面考虑

目录 前言1 任务自动化的首要选择1.1 公司痛点分析&#xff1a;深入挖掘潜在问题1.2 数据集的收集与大小考虑&#xff1a;确保数据质量和规模匹配 2 AI项目的商业潜力2.1 技术考察与性能目标&#xff1a;确保技术选择符合项目需求2.2 商业考虑与成本效益分析&#xff1a;全面评…

《向量数据库指南》——Milvus Cloud BYOC 是什么?

Milvus Cloud BYOC 是什么? 10 个月前,Zilliz 正式发布了全托管的 Milvus 云服务——Milvus Cloud,为用户提供低成本、高性能的向量数据库服务。Zilliz 在打磨细节之际,也收到了来自管控较为严格的行业公司和组织的需求,他们大多来自于汽车、金融、医疗等行业,需要将数…

【Java设计模式】十六、责任链模式

文章目录 1、责任链模式2、案例&#xff1a;批假3、在源码中的实际应用 1、责任链模式 一个请求可以有多个对象处理&#xff0c;但这些对象能处理的权限不同。比如公司请假&#xff0c;部门负责人、副经理、经理都能批&#xff0c;但他们能批的最大天数不一样。每次让员工直接…

加密与安全_PGP、OpenPGP和GPG加密通信协议

文章目录 PGPOpenPGPGPG工作原理工作流程用途案例说明过程 代码实现pom依赖PgpEncryptionUtilPgpDecryptionUtilCommonUtilsPgpEncryptionTest 小结 PGP PGP (Pretty Good Privacy) 是一种加密通信协议&#xff0c;用于保护电子邮件和文件的安全性和隐私。它通过使用加密、数字…

福派斯狗粮质量怎么样?

亲爱的宠物家长们&#xff0c;你们是不是也在为选择一款高质量的狗粮而犯愁呢&#xff1f;今天&#xff0c;我要和大家分享一下福派斯狗粮的质量问题&#xff0c;希望能够为你们提供一些参考。 &#x1f43e; 首先&#xff0c;让我们来聊聊福派斯狗粮的原材料。福派斯狗粮选用的…

机器学习模型—支持向量机 (SVM)

机器学习模型—支持向量机 (SVM) 支持向量机 (SVM) 是一种强大的机器学习算法,用于线性或非线性分类、回归,甚至异常值检测任务。SVM 可用于各种任务,例如文本分类、图像分类、垃圾邮件检测、笔迹识别、基因表达分析、人脸检测和异常检测。SVM 在各种应用中具有适应性和高效…

【VUe】简略学习 vue

Vue 是一套用于构建用户界面的渐进式框架。要想使用这个框架&#xff0c;就需要先在页面中引用&#xff1a; 如何使用&#xff1a; 来到控制台&#xff1a; 数据绑定 若要在标签里替换&#xff0c;就需要使用 v-bind 指令了&#xff1a; 在标签里&#xff08;尖括号里&#xf…

jpg 转 ico 强大的图片处理工具 imageMagick

点击下载 windows, mac os, linux版本 GitHub - ImageMagick/ImageMagick: &#x1f9d9;‍♂️ ImageMagick 7 1. windows程序 链接&#xff1a;https://pan.baidu.com/s/1wZLqpcytpCVAl52pIrBBEw 提取码&#xff1a;hbfy 一直点击下一步安装 2. 然后 winr键 打开cmd 然…

软文推广怎么做效果更好?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 软文推广想要效果好&#xff0c;你可以这么做&#xff1a; 1. 选对平台很重要 首先&#xff0c;你得找准你的目标受众喜欢去哪&#xff0c;然后就去那儿发软文。别盲目乱投&#xff0c;…

【计算机网络】1.5 分组交换网中的时延、丢包和吞吐量

A.分组交换网中的时延 当分组从一个节点沿着路径到后一节点时&#xff0c;该分组在沿途的各个节点经受了几种不同类型的时延。 时延的类型 处理时延 - d n o d a l d_{nodal} dnodal​ 处理时延包括以下部分—— a. 检查分组首部 b. 决定分组导向 排队时延 - d p r o c d_{…

原生JavaScript,根据后端返回扁平JSON动态【动态列头、动态数据】生成表格数据

前期准备&#xff1a; JQ下载地址&#xff1a; https://jquery.com/ <!DOCTYPE html> <html><head><meta charset"utf-8"><title>JSON动态生成表格数据,动态列头拼接</title><style>table {width: 800px;text-align: cen…

2.1 塑性力学——应力分析基本概念

个人专栏—塑性力学 1.1 塑性力学基本概念 塑性力学基本概念 1.2 弹塑性材料的三杆桁架分析 弹塑性材料的三杆桁架分析 1.3 加载路径对桁架的影响 加载路径对桁架的影响 目录 个人专栏—塑性力学 应力 \color{blue}应力 应力&#xff1a;内力的分布集度 单元体 \color{blue}单…

C++初学

1>思维导图 2>试编程 提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用C风格字符串完成 #include <iostream> #include<string.h> using namespace std;int main() {string str;cout <<…