亲和调度和资源管理器

Process Lasso深解:通过动态优先级与CPU亲和性消除Windows卡顿,掌握进程调度根治系统响应延迟 操作系统对CPU资源的分配,决定了多任务环境下系统的流畅根基。Windows默认调度器追求进程间的“机会均等”,却常常让失控的进程抢占大量时间片,导致鼠标拖影、窗口无响应等连锁卡顿,即使更换高性能硬件也未必根除。进程管理因此成为系统优化的重要突破口:通过动态优先级调整和CPU亲和性绑定,解决后台教育与前台交互争抢资源的问题。Process Lasso的ProBalance动态算法正是在这一原理下,随时监测进程行为并自动压低异常进程的占用,将CPU分配权重新交还给交互应用。这种基于规则的进程调度技术还可用于视 阅读详情

亲和性与反亲和性

亲和调度的前置概念(重要)

  • label在K8S中是非常重要的概念,不管是什么场景,只要和选择、筛选相关的,基本是用label字段来匹配的。

  • 亲和性和反亲和性的调度,筛选的条件依旧用的是Node的label字段。

  • 不管是Node亲和性调度,还是Pod亲和性调度,被调度的主体都是Pod。都是讲的Pod根据亲和规则调度到某个节点,或者Pod跟随别的Pod调到到某个节点(比如Pod1跟随Pod2,Pod2被调度到B节点,那么Pod1也被调度到B节点)。

  • Node亲和性调度 和 Pod亲和性调度 的配置都是写在 编排Pod的yaml里。因为被调度的主体是Pod。

  • Node亲和性调度是指Pod和Node的亲密关系。

  • Pod亲和性调度是指Pod和Pod的亲密关系。

  • 硬亲和:亲和规则只有一种,必须符合该规则。

  • 软亲和:规则有多种,每个权重不同,根据权重优先级去选择一个规则。

  • Node亲和性调度的图示如下,Pod亲和性调用和Pod反亲和性调用也类似。

两种亲和表达式

  • RequiredDuringSchedulingIgnoredDuringExecution:硬亲和,硬性、强制

    必须满足指定的规则才可以把Pod调度到该Node上。这里注意Required这个词,中文意思必须的。

  • PreferredDuringSchedulingIgnoredDuringExecution:软亲和,优先

    强调优先满足某个规则,然后根据优先的规则,将Pod调度到节点上。这里注意Preferred这个词,中文意思是首选,用来说明选择规则的优先级,确实比较合适。

  • nodeAffinity:Node亲和

  • podAffinity:Pod亲和

  • nodeAntiAffinity:Node反亲和

  • podAntiAffinity:Pod反亲和

表达式中的操作符

亲和性表达方式需要用到如下几个可选的操作符operator:

  • In:标签的值在某个列表中(这个常用,下面都不常用)

  • NotIn:标签的值不在某个列表中

  • Exists:存在某个标签

  • DoesNotExist:不存在某个标签

  • Gt:标签的值大于某个值(字符串比较)

  • Lt:标签的值小于某个值(字符串比较)

作用域topologyKey

topologyKey很多地方解释为拓扑建,很是费解。实际上就是个作用域的概念。

topologyKey配置了一个label的key,那么存在这个key对应的label的所有Node就在同一个作用域里。

Node亲和调度

1.硬亲和

 vim 03-required-affinity.yaml
 apiVersion: v1
 kind: Pod
 metadata:
   name: webapp
   #namespace: mynamespace
   labels:
     app: webapp
 spec:
   containers:
     - name: webapp
       image: 192.168.57.200:8099/library/nginx:1.21
       ports:
         - containerPort: 80
   affinity:                    #定义 Pod 的节点亲和性配置
     nodeAffinity:              #指定节点亲和性规则
       requiredDuringSchedulingIgnoredDuringExecution:  # 定义硬性要求,如果找不到满足条件的节点,Pod 不会被调度
         nodeSelectorTerms:     # 定义一个或多个必须满足的条件
           - matchExpressions:  # 定义一系列的关键值对条件
               - key: app       # 要匹配的标签键
                 operator: In   # 操作符,In 表示标签值必须在给定的列表中
                 values:        # 列出允许的标签值
                   - backend
 # 给node2节点增加标签
 kubectl label node node2 app=backend
 # 应用然后发现Pod被部署到了node2节点
 kubectl apply -f 03-required-affinity.yaml
 kubectl get pods -o wide
 NAME     READY   STATUS    RESTARTS   AGE   IP             NODE    NOMINATED NODE   READINESS GATES
 webapp   1/1     Running   0          19s   10.244.3.249   node2   <none>           <none>

