一、创建一个Pod的工作流程

1. k8s架构解析



  • 组件交互模式: Kubernetes采用list-watch机制的控制器架构,实现组件间交互的解耦。各组件通过监控自己负责的资源,当资源发生变化时由kube-apiserver通知相关组件。
  • 类比说明: 类似小卖铺场景,API Server相当于老板,其他组件(控制器、调度器、kubelet)相当于学生。当有新Pod需要处理时,API Server会主动通知对应组件,避免组件不断轮询检查的低效行为。
  • 架构特点:
    • 各组件之间不直接通信,全部通过API Server进行协调
    • 采用发布-订阅模式实现事件通知
    • 相比轮询机制更高效,是现代事件通知系统的常见实现方式
二、Pod中影响调度的主要属性



1. 资源配额与调度依据



  • 资源配置: 通过resources字段设置容器的CPU和内存资源限制
    • 示例配置:requests: memory: "64Mi" cpu: "250m" 和 limits: memory: "128Mi" cpu: "500m"
    • CPU单位:可以写m(毫核)或浮点数,如

      0.5=500m0.5=500m0.5=500m,1=1000m1=1000m1=1000m

  • 调度影响: 调度器会根据requests值判断节点是否有足够资源容纳Pod
2. 调度器名称与自定义调度器



  • 默认调度器: 通过schedulerName: default-scheduler指定
  • 自定义调度器: Kubernetes支持多个调度器并存,可通过指定不同调度器名称使用自定义调度逻辑
3. 节点选择器(nodeSelector)



  • 匹配机制: 基于节点标签进行调度匹配,Pod只会被调度到带有指定标签的节点上
  • 使用场景: 简单场景下的节点定向调度
4. 亲和性(affinity)



  • 功能: 可配置节点亲和性和Pod亲和性,通过约束条件控制Pod在集群中的分布
  • 优势: 比nodeSelector提供更灵活的调度控制能力
5. 污点与污点容忍(tolerations)



  • 污点机制: 控制Pod不在哪些节点上运行
  • 容忍机制: 允许Pod在特定条件下运行在污点节点上
6. 调度器筛选与打分机制



  • 筛选阶段: 调度器首先排除不满足Pod配置要求的节点
  • 打分阶段: 对符合条件的节点进行评分,选择最优节点
  • 考虑因素:
    • 节点空闲资源情况
    • 服务质量要求
    • 其他调度策略(如尽量打散Pod分布)
    • 不会简单追求各节点均匀分配Pod
三、资源限制对Pod调度的影响

1. 资源限制容器的创建



  • 创建命令:使用kubectl run命令创建容器,示例创建名为part1的nginx容器
  • 资源配置项:
    • limits:定义容器最大使用的CPU和内存资源
    • requests:定义容器请求的基础资源量
  • 配置方法:通过YAML文件中的resources字段进行定义,需结合应用程序实际需求设置
2. 资源请求对调度的影响
1)资源请求的理解



  • 本质含义:request代表容器向集群请求的基础资源量
  • 调度影响:决定Pod能否被调度到某个节点的关键因素
  • 配置示例:在YAML中通过requests.cpu和requests.memory字段定义
2)预留资源的概念



  • 核心定义:request是K8s层面的资源预留机制
  • 工作方式:节点分配Pod时,会预先扣除request指定的资源量
  • 实际占用:预留资源未被实际占用,其他Pod无法使用这部分资源
3)预留资源与最小使用资源的区别



  • JVM示例:
    • 最小资源:像JVM配置的-Xms参数,物理内存立即被占用
    • 预留资源:仅做逻辑预留,实际使用可能低于request值
  • 关键区别:
    • 最小资源:立即物理分配,不可回收
    • 预留资源:逻辑预留,实际使用动态变化
4)预留资源在K8s调度中的作用



  • 调度逻辑:
    • 节点剩余资源 = 总资源 - 所有Pod的request总和
    • 新Pod的request必须 ≤ 节点剩余资源才能调度
  • 示例说明:2核4G节点上预留512M内存后,剩余3.5G可供其他Pod使用
5)预留资源的配置方法



  • 配置原则:
    • 应设置为应用常规运行所需的基本资源量
    • 需要结合应用实际资源使用特征进行调整
  • 配置建议:
    • 初始可设置较小值,根据监控逐步优化
    • 典型场景:nginx等轻量应用可设置较低request值
