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

相关推荐
张洛闻Eren6 小时前
MySQL 维护稳定系统【MySQL第二课】
linux·数据库·mysql·云原生
Linux-18747 小时前
分布式链路追踪系统之skywalking 追踪案例
云原生·skywalking·分布式链路追踪系统·应用程序性能监控·skywalking java agent·skywalking python agent
虎头金猫8 小时前
如何在群晖NAS上通过Docker部署CloudSaver?群晖部署CloudSaver教程|聚合资源搜索并实现远程访问
运维·服务器·网络·python·docker·容器·pandas
mounter62510 小时前
MACsec 全景解析:从技术演进、核心架构到 DPU 硬件卸载与 K8s 大规模调度实战
linux·kubernetes·linux kernel·kernel·macsec
阿里云云原生11 小时前
当拨测遇上 APM:STAROps Agent 如何区分网络问题与后端问题
云原生
fatcoder15 小时前
玩转Docker 08 — 实战:容器化真实后端并编排
后端·docker·容器
皮皮蟹虾饺15 小时前
NCCL 源码解析:通信器从出生到消亡的完整一生
linux·人工智能·ubuntu·语言模型·kubernetes
江湖有缘19 小时前
5款开源wiki知识库工具,支持Docker快速部署!
docker·容器·开源
云烟成雨TD21 小时前
Micrometer 系列【68】统一观测:基于 Spring Boot 的生产级演示案例 | 跨进程场景
spring boot·云原生·链路追踪
云烟成雨TD21 小时前
Micrometer 系列【67】统一观测:基于 Spring Boot 的生产级演示案例 | 跨线程场景
spring boot·云原生·链路追踪