2.软亲和

 # 比硬亲和多了一些配置,多了个权重,表现情况一致
 vim 04-preferred-affinity.yaml
 apiVersion: v1
 kind: Pod
 metadata:
   name: webapp
   labels:
     app: webapp
 spec:
   containers:
     - name: webapp
       image: 192.168.57.200:8099/library/nginx:1.21
       ports:
         - containerPort: 80
   affinity:      
     nodeAffinity:     # 定义节点亲和性规则,用于控制 Pod 调度到哪些节点上
       preferredDuringSchedulingIgnoredDuringExecution:   # 定义在调度时优先考虑的规则,但在运行时不强制执行
         - weight: 80           # 权重为 80,表示这个规则的优先级较高
           preference:          # 定义匹配规则
             matchExpressions:  # 使用表达式来匹配节点标签
               - key: app2      # 检查节点标签中是否存在key为 "app2" 的标签
                 operator: Exists # 使用 "Exists" 操作符,表示只要节点有这个标签就满足条件
         - weight: 20           # 权重为 20,表示这个规则的优先级较低
           preference:          # 定义匹配规则
             matchExpressions:  # 使用表达式来匹配节点标签
               - key: app       # 检查节点标签中是否存在key为 "app" 的标签
                 operator: In   # 使用"In"操作符,表示节点的标签值必须在给定的值列表中
                 values:        # 定义允许的标签值列表
                   - backend2   # 节点标签的值必须是 "backend2"

3.Pod亲和调度和反亲和

 # Pod亲和的硬亲和
 vim 06-pod-required-affinity.yaml
 apiVersion: v1
 kind: Pod
 metadata:
   name: webapp-1
   labels:
     app: webapp-1
 spec:
   containers:
     - name: webapp
       image: 192.168.57.200:8099/library/nginx:1.21
       ports:
         - containerPort: 80
   affinity:                    # 定义 Pod 的亲和性配置
     podAffinity:               # 定义 Pod 与其它 Pod 之间的亲和性规则
       requiredDuringSchedulingIgnoredDuringExecution:    #定义硬性要求,Pod 必须调度到满足条件的节点上
         - topologyKey: kubernetes.io/hostname    # 定义拓扑域,例如 "kubernetes.io/hostname" 表示主机名
           labelSelector:       # 选择具有特定标签的 Pod
             matchExpressions:  # 定义标签选择器的表达式
               - key: app       # 要匹配的标签键
                 operator: In   # 操作符,In 表示标签值必须在给定的列表中
                 values:        # 列出允许的标签值
                   - webapp     # 通过这些注释,可以清楚地理解这个配置要求当前 Pod 必须与具有 app=webapp 标签的 Pod 调度到相同的节点上(因为 topologyKey 是 kubernetes.io/hostname,表示同一主机)。
 # 这种配置通常用于确保相关服务位于同一节点,以减少网络延迟或满足其它部署需求。
 kubectl apply -f 06-pod-required-affinity.yaml
 pod/webapp-1 created
 # 这个Pod-1会因为亲和度跟着之前的Pod一起被调度到node2节点
 kubectl get pod -o wide
 NAME       READY   STATUS    RESTARTS   AGE   IP             NODE    NOMINATED NODE   READINESS GATES
 webapp     1/1     Running   0          13m   10.244.3.249   node2   <none>           <none>
 webapp-1   1/1     Running   0          14s   10.244.3.250   node2   <none>           <none>
 # Pod反亲和的硬亲和
 vim 08-pod-required-antiaffinity.yaml
 apiVersion: v1
 kind: Pod
 metadata:
   name: webapp-2
   labels:
     app: webapp-2
 spec:
   containers:
     - name: webapp
       image: 192.168.57.200:8099/library/nginx:1.21
       ports:
         - containerPort: 80
   affinity:                    # 定义 Pod 的亲和性配置
     podAntiAffinity:           # 定义 Pod 与其它 Pod 之间的反亲和性规则
       requiredDuringSchedulingIgnoredDuringExecution:    #定义硬性要求,Pod 必须调度到满足条件的节点上
         - topologyKey: kubernetes.io/hostname    # 定义拓扑域,例如 "kubernetes.io/hostname" 表示主机名
           labelSelector:       # 选择具有特定标签的 Pod
             matchExpressions:  # 定义标签选择器的表达式
               - key: app       # 要匹配的标签键
                 operator: In   # 操作符,In 表示标签值必须在给定的列表中
                 values:        # 列出允许的标签值
                   - webapp     # 通过这些注释,可以清楚地理解这个配置要求当前 Pod 必须与具有 app=webapp 标签的 Pod 避免调度到相同的节点上(因为使用了 podAntiAffinity)。
 # 这种配置通常用于确保高可用性,避免将多个副本调度到同一节点,从而减少单点故障的风险。
 # 这个Pod-2会因为反亲和度不和Pod在一起,调度到node1节点
 kubectl apply -f 08-pod-required-antiaffinity.yaml
 kubectl get pod -o wide
 NAME       READY   STATUS    RESTARTS   AGE     IP             NODE    NOMINATED NODE   READINESS GATES
 webapp     1/1     Running   0          18m     10.244.3.249   node2   <none>           <none>
 webapp-1   1/1     Running   0          4m44s   10.244.3.250   node2   <none>           <none>
 webapp-2   1/1     Running   0          13s     10.244.1.35    node1   <none>           <none>