四、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

API Server角色

类比小卖铺老板,作为核心协调组件,所有组件(学生)都需通过API Server交互

组件间无直接通信,必须通过API Server中转

⭐⭐

List-Watch机制

事件通知架构,避免组件轮询查询(学生不用来回跑),通过监听API Server事件触发动作

与轮询机制对比理解,事件驱动更高效

⭐⭐⭐

调度器工作原理

1. 筛选符合基本配置的节点

2. 对候选节点打分评级

3. 分配Pod到最优节点

不会均匀分配,考虑节点空闲率/配置差异/服务质量等多维度

⭐⭐⭐⭐

影响调度的6大因素

1. 资源配额(resources)

2. 指定调度器(schedulerName)

3. 节点名称(nodeName)

4. 节点标签选择器(nodeSelector)

5. 亲和性(affinity)

6. 污点容忍(tolerations)

resource.requests≠limits:requests是预留资源,limits是硬限制

⭐⭐⭐⭐

资源限制配置

- limits:容器资源使用上限

- requests:调度预留资源(非实际占用)

OOM风险:内存超限会被Kill,CPU超限会被限流

⭐⭐⭐

资源耗尽影响

节点资源利用率>90%时会导致:

- 服务响应延迟

- SSH操作卡顿

- 整体服务不可用

需配置合理limits防止单Pod拖垮节点

⭐⭐⭐

多调度器机制

可通过schedulerName字段指定自定义调度器,支持多调度器共存

默认调度器名称:default-scheduler

⭐⭐

控制器协作模式

各控制器(Deployment/StatefulSet等)通过API Server获知资源变更,独立完成闭环控制

控制器之间无直接交互

⭐⭐⭐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92058.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92058.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/92058.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mobaxteam x11传输界面避坑

mobaxteam x11传输界面避坑 文章目录mobaxteam x11传输界面避坑1 windows系统必须下载xing2 配置1 windows系统必须下载xing 因为windows系统本身没有x服务。 2 配置 如图

flink sql如何对hive string类型的时间戳进行排序

在 Flink SQL 中对 Hive 表的 STRING 类型时间戳进行排序,需要先将字符串转换为时间类型,再基于时间类型排序。以下是具体方法和示例: 一、核心解决方案 1. 字符串转 TIMESTAMP 后排序 若 Hive 中的时间戳格式为 yyyy-MM-dd HH:mm:ss&#xf…

Linux:线程控制

线程概念线程(Thread)是进程(Process) 中的一个执行单元,是操作系统能够进行运算调度的最小单位。线程也被称为“轻量级进程”(Lightweight Process, LWP)。一个进程可以包含多个线程&#xff0…

React 学习(4)

核心API———createRoot、render方法1.createRoot 方法是创建react的根容器,就是react元素的插入位置,插入的dom会被转化成react元素,根容器内的内容都会被react管理,原有dom都会被删除。react17 根容器创建、渲染方式&#xff0…

ASP .NET Core 8集成Swagger全攻略

Swagger (现在称为 OpenAPI) 是一个用于描述 RESTful API 的规范,ASP.NET Core 内置支持通过 Swashbuckle 库生成 Swagger 文档。以下是在 ASP.NET Core 8 中实现 Swagger 的完整步骤。1、添加Swagger NuGet 包dotnet add package Swashbuckle.AspNetCore2、添加Swa…

【iOS】源码阅读(六)——方法交换

文章目录方法交换什么是Method-Swizzling方法交换核心API**1. 获取方法对象****2. 添加/替换方法实现****3. 交换方法实现****4. 获取方法信息****5. 修改方法实现****使用示例:完整的 Method-Swizzling 流程****注意事项**使用方法交换注意事项线程安全方法交换的影…

mysql运维问题解决:MySQL主从延迟(锁阻塞与读写分离)

小亦平台会持续给大家科普一些运维过程中常见的问题解决案例,运维朋友们可以在常见问题及解决方案专栏查看更多案例 问题概述 告警事件: 2023-07-28 03:31:39.571 首次触发主从延迟告警(延迟1515秒)2023-07-28 07:41:37 告警解除…

SSH 密钥

什么是 SSH 密钥 SSH 密钥就像是你电脑的“身份证”和“钥匙”, 用来安全登录另一台电脑(服务器),而不需要每次输入密码。SSH 密钥是一种安全登录远程服务器的方式,由一对加密的“钥匙”组成:一个公钥 一个…

