kubernetes和kubersphere的关系

一、概要

我们都知道kubernetes(k8s)是容器的一个编排解决方案,kubersphere是容器的云化管理平台;那这2者的关系是怎么样的呢什么前世今生,纠葛呢br> Kubernetes(K8s)是Google公司开源的一个容器(Container)编排与调度管理框架,该项目最初是Google内部面向容器的集群管理系统,而现在是由Cloud Native Computing Foundation(CNCF,云原生计算基金会)托管的开源平台,由Google、AWS、Microsoft、IBM、Intel、Cisco和Red Hat等主要参与者支持,其目标是通过创建一组新的通用容器技术来推进云原生技术和服务的开发。作为领先的容器编排引擎,Kubernetes提供了一个抽象层,使其可以在物理或虚拟环境中部署容器应用程序,提供以容器为中心的基础架构。Kubernetes系统还拥有一个庞大而活跃的开发人员社区,这使其成为历史上增长最快的开源项目之一。它是GitHub上排名前10的项目,也是Go语言最大的开源项目之一,主要特点:

可移植:支持公有云、私有云、混合云、多重云(Multi-cloud)。

可扩展:模块化、插件化、可挂载、可组合。

自动化:自动部署、自动重启、自动复制、自动伸缩/扩展。

Kubernetes系统用于管理分布式节点集群中的微服务或容器化应用程序,并且其提供了零停机时间部署、自动回滚、缩放和容器的自愈(其中包括自动配置、自动重启、自动复制的高弹性基础设施,以及容器的自动缩放等)等功能。k8s支持众多云原生组件和应用,庞大而复杂;主要面向研发人员,使其更专注与业务,而这对于最终用户来管理就有些困难;下图是一些基于k8s的众多发行版:

kubernetes和kubersphere的关系
kubersphere也是一个灵活的轻量级容器 PaaS 平台; 对不同云生态系统的支持非常友好,对原生 Kubernetes 本身无任何的侵入 (Hack)。即KubeSphere 可以部署并运行在任何基础架构以及所有版本兼容的 Kubernetes 集群之上,包括虚拟机、物理机、数据中心、公有云和混合云等。

国际官网:https://kubesphere.io/;国内:https://kubesphere.com.cn/

项目地址:https://github.com/kubesphere/kubesphere

最新版为3.2.1,发行说明:https://kubesphere.com.cn/docs/release/release-v320/

二、架构

2.1 k8s架构:C/S架构

kubernetes和kubersphere的关系
kubernetes和kubersphere的关系

核心层:Kubernetes 最核心的功能,对外提供 API 构建高层的应用,对内提供插件式应用执行环境;
应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS 解析等)、Service Mesh(部分位于应用层);
管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态 Provision 等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy 等)、Service Mesh(部分位于管理层);
接口层:kubectl 命令行工具、客户端 SDK 以及集群联邦;
生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴;
Kubernetes 外部:日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS 应用、ChatOps、GitOps、SecOps 等;
Kubernetes 内部:CRI、CNI、CSI、镜像仓库、Cloud Provider、集群自身的配置和管理等;

kubernetes和kubersphere的关系

K8S工作流程:

kubernetes和kubersphere的关系

Pod创建时序图:

kubernetes和kubersphere的关系
Api Server的工作流程:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
kubernetes和kubersphere的关系

2.2 kubersphere生态及架构

kubernetes和kubersphere的关系
KubeSphere 将 前端 与 后端 分开,实现了面向云原生的设计,后端的各个功能组件可通过 REST API 对接外部系统。KubeSphere 无底层的基础设施依赖,可以运行在任何 Kubernetes、私有云、公有云、VM 或物理环境(BM)之上。 此外,它可以部署在任何 Kubernetes 发行版上。软件架构:

kubernetes和kubersphere的关系
架构组件说明参看:官方文档和kubersphere组件;

平台预览:

kubernetes和kubersphere的关系
kubernetes和kubersphere的关系

kubernetes和kubersphere的关系

软件架构(software architecture):指软件系统的的“基础结构”及创建这些结构的准则和对这些结构的描述,是组成软件系统的一系列相关的抽象模式,用于指导大型软件系统各个方面的设计,是一个系统的草图,描述的对象是直接构成系统的抽象组件。各个组件之间的连接明确细致的描述组件之间的通讯。相对框架对规范的关注,架构关注的是系统的结构;架构是顶层的设计,框架是面向编程/配置的半成品,组件是从逻辑上技术角度基于复用的分离设计(也可看做框架中可复用的某一个实例),模块是从业务逻辑上职责功能的划分,系统是相互协同运行的实体。