总结:

  • 亲和性 和 反亲和性的调度,筛选的条件使用的是Node(Pod)的label字段。

  • 亲和性调度:就好像Node(Pod)和Pod是关系很好的闺蜜,Pod说,“只要符合这种label的Node(Pod)都是我的好闺蜜,闺蜜在哪儿我就去哪儿”。

  • 反亲和性调度:就好像2个Pod是赌气的2个孩子,互相对着干,一个往东,另一随便去哪个方向就是不往东,他们不会去到同一个地方。

Pod的资源控制器类型

  • Pod类型:

    • 自主运行的Pod(静态Pod)

    • 管理器运行的Pod(动态Pod)

控制器类型:

1.ReplicationController(RC)/ReplicaSet(RS)

  • 副本控制器:动态的控制Pod的数量

  • RS和RC功能一致,增加selector集合选择器

  • 很少独立使用,而是被其他管理器调用

2.Deployment

  • 实现业务的部署,部署无状态服务

  • 控制副本数量,实现扩容和缩容

  • 控制容器的镜像版本,实现升级和回滚

3.DaemonSet

  • 在每个Node节点上自动部署Pod

  • 例如:K8s监控、网络插件

4.StateFulSet(StS)

  • 用户部署有状态服务

  • Pod的名称唯一且有序

  • 适合部署数据库一类的容器

5.Job与cronJob

  • Job是一次性任务,控制Pod运行成功后自动销毁

  • cronJob:crontab语法“分时日月周”设置周期执行Pod

6.Horizontal Pod Autoscaling

  • 水平Pod自动扩缩容管理器,简称HPA

  • 根据CPU占有率来决定是否扩缩容

  • 设置阈值:Pod的最大值和最小值

YARN资源调度 YARN的核心功能是集群资源管理以及应用的调度监控,应用可以是任何类型的,如MapReduce、Spark或Tez程序。 阅读详情

相关推荐

ROLLART:硬件亲和性驱动的异步强化学习训练框架

强化学习(RL)训练面临计算资源利用和训练速度的双重挑战。硬件亲和性技术通过智能分配计算任务到最适合的硬件设备(如H20和H800 GPU集群),显著提升训练效率。ROLLART框架结合细粒度异步工作流和服务化组件设计,实现了轨迹级并行和跨阶段训练优化。在Qwen3-32B模型测试中,相比传统同步训练,ROLLART获得了2.05倍的加速。这一技术特别适用于大规模RL训练场景,如自动驾驶和游戏AI,通过动态资源分配和异步通信优化,平衡了训练速度与稳定性。

weixin_29035147的博客 289

SAGA:AI Agent推理工作流在GPU集群的原子调度系统设计与实践

在分布式计算和微服务架构中,工作流编排与资源调度是保障复杂应用可靠运行的核心技术。其原理在于将任务分解为有依赖关系的步骤,通过调度器在计算集群中高效分配资源,确保任务按序完成。这一技术的核心价值在于提升资源利用率、保证任务执行的原子性(即事务性),并支撑高并发、高可用的服务场景。尤其在AI大模型推理领域,面对动态、多步骤的AI Agent工作流,传统调度器难以处理其异构资源需求、动态依赖及执行过程中的状态管理。SAGA系统正是针对这一痛点,借鉴微服务中的Saga模式,实现了工作流级别的原子调度。它通过细粒度

weixin_34199764的博客 236

基于 Kubernetes 的容器资源调度和优化平台

Kubernetes 是一个流行的容器编排平台,它可以将容器部署到集群中并管理它们。expand_moreKubernetes 默认提供了资源调度机制,但该机制可能无法满足所有用户的需求。因此,需要额外的资源调度和优化平台来满足更复杂的调度需求。

走向CTO的路上... 1058

Python办公自动化:高效工具包开发实战

