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对应的资源变更的事件进行维护

相关推荐
IT大白鼠2 小时前
Ingress 与 Ingress-Controller:K8s 七层 HTTP 反向代理技术详解与实践
http·容器·kubernetes
java_logo3 小时前
Docker 部署 Rocky Linux:轻松搭建 RHEL 兼容企业级基础镜像平台
linux·docker·容器·rocky linux·基础镜像·轩辕镜像·rhel 兼容
阿里云云原生6 小时前
论坛剧透丨当企业有 1000 个智能体后怎么跑怎么管?
云原生
Henry-SAP7 小时前
GPT-6Astra开启AI自主执行新时代
人工智能·云原生·sap·erp
IT大白鼠9 小时前
Istio 结合 K8s 实现流量管理:服务网格灰度、熔断、限流实战
云原生·kubernetes·istio
鹤落晴春10 小时前
【K8s】认识Kubernetes API:从CRD出发的一次梳理
云原生·容器·kubernetes
yanwumuxi11 小时前
Docker记录:误删宿主机挂载目录导致 PostgreSQL 数据丢失
docker·postgresql·容器
cui_hao_nan13 小时前
Docker 学习 5
docker·容器
A黄俊辉A13 小时前
两分钟上手docker
运维·docker·容器
努力努力再努力wz16 小时前
【Docker入门系列】:从架构演进到容器化:一文建立 Docker、虚拟化与 Namespace 的底层心智模型
运维·开发语言·数据结构·c++·docker·容器·架构