st-Gcn训练跳绳识别模型一:数据标注工具和标注流程

目录 工具展示和使用说明 工具标注后文件展示说明 json转换成单个npy文件 数据获取补充 工具展示和使用说明 文件名labelV.py集于PySide6实现: 通过选择视频来选择你要标注的视频,然后选择保存路径: 然后视频两个类别。当你看见视频中的人…

springboot跨域问题 和 401

springboot跨域问题 和 401 1.跨域import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotatio…

构建直播平台大体的流程

✅ 直播流程完整链路(基于 SRS OBS 前后端)🧍‍♂️ 用户操作流程:✅ 用户登录系统(前端)系统中校验用户身份(JWT 等)后端可能校验权限,比如“是否有开播资格”✅ 用户…

KOSMOS-2: 将多模态大型语言模型与世界对接

温馨提示: 本篇文章已同步至"AI专题精讲" KOSMOS-2: 将多模态大型语言模型与世界对接 摘要 我们介绍了 KOSMOS-2,一种多模态大型语言模型(MLLM),赋予了模型感知物体描述(例如,边界框…

协作机器人操作与编程-PE系统示教编程和脚本讲解(直播回放)

协作机器人操作与编程-PE系统示教编程和脚本讲解本次讲解主要围绕协作机器人PE系统的操作与编程展开,内容涵盖软件安装、虚拟机配置、手动操作、在线编程、变量设置、网络通信及标定方法等方面。以下是主要内容要点提炼: 软件安装与虚拟机配置 需从官网下…

【前后端】Node.js 模块大全

用到的全部总结在这里,不定期更新 链接 node一本通 包括: express path fs/ process/ os/ http/ mysql/mongoose/ express-jwt/jsonwebtoken/ dotenv/ multer/ swagger/ cors/ nodemon (docker篇有)常用模块 内置 fs 文件系统操作(读写、重命…

双8无碳小车“cad【17张】三维图+设计说名书

基于MATLAB的双八无碳小车轨迹仿真及其结构设计 摘 要 本文设计的基于MATLAB的无碳小车来自于全国大学生工程训练能力竞赛,依据绿色环保,设计一种通过重力势能转换成动能来驱动小车行走的装置。通过分析任务要求,本文完成了小车的三维结构设计…

视觉大模型离线部署全流程优化:从微调技术到工程实践

视觉大模型离线部署全流程优化:从微调技术到工程实践 一、视觉大模型离线部署概述 1.1 视觉大模型的应用场景与挑战 视觉大模型在物体检测、图像生成、图像描述等领域展现出强大能力,已成为人工智能领域的研究热点和产业应用焦点(5)。随着技术的发…

Vue中组件的生命周期

组件的生命周期生命周期、生命周期函数、生命周期钩子vue2的生命周期创建(创建前的生命周期函数 beforeCreate ,创建完毕created)挂载(挂载前beforeMount,挂载完毕mounted)//把组件放在页面中更新&#xff…

securecrt连接服务器报错 Key exchange failed 怎么办

新买了一台阿里云机,用securecrt去连接,如下报错这个错误表明你的 SSH 客户端与服务器之间无法就密钥交换方法和主机密钥算法达成一致,导致连接失败。这通常是由于客户端和服务器支持的加密算法集不匹配造成的。 解决方式 编辑服务器的/etc/s…

用协议分层模型实战:从物理层到应用层的STM32协议栈开发

目录 1. 揭开协议栈的神秘面纱:从STM32到分层思维 STM32的硬件优势 本章实战:点亮物理层的第一步 2. 数据链路层:让STM32学会“打包”和“拆包” 以太网帧的那些事儿 实战:解析以太网帧 3. 网络层:让STM32学会“找路” LwIP的快速上手 实战:实现一个简单的Ping …

微服务基础环境搭建-centos7

文章目录1、安装docker1.1、安装步骤1.2、docker常用命令2、安装Nginx3、Docker安装Mysql4、Docker安装Redis5、安装Nacos5.1、Nacos的作用5.2、单体服务安装6、安装RocketMQ服务6.1 MQ的作用6.2 RocketMQ的基础服务架构6.2、安装RocketMQ服务6.3、安装dashboard面板服务6.4、R…