办公自动化是现代工作效率提升的关键技术,其核心原理是通过脚本编程实现重复任务的自动化处理。Python凭借丰富的库生态和跨平台特性,成为实现办公自动化的首选语言。在文件管理领域,资源管理器路径跳转工具利用win32 API实时获取窗口信息,解决了多窗口导航难题;针对Intel大小核处理器的混合架构特性,通过电源计划调整和线程亲和性绑定技术,可显著提升CPU敏感型应用的性能表现。图片处理方面,基于OpenCV的自适应压缩算法能在保持画质的同时优化文件体积,结合多进程并行计算可大幅提升批量处理效率。这些技术方案

weixin_31528001的博客 192

基于k8s的容器资源调度和优化平台

Kubernetes 是一个流行的容器编排平台,它可以将容器部署到集群中并管理它们。Kubernetes 默认提供了资源调度机制,但该机制可能无法满足所有用户的需求。因此,需要额外的资源调度和优化平台来满足更复杂的调度需求。

走向CTO的路上... 1361

Yarn的资源调度原理详解

Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统,而各类运算程序则相当于运行于操作系统之上的应用程序。 YARN 主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等组件构成。

石榴姐yyds 2385

Flink集成资源管理器

Apache Flink 支持多种资源管理器,包括 YARN、Kubernetes、Mesos 和 Standalone,以适应不同的部署环境。资源管理器在 Flink 中负责资源分配、任务调度、故障恢复和高可用性,确保作业的高效运行和系统的稳定性。对于 YARN 集成,Flink 提供了两种方法:环境变量法和 jar 法。环境变量法通过设置 Hadoop 的环境变量使 Flink 能够访问 Hadoop 的配置和文件系统;jar 法则是将 Hadoop 的依赖打包到 Flink 的 uber jar 包中

dbc_zt的博客 834

理解任务调度器与资源管理器的高级用法

本文探讨了在并发编程中任务调度器与资源管理器的复杂性,特别是如何在多处理器节点环境中有效地使用多个调度器,以及调度算法对任务执行的影响。我们深入探讨了自定义调度组件的实现,以及如何通过不同的调度策略优化任务执行顺序和性能。

weixin_42561464的博客 466

Yarn资源管理器

Yarn简介 Apache Yarn(Yet another Resource Negotiator)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序。 Yarn被引入Hadoop2.0,最初是为了改善MapReduce的实现,但是因为具有足够的通用性 ...

qq_43057549的博客 646

即梦文生视频逆向接口部署使用

