云原生系列(十)

简介: 云原生系列(十)

K8S的架构图

首先,云原生的重要组件是K8S,K8S是一个围绕容器打造的分布式高并发系统:①、容器元数据的管理;②、容器的生命周期管理

早期的容器管理:称之为容器管理的原始时代:使用命令的形式进行容器的管理;包括容器的启动和停止,包括服务地址和端口的配置,在原始时代的后期使用yml文件进行容器编排,所有容器的元数据通过yml文件进行管理,很多个容器的话手都会敲断,所以k8s从原始时代带入工业时代。

二、Kubernetes的对象之间的组合关系

3d0ca71b150156d6ddb18b588b54784b.png

k8s的资源对象之间的组合关系:非常类似于springmvc的持久层的实体Bean

Deployment:滚动升级策略:副本数:PodTemplate

Replicaset:版本信息(templateHash) ,描述副本数:类似于微服务的实例对象

Node:整个k8s节点的计算节点的计算资源健康状况

Pod:核心的资源对象,镜像地址资源需求:内存,硬盘,cpu

Service:容器在外面访问的服务协议服务端口

Ingress:容器在外面访问的域名  访问http协议的 URL 目标服务

三、K8S的分布式子系统架构图,和业务架构图相呼应

b9262866b17899bdc6bec8e39e4eceef.png

K8S  Master:负责的是容器的元数据管理

Kubelet:工作节点:也可以说是Node  Worker:负责的是容器的生命周期管理

在整个K8S容器当中,我们的业务服务都是通过容器的方式部署的

所以k8s集群有很多个工作节点或者说是node节点/计算节点。

他们都是通过master组件的API Server组件进行 容器的元数据的查询和订阅

四、分布式容器管理流程架构图

f409c470e3aeb48bf8ffc1ad7dccc632.png

(1)、首先是用户拿了一份容器部署的描述文件:Deployment文件,提交给到控制平面的master节点的API Server核心组件。

(2)、API Server可以理解为k8s的数据总线:只负责容器元数据资源对象的crud,并不负责元数据的处理,元数据的处理是由一些控制器来完成的。

(3)、然后API Server把处理好的元数据对象给到注册中心etcd分布式协调组件进行元数据的持久化,第二种是通过发布订阅机制通知到工作节点里面的容器管理的角色kubelet,

(4)、然后kubelet监听到元数据的变化之后:一旦监听到是属于当前工作节点的容器,就是通过下面的接口来进行容器的创建,和网络资源的分配,存储资源的分配。

(5)、在整个容器管理的流程当中:核心的数据总线提供了HTTP Rest接口完成了K8S各类资源对象pod,RC,Service(元数据对象)的等的增删改查以及watch(元数据变化的监听操作)等,是整个系统的数据总线

五、K8S的内部数据传输架构图

a18de398ba94fa0964b83776121b96c1.png

(1)、K8S内部数据传输架构:通过长短连接实现性能最优化

(2)、工作节点的Kubelet组件和控制节点的api server组件之间有两种方式的数据传输一种是http接口的短连接传输:获取全量的元数据,一种是长连接的数据传输:获取增量元数据的变化;传输性能最优化;kubelet使用了缓存架构。

六、容器对外暴漏的架构图

7574ebea194c8cfe0799028fab93d2a3.png

当我们容器创建好之后:怎么对外进行暴漏,方便外面的访问

①、容器元数据对象创建的阶段:k8s会创建一个资源Service对象,根据选择器selector,和元数据的标签labels进行容器的挑选;另外Service会配置对外暴漏统一的端口port;分发阶段,会通过暴漏的,端口来访问;k8s有一个专门的组件kube-proxy:Service的负载均衡器来完成流量的分发和pod之间的负载均衡


七、k8s的总的架构:有两个核心的架构:

master:负责容器元数据的管理和监控,在Master上面有个数据总线API Server

node:负责容器生命周期管理和外部流量的代理和路由:有个Kubelet组件

e20a4c3ee0004b8e2cff5ef8203c6ef8.png

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes 容器 Perl
【kubernetes】如何找到k8s内部拉取的镜像
【kubernetes】如何找到k8s内部拉取的镜像
828 1
|
存储 Linux 虚拟化
Vsphere创建内容库Iso以及创建esxi虚拟机
Vcenter创建虚拟机 1.创建iso内容库 1)点击内容库
2041 0
Vsphere创建内容库Iso以及创建esxi虚拟机
|
存储 Kubernetes 调度
|
缓存 应用服务中间件 Apache
javax.imageio.IIOException: Can‘t create output stream!(验证码图片不显示)
javax.imageio.IIOException: Can‘t create output stream!(验证码图片不显示)
|
存储 Kubernetes 监控
一文带你玩转全新采集配置 CRD:AliyunPipelineConfig
相较于 AliyunLogConfig,AliyunPipelineConfig 在配置格式、行为逻辑上做了很大改进,主打灵活、简单、稳定。点击本文,手把手教你如何配置 AliyunPipelineConfig,欢迎大家使用~
37095 114
|
XML 监控 负载均衡
Jacoco的覆盖率原理
JaCoCo(Java Code Coverage)是一种广泛使用的代码覆盖率工具,通过在字节码中插入探针(Probe)来收集覆盖率信息。
925 6
Jacoco的覆盖率原理
|
Kubernetes API Docker
Mac docker-desktop 安装单机版k8s
Mac docker-desktop 安装单机版k8s
961 0
|
Kubernetes 容器
图解k8s
图解k8s
280 0
|
存储 Kubernetes API
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
|
Kubernetes API 调度
在K8S中,简单陈述⼀下K8S架构?
在K8S中,简单陈述⼀下K8S架构?