当前位置: 首页 > news >正文

【云原生开发】K8S多集群资源管理平台架构设计

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,Golang开发,云原生开发,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K8S,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:云原生开发
景天的主页:景天科技苑

在这里插入图片描述

文章目录

  • K8S多集群管理平台架构设计
    • 1. 如何从零开始写一个完整的项目
    • 2. 设计之前,还需要考虑先写前端,还是先写后端?
    • 3. 前后端分离项目架构设计
    • 4. 涉及到的技术栈
    • 5. 前后端分离域名访问路由设计
      • 1. 前端路由设计
      • 2. 后端路由设计
    • 6. 前后端数据交互模型设计--后端返回数据
    • 7. 前端提交数据规范
    • 8. 元数据存储的设计
      • 1. 哪些数据需要存储?
      • 2. 数据存储到哪里?
      • 3. 元数据的存储格式设计

K8S多集群管理平台架构设计

云原生(Cloud Native)是一种构建和运行应用程序的方法,充分利用云计算模型的优势,如弹性、可扩展性、高可用性和自动化,以实现更高的应用可靠性、可维护性和可移植性。本文云原生开发是基于golang,vue开发出的一个K8S多集群管理平台,实现web页面对过个K8S集群资源的深度管理。

学一门语言,并不是简单的会写一些脚本,要有拿得出手的成果,作品。

1. 如何从零开始写一个完整的项目

  1. 并不是拿一个做好的项目去改,而是从零开始
  2. 大型项目可能需要进行头脑风暴,列出来所有的功能点,需要或者事件
  3. 需要各种设计,比如架构设计,模型设计,结构设计,ER图设计,EML设计,UI设计
  4. 小组开发肯呢个并不需要这么多人介入进来,比如页面风格可能是我们设计的,接口的风格也是我们自己去定义的
  5. 所以进行项目的开发,并不是向之前学的练习那么简单,上来就直接去写。我们在做项目的时候耗费很多的时间和精力,在前期的准备或者设计中,要不然做到最后,就没办法进行下去,到了难以维护的状态,比
    如说各种不统一,不规范。已经没有办法再维护下去了。
  6. 想要做好一个项目,从设计开始,最后才是工程实现。

2. 设计之前,还需要考虑先写前端,还是先写后端?

  1. 当然,在多人的项目中,可能前后端是同步进行的,但是在我们这个这么卷的年代,可能我们是身兼多职的,前后端都自己写,这时候就要规划下,是先写前端还是先写后端,还是直接一起写?
  2. 一般是先写后端,再写前端,最后再前后端结合一起去完成的
  3. 为什么要先去写后端呢? 因为后端是离数据最近的地方,我们写代码大部分时间都是CRUD。我们在操作数据的时候,需要数据的一种格式或一种规范,有了格式之后,我们才能以最简单最高效的方式去操作这个数据。比如说,我们去创建一个用户,这个用户的数据格式,以什么方式去插入数据,这个肯定会在后端比较清晰的。所以,我们在先写后端的情况下,可以先定义好这些数据格式,前端就可以直接使用我们定义好的数据格式,去渲染页面,传递数据,数据交互。如果我们先去写前端,我们可能是根据自己的理解去定义数据格式,到最后可能和后端联调的时候,能会出现我们在前端定义的数据格式没有办法给后端去使用的,这样的话,我们可能需要再次地去变更数据的格式,变更的话,前端的代码还需要去调整,造成了时间的浪费。
  4. 后端数据定义更加精确,前端可以无需定义Mock函数

3. 前后端分离项目架构设计

我们的项目是一个去管理k8s资源的平台,而且是多集群的管理平台,也就是说我们的平台可以管理很多个K8S集群。
字需要将我们得K8S集群配置到我们的后端控制的范围之内,就可以去操作这个集群当中的很多资源,比如说deployment,daemanset,service,configMap等等。
后端是真实操作集群的服务,前端用来展示页面的,让我们更加直观地去操作我们的集群。
我们的前后端服务都是部署在K8S之上的,因为我们得项目是针对云原生去设计的,所以它会依赖K8S的一些资源,比如它使用了K8S的存储,我们没有用单独的数据库去存数据,我们把K8S当做一个存储的组件,因为K8S已经满足我们得要求了,不用去专门维护一个数据库。不是用docker去启动。我们要部署在K8S之上
所以我们有个InCluster这个集群。我们得后端和前端代码都部署在这个集群之上,然后这两个前后端服务去管理其他的K8S集群
我们这个InCluster集群的网络要和其他被管理集群的网络要通的,一般是6443端口,如果是高可用集群,有个LB的地址。要能通信。
在这里插入图片描述