有的小伙伴不知道这个地址如何填写,你可以理解是步骤3上提供的 服务器或者本地电脑IP 地址(不要写 http://127.0.0.1 或者http://localhsot ) 是 (192.168.XXX.XXX 参考)

weixin_44245188的博客 3184

保姆级教程:用NovAtel Inertial Explorer 8.7搞定GNSS/INS紧组合后处理(附避坑指南)

本文提供NovAtel Inertial Explorer 8.7的GNSS/INS紧组合后处理全流程教程,涵盖环境准备、数据转换、基站坐标解算及紧组合处理等关键步骤。特别针对零基础用户,分享实用技巧和常见陷阱,帮助高效完成高精度组合导航数据处理,适用于测绘、自动驾驶等领域。

weixin_42614269的博客 279

分布式资源管理和调度架构

大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在现代互联网和大数据时代,系统规模和复杂性不断增加,单一的服务器已经无法满足高并发、高可用和大数据处理的需求。为了解决这些问题,分布式资源管理和调度架构应运而生。本文将深入探讨分布式资源管理和调度架构的基本概念、主要组件及其实现。

技术研究中心 1385

大数据审计常用的算法模型

数据预处理:用聚类算法(K-Means)对数据分组,缩小分析范围;异常初筛:用孤立森林/DBSCAN快速标记疑似异常样本;风险分级:用随机森林/XGBoost对疑似异常打分,确定核查优先级;关联深挖:用FP-Growth挖掘异常样本背后的人员/流程关联;文本佐证:用BERT分析相关合同/审批文本,获取舞弊证据。例如,某审计项目通过“K-Means分组→孤立森林标异常→FP-Growth找关联→BERT审合同”的流程,仅用1周就完成了过去3个月需10人团队的工作量,且挖出2起隐藏的串标舞弊案。

Yulay专栏 1066

Spark--任务调度

Spark--任务调度

2301_77948840的博客 441

【计算摄影】相机成像原理:从光到JPEG图像

本文我们将从最基本的相机成像原理开始论述,再讨论光线进入相机后,经过一系列处理成为JPEG图像的大致流程。

qq_35149975的博客 2万+

COLMAP在Ubuntu下的编译陷阱与实战避坑指南——从环境配置到三维重建全流程

本文详细介绍了在Ubuntu系统下编译和配置COLMAP三维重建工具的全流程,包括环境准备、依赖库安装、CUDA加速配置以及常见编译问题的解决方案。通过实战案例演示了从图像特征提取到稠密重建的完整步骤,并提供了性能优化和问题排查的实用技巧,帮助用户高效完成三维重建任务。

weixin_29003437的博客 1048

hadoop3 Yarn容量(Capacity Scheduler)调度器和公平(Fair Scheduler)调度器配置

例子1 default 队列占总内存的 40%,最大资源容量占总资源 60%(容量调度器允许借用其他队列剩余的资源,这里限制不超过60%), hive 队列占总内存的 60%, 最大资源容量占总资源 80%。 例子2 vcore和内存固定值配置,参考官网 yarn.scheduler.capacity..maximum-allocation-mb:每个队列在资源管理器上分配给每个容器请求的最大内存限制。此设置覆盖集群配置 yarn.scheduler.maximum-allocat...

lovelife110的博客 2352

无源定位入门(二):FDOA(2)信号模型和原理

信号模型 假设地面固定目标信号源位置为 ,有M架飞机随机分布在空中,并作匀速直线运动。时刻t的时候第i架飞机的位置为,飞行速率为 , 假设目标的信号中心频率为 ,电磁波的传播速度为 ,则此时每个飞机接收目标信号的频率为 以第1架飞机为参考基站,目标信号到达第n架飞机和参考基站之间的FDOA 测量值可表示为 ...

syy_1797的博客 5956

Pod调度不均衡?90%运维忽略的Kubernetes调度器隐秘配置

解决Kubernetes Pod调度不均难题,深入解析调度器隐秘配置。本kubernetes教程涵盖真实应用场景、亲测有效的调优方法与关键参数设置,提升集群资源利用率。运维必看,值得收藏

CodeVibe的博客 429

UE4打包为Framework库嵌入iOS原生工程

UE4打包为Framework库嵌入iOS原生工程

tangfuling1991的博客 1294

【乐企-工具篇】有关乐企发票文件生成- OFD和PDF文件生成

有关乐企发票文件生成-OFD和PDF文件生成

九七的博客 2054

大数据内容分享(六):Hadoop统一资源管理和调度平台 YARN

Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管理器系统,Yarn从hadoop 2引入,最初是为了改善MapReduce的实现,但是它具有通用性,同样执行其他分布式计算模式。

之乎者也·的博客 1216

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

K8s详细学习笔记 第七章:资源的限制与调度

摘要 本文介绍了Kubernetes资源管理与调度策略。主要内容包括: 通过Requests和Limits设置Pod容器的CPU/内存资源约束,区分可压缩(CPU)和不可压缩(内存)资源特性; 基于资源设置产生的三种QoS等级(Guaranteed/Burstable/BestEffort)及其优先级; 使用ResourceQuota在命名空间级别限制资源使用; Pod调度策略,包括节点亲和性(Node Affinity)机制,通过硬/软两种规则控制Pod调度位置。 这些机制共同保障了集群的资源隔离、成本控

qq_38334677的博客 1008

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Hive进阶(5)----yarn的资源调度策略

YARN(Yet Another Resource Negotiator)是Apache Hadoop的资源管理器。它负责集群资源的管理和作业调度。:RM是YARN集群的主要组件之一。它负责整个集群的资源管理和调度。RM有两个主要组件:调度器(Scheduler)和应用程序管理器(ApplicationManager)。:调度器负责将集群资源分配给不同的应用程序。它有不同的实现,如容量调度器(Capacity Scheduler)和公平调度器(Fair Scheduler),每种调度器都有不同的调度策略。

麦当当的博客 949

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Docker Swarm如何实现智能扩容:揭秘背后不为人知的调度算法与实战技巧

掌握Docker Swarm的服务扩容策略,轻松应对高并发与流量高峰。本文揭秘其背后智能调度算法,涵盖节点资源分配、服务副本动态调整等核心方法,适用于微服务弹性伸缩场景。实现高效稳定扩容,值得收藏。

AlgoInk的博客 615

云计算三大核心服务模式(IaaS、PaaS、SaaS)

云计算三大核心服务模式(IaaS、PaaS、SaaS)IaaS 基础设施即服务(Infrastructure as a Service)PaaS 平台即服务(Platform as a Service)SaaS 软件即服务(Software as a Service)

呆萌很的博客 459
上一篇: K8s的标签应用和调度
下一篇: K8s资源控制器的实战
chen_note
博客等级 码龄1年 251粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值