K8S的架构(1)

目录

一.k8s

[K8S有 master 和 worker node 两类节点:](#K8S有 master 和 worker node 两类节点:)

​编辑

二.K8S创建Pod资源的工作流程

三.K8S资源对象

Pod:是K8S能够创建和管理的最小单位。

Pod控制器:

四.K8S资源配置信息


一.k8s

kubernetes : Google旗下的容器跨主机编排工具,占据了80%以上的市场份额,已经成为容器编排工具的事实标准,在Docker等容器技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

K8S有 master 和 worker node 两类节点:

master节点(负责K8S集群的管理和资源调度等运维工作),组件有 apiserver、controller-manager、scheduler、etcd 。
apiserver :是所有服务请求的统一访问入口
controller-manager :控制器管理器,负责管理K8S各种资源对象的控制器;并通过apiserver监控整个K8S集群的资源状态,并确保资源始终处于预期的工作状态
scheduler :资源调度器,负责Pod资源的调度,通过调度算法(预选/优选策略)为要部署的Pod选择最合适的node节点
etcd:K8S集群的数据库,是一种键值对存储结构的分布式数据库,负责存储K8S集群所有的重要信息,仅apiserver拥有访问和读写权限

worker node节点(负责运行工作负载,即容器应用),组件有 kubelet、kube-proxy、容器引擎(docker、containerd等)
kubelet :接收apiserver发来的请求,创建管理Pod和容器,跟容器引擎交互实现对容器生命周期的管理;收集node节点的资源信息和Pod的运行状态发送给apiserver
kube-proxy :作为service资源的载体,实现对Pod的网络代理,负责维护Pod集群网络规则和四层代理工作
容器引擎:运行管理容器

二.K8S创建Pod资源的工作流程

1.用户通过客服端发送创建pod请求给apiserver

2.apiserver收到请求后,会将请求写入给etcd进行保存,并找到controller-manager请求资源预设模版构建pod资源

3.controller-manager会通过apiserver找到scheduler进行调度新创建的pod资源,并通过调度算法的预选和优选策略进行选出最合适的node节点,进行调度

4.scheduler会通过apiserver找到对应的node节点的kubelet去管理创建pod资源,kubelet还可通过容器引擎交互管理pod及容器的生命周期

5.用户还可以通过apiserver的kube-proxy写入网络规则,创建service资源,对pod集群进行网络代理

三.K8S资源对象

所有的资源对象都可以通过 Kubernetes 提供的 kubectl 工具进行增、删、改、查等操作,并将其保存在 etcd 中持久化存储。

Kubernetes 包含多种类型的资源对象:Pod、Label、Service、Replication Controller 等。

Pod:是K8S能够创建和管理的最小单位。

一个Pod里可以包含一个或多个应用容器,同一个Pod里的容器之间共享网络、存储等资源.

Pod控制器:

deployment:部署无状态应用(没有实时数据需要存储);同时也负责管理replicaset(维持Pod副本数始终符合预期状态)和Pod(容器化的应用程序)

statefulset:部署有状态应用(有实时数据需要存储)

daemonset:在所有node节点上都部署同一种的Pod

job: 一次性的部署短期任务的Pod(执行完任务后会自动退出的容器应用)

cronjob:周期性的部署短期任务的Pod(执行完任务后会自动退出的容器应用)

service:在K8S集群内部,为通过标签选择器相关联的一组Pod提供一个统一的访问入口(clusterIP),只支持四层代理转发

ingress:作为K8S集群外部的访问入口,可定义ingress规则根据用于请求的域名或URL请求路径转发给指定的service,支持七层代理转发

service通过标签选择器关联Pod的标签,从而自动发现相关Pod的端点(PodIP:Port)

ingress通过配置规则将不同的域名或URL路径关联不同的service资源

四.K8S资源配置信息

apiversion:指定资源对象的在K8S中使用的api接口版本

kind: 指定资源对象的类型

metadata: 指定资源对象的元数据信息,比如name指定资源名称、namespace指定命名空间、annotation:指定注释、label指定标签

spec: 指定资源对象的资源配置清单(配置属性) ,比如副本数、镜像、网络模式、存储卷、label selector标签选择器

status: 资源对象在当前的运行状态信息

label:标签,将一个或多个键值对标识关联到某个资源对象,用于对资源对象进行分组查询和筛选

label selector:标签选择器,用于查询和筛选拥有相关标签的资源对象

annotation:注释,用作于资源对象的注释信息;还可以在一些特殊的资源对象里用作于设置额外的功能特性

name:资源名称

namespace:命名空间,用于隔离资源名称的。在同一个命名空间中,同类型的资源对象的名称是唯一的。

相关推荐
不止会JS1 小时前
Hadoop架构详解
大数据·hadoop·架构
张烫麻辣亮。1 小时前
【教程】使用docker+Dify搭建一个本地知识库
运维·docker·容器
不是笨小孩i1 小时前
如何使用Docker一键本地化部署LibrePhotos搭建私有云相册
运维·docker·容器
yyueshen6 小时前
RabbitMQ系列(一)架构解析
分布式·架构·rabbitmq
Dontla6 小时前
Docker run --add-host参数解析(在容器启动时向/etc/hosts文件中添加自定义的主机名与IP映射)(适用于临时调试或测试)
tcp/ip·docker·容器
深度Linux6 小时前
深入探讨Ceph:分布式存储架构的未来
分布式·ceph·架构·c/c++
西西小飞龙6 小时前
Docker和K8S中pod、services、container的介绍和关系
docker·容器·kubernetes
元气满满的热码式7 小时前
Docker数据卷操作实战
linux·运维·docker·云原生·容器
sz66cm7 小时前
Linux基础 -- ARM 32 位架构动态注入代码技术文档
linux·arm开发·架构
Mh16 小时前
代码提交校验及提交规范的实践方案
前端·javascript·架构