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

相关推荐
金刚猿6 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
JH_Kong7 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
陈桴浮海8 小时前
Kustomize实战:从0到1实现K8s多环境配置管理与资源部署
云原生·容器·kubernetes
张小凡vip9 小时前
Kubernetes--k8s中部署redis数据库服务
redis·kubernetes
Hello.Reader10 小时前
Flink Kubernetes HA(高可用)实战原理、前置条件、配置项与数据保留机制
贪心算法·flink·kubernetes
ShiLiu_mtx11 小时前
k8s - 7
云原生·容器·kubernetes
MonkeyKing_sunyuhua14 小时前
docker compose up -d --build 完全使用新代码打包的方法
docker·容器·eureka
醇氧15 小时前
【docker】mysql 8 的健康检查(Health Check)
mysql·docker·容器
匀泪18 小时前
云原生(LVS NAT模式集群实验)
服务器·云原生·lvs
70asunflower18 小时前
用Docker创建不同的容器类型
运维·docker·容器