4. 涉及到的技术栈

Golang + Vue + K8s
Git + Gin + JWT + WebSocket
Vue Router + Axios + Pinia + Vite
HTML + CSS + JavaScript

5. 前后端分离域名访问路由设计

在这里插入图片描述

我们前端和后端项目是用两个deployment去部署的,也就是说会用到两个pod去启动,我们给这个项目要配置一个域名,比如我们配置kubeeasy.com。我们访问这个域名的时候,就能打开这个管理系统的首页
然后可以在页面上点击操作,调用后端去操作我们得K8S资源,这个时候需要两个路径,根路径是指向前端的,调用页面。前端通过axios去调用后端接口,后端接口路径就是域名加上api为前缀的路径。

1. 前端路由设计

在这里插入图片描述

2. 后端路由设计

在这里插入图片描述

6. 前后端数据交互模型设计–后端返回数据

后端返回的是json串,一般包含三个字段status message data
无数据返回,data为空。 一条数据,使用data下面的 item。返回多条数据,使用data下面的items
在这里插入图片描述

7. 前端提交数据规范

clusterId 表示操作哪个K8S集群,namespace 哪个名称空间
在这里插入图片描述

8. 元数据存储的设计

1. 哪些数据需要存储?

在这里插入图片描述

2. 数据存储到哪里?

我们把我们的服务部署在了InCluster这个K8S集群之中,K8S本身可以作为存储的,K8S把数据存储到了etcd,所以我们可以通过K8S把数据存储在etcd之中,我们可以用secret或者configmap存储到etcd数据库中
存储数据能不用第三方组件就不用第三方组件,因为第三方组件的故障会带来隐患。K8S一般是高可用集群,比较可靠。我们也不可能为了存储一些配置信息,就去搭建一个高可用的mysql集群,造成了资源浪费。
如果要做多用户,权限分配等,这个时候可能用mysql比较好一些。一般情况下我们将配置信息存储到secret中就可以了
在这里插入图片描述

3. 元数据的存储格式设计

我们把每个集群的名称作为集群的ID,最好是英文的。集群的其他一些配置信息,比如集群别名,位置等信息可以放置到annotations里面去。
最重要的信息 kubeconfig要放到data中。
我们可以添加个labels,metadata=true 利用K8S的查询机制,查询出来具有这个标签的所有的secret。
在这里插入图片描述


http://www.mrgr.cn/news/65496.html

相关文章:

  • arkUI:文本框、文本域的创建和常见用法(TextInput 、TextArea)
  • 数据挖掘(八)
  • 深度学习:Yolo V4的改进
  • 提高交换网络可靠性之链路聚合
  • OpenAI 提示工程指南详解
  • Java第九天(实训学习(八)练习题)
  • 第30周:彩色图片分类(Tensorflow实战第二周)
  • Feign调用第三方,想要单独的拦截器,但是变为全局拦截器
  • 基于 RNN 的语言模型
  • 如何提高总线抗扰度之EFT篇
  • python常用的第三方库下载方法
  • 自闭症康复技术研究前沿:探索新突破
  • word及Excel常见功能使用
  • Linux环境离线安装Ollama
  • 诺贝尔物理学奖的新篇章:机器学习与神经网络的光辉时刻
  • WMV怎么转MP4?五个简单好用的视频格式转换方法!
  • channel error 报错【已解决】
  • 告别局域网限制!轻松远程访问本地Paperless-ngx文档管理系统远程办公
  • 企业人力资源招聘面试新工具:AI智能面试系统
  • 猫用宠物空气净化器推荐?热度高的两款产品——希喂、安德迈实测
  • stm32cubeIde 使用笔记
  • ubuntu unrar解压 中文文件名异常问题解决
  • 尚庭公寓-开发准备
  • 【Kettle的安装与使用】使用Kettle实现mysql和hive的数据传输(使用Kettle将mysql数据导入hive、将hive数据导入mysql)
  • 分布式光伏管理办法
  • 【AD】2-3 多Part元件的绘制实例-运放