当前位置: 首页 > 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;模式…...

领导说我年终奖1.5万是全公司最高,让我别到处说,结果昨天发工资才知道:私下问了其他人,都比我多一倍,下个月我直接离职走人!

有个哥们说&#xff0c;领导拍着他肩膀跟他说&#xff1a;"你今年年终奖1.5万&#xff0c;全公司最高的&#xff0c;别到处说啊&#xff0c;影响不好。"哥们当时还挺感动&#xff0c;觉得自己被认可了&#xff0c;干了一年值了。结果昨天发工资&#xff0c;他私下一打…...

OpenCore Legacy Patcher终极指南:老款Mac焕新升级的完整解决方案

OpenCore Legacy Patcher终极指南&#xff1a;老款Mac焕新升级的完整解决方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款…...

实测分享:电脑端专业金价查看软件 AnyGold,办公盯盘两不误

作为经常关注黄金行情的开发者与上班族&#xff0c;日常总被浏览器反复刷新、网页卡顿、广告弹窗、数据分散等问题困扰。最近试用了 AnyGold 这款电脑端金价查看工具&#xff0c;连续使用两周&#xff0c;整体体验稳定、轻量、实用。下面以纯实测角度&#xff0c;客观讲讲它的功…...

用LingBot-Depth解决实际问题:如何修复不完整的深度传感器数据?

用LingBot-Depth解决实际问题&#xff1a;如何修复不完整的深度传感器数据&#xff1f; 1. 深度传感器数据修复的挑战 深度传感器在机器人导航、三维重建和增强现实等领域发挥着关键作用&#xff0c;但原始传感器数据往往存在各种问题&#xff1a; 数据缺失&#xff1a;由于…...

cv_resnet18_ocr-detection保姆级教程:从安装到批量处理图片文字

cv_resnet18_ocr-detection保姆级教程&#xff1a;从安装到批量处理图片文字 1. 快速上手&#xff1a;5分钟搞定OCR文字检测 你是不是经常需要从图片里提取文字&#xff1f;比如整理扫描的文档、识别截图里的信息&#xff0c;或者处理一堆商品图片上的标签。手动打字太慢&…...

openclaude:模型接入 Code 工具链

作为一名长期关注人工智能工程化落地的开发者&#xff0c;我深知本地大模型在隐私保护和成本控制上的优势&#xff0c;但往往苦于缺乏像 Claude Code 那样强大的工具调用能力。很多时候&#xff0c;我们拥有强大的模型&#xff08;如 DeepSeek、Ollama 本地部署&#xff09;&am…...

FireRedASR Pro优化指南:如何提升长音频识别效率

FireRedASR Pro优化指南&#xff1a;如何提升长音频识别效率 1. 长音频识别的核心挑战 语音识别系统在处理长音频时面临几个关键瓶颈问题&#xff1a; 内存压力&#xff1a;随着音频时长增加&#xff0c;需要缓存的中间状态呈指数级增长计算复杂度&#xff1a;注意力机制的时…...

如何使用Firebase构建Aurelia 1框架实时协作应用:打造高效协同编辑工具

如何使用Firebase构建Aurelia 1框架实时协作应用&#xff1a;打造高效协同编辑工具 【免费下载链接】framework The Aurelia 1 framework entry point, bringing together all the required sub-modules of Aurelia. 项目地址: https://gitcode.com/gh_mirrors/fra/framework…...

硬件工程师的福音:用Beyond Compare 4表格比对功能,5分钟搞定BOM清单版本差异检查

硬件工程师的效率革命&#xff1a;Beyond Compare 4表格比对功能深度解析 在硬件研发的日常工作中&#xff0c;BOM清单的版本管理往往是最令人头疼的环节之一。每次PCB设计的小版本迭代——无论是物料替换、数量调整还是参数优化——都需要工程师花费大量时间核对变更细节。传统…...

OpenClaw安全实践:Kimi-VL-A3B-Thinking本地化部署的数据边界保障

OpenClaw安全实践&#xff1a;Kimi-VL-A3B-Thinking本地化部署的数据边界保障 1. 为什么选择本地化部署&#xff1f; 去年夏天&#xff0c;我接手了一个医疗影像分析项目&#xff0c;需要处理大量患者CT扫描图像和诊断报告。最初尝试使用公有云API服务时&#xff0c;每次上传…...