架构不是软件,而是关于软件如何设计的重要策略。软件架构决策设计到如何将软件系统分解成不同的部分、各部分之间的静态结构关系和动态交互关系等。经过完整的开发过程之后,这些架构决策将体现在最终开发出的软件系统中;当然,引入软件架构之后,整个开发过程变成了“分两步走”,而架构决策往往会体现在框架之中。而代码不能就等同于是软件架构,软件架构是比具体代码高一个抽象层次的概念。架构势必被代码所体现和遵循,但任何一段具体的代码都代表不了架构。

kubernetes和kubersphere的关系

DOM的全称是Document Object Model,即文档对象模型,它允许脚本控制Web页面、窗口和文档。如果没有DOM,JavaScript将是另外一种脚本语言;而有了DOM,它将成为制作动态页面的强有力工具。DOM不是JavaScript语言的一部分,而是内置在浏览器中的一个应用程序接口。当然,我们可以简单的理解为一种用于HTML和XML文档的编程接口,也可简单理解DOM就是html操作的对象。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。DOM实际就是一组用来描述脚本(JavaScript)怎样与结构化文档进行交互和访问的web标准, 定义了访问 HTML 和 XML 文档的标准,其中HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。目的其实就是为了能让js操作html元素而制定的一个规范。

DOM定义了一系列对象、方法和属性,用于访问、操作和创建文档中的内容、结构、样式以及行为。DOM可把浏览器支持的文档(包括HTML XML XHTML)当作一个对象来解析。DOM实际上是一个操作文档里面所包含的内容的一个编程的API,允许开发人员从文档中读取、搜索、修改、增加和删除数据。DOM是与平台和语言无关的,也就是说只要是支持DOM的平台和编程语言,你都可以用来编写文档。每一个网页元素(一个HTML标签)都对应着一个对象;网页上的标签是一层层嵌套的,最外面的一层是,文档对象模型也这样一层层嵌套着的,类似于树形结构(DOM树)。树根是window或document对象,相当于最外层的标签的外围,也就是整个文档。树根之下是子一级的对象,子对象也有它自己的子对象,除了根对象以外,所有的对象都有自己的父对象,同一对象的子对象之间就是兄弟的关系。一个典型的解析过程:HTML加载完毕,渲染引擎会在内存中的HTML文档,生成一个DOM树,getElementById是获取内中DOM上的元素节点。然后操作的时候修改的是该元素的属性。

kubernetes和kubersphere的关系
浏览器的渲染机制:

解析HTML标签,构建DOM树
解析cSS标签,构建CSSOM树
把DOM和CSSOM组合成渲染树(render tree)
在渲染树的基础上进行布局,计算每个节点的几何结构
把每个节点绘制到屏幕上(painting)

DOM实际上是以面向对象方式描述的文档模型。DOM定义了表示和修改文档所需的对象、这些对象的行为和属性以及这些对象之间的关系。可以把DOM认为是页面上数据和结构的一个树形表示,不过页面当然可能并不是以这种树的方式具体实现。通过JavaScript,可以重构整个 HTML 文档。可以添加、移除、改变或重排页面上的项目。 要改变页面的某个东西,JavaScript 就需要获得对 HTML 文档中所有元素进行访问的入口。这个入口连同对 HTML 元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的。我们用JavaScript对网页进行的所有操作都是通过DOM进行的;当访问DOM中的对象时,先是父对象名,后面接着是子对象名,使用圆点隔开。

DHTML:动态的HTML技术,是将html + css + dom +javascript 配合使用,来做动态html页面。

HTML—负责提供标签,同时用标签封装数据
CSS—-负责显示样式
dom—-把整个页面中的标签、属性和文字内容封装成对象。
js—–提供程序设计语言,for,while,if

虚拟DOM是在内存中生成与真实DOM对应的数据结构部,这个内存中生成的结构就称之为虚拟DOM,它是最早react提出来的,用于当数据发生变化是,能够只能计算出重新渲染组件的最小代价并应用到DOM操作上,减少直接操作DOM的次数,加快渲染,从而降低资源重复渲染的资源消耗。例如vue中可采用一个简洁的模板进行声明式的调用,将数据渲染进DOM,初始化实例后,Vue就自动将数据绑定在DOM模板上。

更多参看:DOM知识简易梳理;

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树容器编排(生产环境 k8s)kubelet,kubectl,kubeadm三件套8689 人正在系统学习中

来源:羌俊恩

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月1日
下一篇 2022年4月1日

相关推荐