k8s的master节点主要模块说明

背景

k8s是一个master-worker模式的集群,master节点的作用主要是用于管理,worker节点的作用是用于运行docker 容器,master节点中有三个重要的模块组件,本文就来简单看下master的这三个模块组件的功能

master节点主要模块

1 APIServer模块:这个模块主要用于与etcd存储集群的交互,k8s中所有对资源的增删改查操作到需要经过APIServer模块,这个算是管控整个k8s资源操作的后台总管家,不过作为后台增删改查的总入口,它需要解决的一个问题就是并发更新的问题,比如并发对同一个pod资源进行修改操作,这会导致数据的互相覆盖的问题,所以对于每种资源的每次更新,k8s都会有一个version版本的概念,只有version版本和客户端请求的version版本一致时,ApiServer模块才会更新对应的资源,否则会返回错误标识。

2.Scheduler模块: 这个模块的主要作用就是把pod容器调度到指定的某个woker工作节点上,也就是从可用的worker node列表中选取最合适的一个node,把pod容器调度到这个node上面运行。调度主要是分成两部分,第一个部分是从可用的woker节点中选择可以用于调度的候选node集合,这里包括判断待调度的pod的端口和工作节点上已经使用的端口是否有冲突,这里的端口是指主机端口,容器端口可以随意重复,此外还需判断node上的cpu内存等资源是否足够调度这个pod容器的需要。第二部分就是从候选的node列表中对node进行排序,排序的目的是选择最合适的节点,这个排序打分的依据包括node的资源使用情况,node上已经存在的pod的数量等等,按照这个规则对候选node进行打分后,选择分数最高的node进行调度即可

3.controller模块:这个模块的作用是确保资源的运行状态和期望的运行状态一致,他会定时对pod,replica等资源进行检查,判断这些资源的实际运行状态和配置文件中期待的运行状态是否一致,如果不一致,他就会调用ApiServer模块对对应的资源进行增删改操作,至于每种资源的实际状态的来源,一种是通过定时查询ApiServer进行查询,一种是通过监听etcd对应的资源变更的事件进行维护

相关推荐
傻傻虎虎1 小时前
【Docker】常用帮忙、镜像、容器、其他命令合集(2)
运维·docker·容器
是小崔啊1 小时前
叩丁狼K8s - 概念篇
云原生·容器·kubernetes
AKAMAI8 小时前
Sport Network 凭借 Akamai 实现卓越成就
人工智能·云原生·云计算
ajax_beijing8 小时前
zookeeper是啥
分布式·zookeeper·云原生
summer_west_fish9 小时前
2023年系统分析师上半年论文试题分析
kubernetes
LeeZhao@10 小时前
【AI推理部署】Docker篇04—Docker自动构建镜像
人工智能·docker·容器
程思扬10 小时前
利用JSONCrack与cpolar提升数据可视化及跨团队协作效率
网络·人工智能·经验分享·docker·信息可视化·容器·架构
落日漫游11 小时前
dockercompose和k8s区别
docker·kubernetes
user48402325423912 小时前
使用自定义snapshotter修改容器的rootfs路径
云原生
资源开发与学习12 小时前
kubernetes核心概念 Service
kubernetes