当前位置: 首页 > 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。
在这里插入图片描述

相关文章:

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

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

基于SpringBoot的城镇住房保障系统开发

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...

一文解秘Rust如何与Java互操作

本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你 使用场景 JAVA 与 Rust 互操作让 Rust 可以背靠 Java 大生态来做更多事情,而 Java 也可以享受 Rust 语言特性的内存安全,所有权机制,无畏并发。…...

手机发展史介绍

手机,这个曾经在电影和科幻小说中出现的高科技产品,如今已经渗透进了我们生活的每个角落。从单纯的通讯工具到如今集成了通讯、娱乐、工作、社交等多种功能的智能终端,手机的发展史也是人类科技进步的缩影。本文将从手机的发展历程、技术革新…...

【ArcGISPro】单次将自己建立的工具箱添加至Arcpy中

新建工具箱 添加至Arcpy中 调用刚添加的工具箱...

docker镜像仓库常用命令

docker镜像仓库常用命令 docker logindocker logoutdocker pulldocker pushdocker searchdocker imagesdocker image inspectdocker tagdocker rmidocker image prunedocker savedocker loaddocker history docker login 语法: docker login [options] [server] 功能&#xff…...

springboot 传统应用程序,适配云原生改造

概述 2024年传统应用程序上云,改造方案 1、mysql 云环境高可用方案 2、redis 云环境高可用方案 3、nginx 云环境高可用方案 4、应用 云环境高可用方案1、mysql 云环境高可用方案 1.1 你先了解 1.1.1 你先了解“mysql高可用方案” 主从复制(Master-S…...

D61【python 接口自动化学习】- python基础之数据库

day61 数据库定义 学习日期:20241107 学习目标:MySQL数据库-- 130:MySQL入门使用 学习笔记: 在命令提示符内先试用MySQL 使用图形化工具操作MySQL DBeaver安装 DBeaver连接MySQL 总结 MySQL安装成功后,可以使用命…...

数据库期末考试简答题

1.试述数据、数据库、数据库管理系统、数据库系统的概念。 答:(1)数据是数据库中存储的基本对象,是描述事物的符号记录。数据有多种表现形式,它们都可以经过数字化后存入计算机。数据的种类有数字、文字、…...

Java[面试题]-真实面试

1.什么是IOC和AOP?了解么? IOC(控制反转)和AOP(面向切面编程) 1. IOC(控制反转) 概念 IOC(Inversion of Control)是面向对象编程中的一个设计原则&#xf…...

HTML5新增多媒体支持

一、引言 在当今数字化时代&#xff0c;丰富的多媒体内容对于网页的吸引力和用户体验至关重要。HTML5 的出现为网页带来了强大的多媒体支持&#xff0c;尤其是在音频和视频方面&#xff0c;为开发者和用户带来了全新的可能性。 二、音频audio标签 2.1 定义与属性详解 <a…...

K8S群集调度二

一、污点(Taint) 和 容忍(Tolerations) 1.1、污点(Taint) 设置在node上是对pod的一种作用 节点的亲和性&#xff0c;是Pod的一种属性&#xff08;偏好或硬性要求&#xff09;&#xff0c;它使Pod被吸引到一类特定的节点 而Taint 则相反&#xff0c;它使节点能够排斥一类特…...

43.第二阶段x86游戏实战2-提取游戏里面的lua

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…...

debian系统安装qt的时候 显示xcb相关文件缺失

如果是安装之后的问题 我们可以选择使用ldd的命令查看当前依赖的so那些文件确实 ldd /home/yinsir/Qt/5.15.2/gcc_64/plugins/platforms/libqxcb.so 本人在进行打包的时候 出现则会个报错 ERROR: ldd outputLine: “libxcb-util.so.1 > not found” ERROR: for binary: “/…...

得物多模态大模型在重复商品识别上的应用和架构演进

重复商品治理介绍 根据得物的平台特性&#xff0c;同一个商品在平台上不能出现多个链接&#xff0c;原因是平台需要保证一品一链的特点&#xff0c;以保障商品的集中竞价&#xff0c;所以说一个商品在整个得物平台上只能有一个商详链接&#xff0c;因此我们需要对一品多链的情…...

基于 SSM(Spring + Spring MVC + MyBatis)框架构建电器网上订购系统

基于 SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架构建电器网上订购系统可以为用户提供一个方便快捷的购物平台。以下将详细介绍该系统的开发流程&#xff0c;包括需求分析、技术选型、数据库设计、项目结构搭建、主要功能实现以及前端页面设计。 需求分析 …...

应用插件化及其进程关系梳理

插件应用的AndroidManifest.xml <manifest xmlns:android"http://schemas.android.com/apk/res/android"coreApp"true"package"com.demo.phone"android:sharedUserId"android.uid.phone"><uses-sdk android:minSdkVersion&q…...

Odoo:免费开源的医药流通行业信息化解决方案

文 / 开源智造Odoo亚太金牌服务 方案概述 开源智造Odoo免费开源ERP提供面向医药批发采、供、销业财一体化&#xff0c;及直接面向消费者的门店终端、全渠道管理、营销管理以及GSP合规管理解决方案&#xff0c;提升企业运营效率和全业务链条的数字化管控、追溯能力。 行业的最新…...

系统架构设计师论文:大数据Lambda架构

论文一:大数据Lambda架构 1简要说明你参与开发的软件项目,以及你所承担的主要工作 2 lamada体系架构将数据流分为批处理层(Batch Layer)、加速层(Speed Layer)、服务层(Serving Layer)。简要叙述这三个层次的用途和特点 3 详细阐述你参与开发的软件项目是如何基于lamada…...

亚信安全新一代WAF:抵御勒索攻击的坚固防线

近年来&#xff0c;勒索攻击已成为黑客的主要攻击手段。新型勒索攻击事件层出不穷&#xff0c;勒索攻击形势愈发严峻&#xff0c;已经对全球制造、金融、能源、医疗、政府组织等关键领域造成严重危害。如今&#xff0c;勒索攻击手段日趋成熟、攻击目标愈发明确&#xff0c;模式…...

Flutter 中的那些设计模式的写法(持续更新)

前言 我们都知道设计模式是相同的&#xff0c;同一种设计模式的理念不会因为语言不同而会有所改变&#xff0c;但是由于语法的差异&#xff0c;设计模式的写法也有所差异&#xff0c;本文会介绍一些flutter中常用设计模式的写法以及使用场景。 常见的设计模式有23种&#xff0…...

【提效工具开发】Python功能模块执行和 SQL 执行 需求整理

需求梳理 背景 当前我们在IDE或MySQL查询工具中只能进行个人使用&#xff0c;缺乏共享功能&#xff0c;且在查询及数据统计上有一定的不便。为了改善这种情况&#xff0c;计划搭建一个Web平台&#xff0c;通过后台交互来提升效率。此平台需要兼容Python工具和SQL工具的管理、执…...

Linux系列-进程的状态

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 操作系统就是计算机领域的哲学&#xff0c;是为了保证在所有情况下都适用&#xff0c;加载到内存叫做新建状态。 并行和并发 计算机同时进行多个任务&#xff0c;在用户感知的…...

SpringBoot项目中常用的一些注解

一、核心注解 SpringBootApplication 作用&#xff1a;标注一个主程序类&#xff0c;表明这是一个Spring Boot应用程序的入口。说明&#xff1a;这是一个复合注解&#xff0c;组合了Configuration、EnableAutoConfiguration和ComponentScan。 EnableAutoConfiguration 作用&…...

【网络】自定义协议——序列化和反序列化

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是序列化和分序列&#xff0c;并且自己能手撕网络版的计算器。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不…...

Pytorch如何精准记录函数运行时间

0. 引言 参考Pytorch官方文档对CUDA的描述&#xff0c;GPU的运算是异步执行的。一般来说&#xff0c;异步计算的效果对于调用者来说是不可见的&#xff0c;因为 每个设备按照排队的顺序执行操作Pytorch对于CPU和GPU的同步&#xff0c;GPU间的同步是自动执行的&#xff0c;不需…...

使用 Java 实现邮件发送功能

引言 1. JavaMail API 简介 2. 环境准备 2.1 Maven 依赖 2.2 Gradle 依赖 3. 发送简单文本邮件 4. 发送 HTML 邮件 5. 发送带附件的邮件 6. 注意事项 引言 在现代应用开发中&#xff0c;邮件发送功能是非常常见的需求&#xff0c;例如用户注册验证、密码重置、订单确认…...

html第一个网页

创建你的第一个HTML网页是一个激动人心的步骤。以下是创建一个简单网页的基本步骤和代码示例&#xff1a; 基础结构&#xff1a;所有的HTML文档都应该包含以下基本结构。 <!DOCTYPE html> <html> <head><title>我的第一个网页</title> </he…...

前后端交互接口(三)

前后端交互接口&#xff08;三&#xff09; 前言 前两集我们先做了前后端交互接口的约定以及浅浅的阅读了一些proto代码。那么这一集我们就来看看一些重要的proto代码&#xff0c;之后把protobuffer给引入我们的项目当中&#xff01; gateway.proto 我们来看一眼我们的网关…...

华为Mate70前瞻,鸿蒙NEXT正式版蓄势待发,国产系统迎来关键一战

Mate 70系列要来了 上个月&#xff0c;vivo、小米、OPPO、荣耀等众多智能手机制造商纷纷发布了他们的年度旗舰产品&#xff0c;手机行业内竞争异常激烈。 同时&#xff0c;华为首席执行官余承东在其个人微博上透露&#xff0c;Mate 70系列将标志着华为Mate系列手机达到前所未有…...