【云原生开发】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。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

「iOS」——知乎日报一二周总结

知乎日报仿写 前言效果Manager封装网络请求线程冲突问题下拉刷新添加网络请求的图片通过时间戳和日期格式化获取时间 总结 前言 前两周内容的仿写,主要完成了首页的仿写,进度稍慢。 效果 Manager封装网络请求 知乎日报的仿写需要频繁的申请网络请求&am…

【ArcGISPro】汉化嵌入的NoteBook界面

效果展示 下载Notebook汉化包 pip install jupyterlab-language-pack-zh-CN 添加环境变量 LANG zh_CN.UTF8 汉化结果

长亭那个检测能力超强的 WAF,出免费版啦

告诉你们一个震撼人心的消息,那个检测能力超强的 WAF——长亭雷池,他推出免费社区版啦,体验地址见文末。 八年前我刚从学校毕业,在腾讯做安全研究,看到宇森在 BlackHat 上演讲的议题 《永别了,SQL 注入》 …

了解bootstrap改造asp.net core MVC的样式模板

我们都知道,在使用默认的asp.net core MVC模板建立项目的时候,里面的样式是已经事先被写好了的。一般来说都在css目录下的site.css和bootstrap.css及下面的bootstrap.min.css中。我们打开bootstrap这些样式文件,里面有大量的样式类的定义&…

scratch计算台阶 2024年9月scratch四级真题 中国电子学会 图形化编程 scratch四级真题和答案解析

目录 scratch计算台阶 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、p…

数据结构之二叉树前序,中序,后序习题分析(递归图)

1.比较相同的树 二叉树不能轻易用断言,因为树一定有空 2.找结点值 3.单值二叉树 4.对称二叉树 5.前序遍历

mysql死锁查看和解决

文章目录 一、MySQL死锁排查1、查看正在进行中的事务2、查看正在锁的事务3、查看等待锁的事务4、查询是否锁表5、查看最近死锁的日志6、杀死死锁 本文是基于Mysql8.0进行讲解。 本文只讲解如何查询数据库中是否有死锁及死锁的解决,若想了解更多关于死锁的信息&…

【STM32笔记】定时器(TIM1)无法工作

目录 项目场景: 问题描述 原因分析: 解决方案: 项目场景: 编译环境:keil uverison5 初次学习stm32(stm32f103xx)控制舵机(mg90s)时,舵机不转动&#xf…

Spark 程序开发与提交:本地与集群模式全解析

Spark 的介绍与搭建:从理论到实践-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 目录 一、本地开发与远程提交测试 (一)问题背景 (二)解决方案 集群环境准…

利用亚马逊AWS IoT核心和MQTT进行数据采集的综合指南

论文标题:A Comprehensive Guide on Data Acquisition Utilizing Amazon AWS IOT Core and MQTT 中文标题:利用亚马逊AWS IoT核心和MQTT进行数据采集的综合指南 作者信息: Tanishq. I. KohliPradip R. Selokar 两位作者均来自印度那格浦尔…

鸿萌数据迁移服务: 企业服务器整机在线热迁移, 实现不停机业务转移

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据存储、数据恢复、数据备份、数据迁移等解决方案与服务,并针对企业面临的数据安全风险,提供专业的相关数据安全培训。 鸿萌数据迁移业务为众多企业顺利高效…

软件工程笔记一

目录 软件的概念、特性和分类 软件与程序 软件的特性 软件的分类 软件危机与软件工程 软件危机 如何摆脱软件危机? 软件工程概念的提出 什么是软件工程? 软件工程的若干定义 系统工程的目标 软件工程的基本原理 软件工程的目标 软件的质量特性 软件生存…

使用VS Code 安装VUE.js开发环境的搭建并创建第一个项目

初步掌握VUE.js开发环境的搭建并创建第一个项目的操作方法和实验步骤 题目 安装Visual Studio Code。安装VS Code汉化插件。安装Vue官方支持插件。使用VS Code运行第一个HTML页面。安装Node.js并验证其版本。验证npm版本。配置npm的下载镜像源。配置Yarn的下载镜像源。使用Vi…

Java | Leetcode Java题解之第541题反转字符串II

题目&#xff1a; 题解&#xff1a; class Solution {public String reverseStr(String s, int k) {int n s.length();char[] arr s.toCharArray();for (int i 0; i < n; i 2 * k) {reverse(arr, i, Math.min(i k, n) - 1);}return new String(arr);}public void reve…

【物联网技术】ESP8266 WIFI模块STA、AP、STA+AP、TCP/UDP透传工作模式介绍与AT指令介绍

前言:本文对ESP8266 WIFI模块STA、AP、STA+AP、TCP/UDP透传工作模式进行介绍;以及AT指令介绍,包括基础AT指令,WIFI功能AT指令、TCP/IP相关AT指令、常用AT指令实例进行介绍。 ESP8266 WIFI模块的接线及固件烧写可参考我的这篇博客:正点原子ATK-ESP8266 WIFI模块接线及固件…

【大数据学习 | kafka】kafka的数据存储结构

以上是kafka的数据的存储方式。 这些数据可以在服务器集群上对应的文件夹中查看到。 [hexuanhadoop106 __consumer_offsets-0]$ ll 总用量 8 -rw-rw-r--. 1 hexuan hexuan 10485760 10月 28 22:21 00000000000000000000.index -rw-rw-r--. 1 hexuan hexuan 0 10月 28 …

软件测试面试题——移动端

一、常用的adb命令有哪些&#xff1f; 命令含义adb devices展示当前电脑连接的设备&#xff0c;如果电脑上有多个手机&#xff0c;需要adb -s指定对应设备adb install xxx.apk直接安装xxx.apk到手机中&#xff0c;注意&#xff1a;必须打开手机设置里的USB安装adb install -r …

软考教材重点内容 信息安全工程师 第1章 网络信息安全概述

第 1 章 网络信息安全概述 1.1.1 网络信息安全相关概念 狭义上的网络信息安全特指网络信息系统的各组成要素符合安全属性的要求&#xff0c;即机密性、完整性、可用性、抗抵赖性、可控性。 广义上的网络信息安全是涉及国家安全、城市安全、经济安全、社会安全、生产安全、人身安…

Perforce《2024游戏技术现状报告》Part2:游戏引擎、版本控制、IDE及项目管理等多种开发工具的应用分析

游戏开发者一直处于创新前沿。他们的实践、工具和技术受到各行各业的广泛关注&#xff0c;正在改变着组织进行数字创作的方式。 近期&#xff0c;Perforce发布了《2024游戏技术现状报告》&#xff0c;通过收集来自游戏、媒体与娱乐、汽车和制造业等高增长行业的从业者、管理人…

网站架构知识之密钥认证(day020)

1.密钥认证 两个节点&#xff0c;通过密钥形式进行访问&#xff0c;不要输入密码&#xff0c;单向。 应用场景&#xff1a;部分服务使用前要求我们做密钥认证。 1.使用rsa算法创建公钥私钥 ssh-keygen -t rsa /root/.ssh/id_rsa&#xff0c; 私钥地址 /root/.ssh/…