当前位置: 首页 > news >正文

k8s调度策略

调度策略

binpack(装箱策略)

Binpacking策略(又称装箱问题)是一种优化算法,用于将物品有效地放入容器(或“箱子”)中,使得所使用的容器数量最少,Kubernetes等集群管理系统中,Binpacking确保容器尽可能地被分配到少数几个节点上,从而最大限度地利用节点的资源,避免资源浪费。

Spread(分散策略)

Spread策略用于确保Pod在集群中的分布更加均匀,避免Pod过于集中在少数节点上。通过在多个节点之间分配Pod,Spread策略能够增强应用的高可用性,防止单一节点故障导致应用不可用。Kubernetes提供了一些具体的分散策略:

  • Pod Affinity/Anti-Affinity:用于定义Pod之间的亲和性或反亲和性规则,以控制Pod的分布。例如,可以要求某些Pod尽量分布在不同的节点上,或要求它们尽量集中在一起。
  • Topology Spread Constraints:这种约束允许用户定义如何在不同的拓扑域(如可用区、主机等)中分配Pod,目的是避免资源集中在少数区域内。

Affinity 和 Anti-Affinity(亲和性与反亲和性)

  • Node Affinity:让Pod倾向于或排斥调度到某些节点上。它通过节点标签来控制Pod的调度,例如,指定Pod只能调度到具有特定标签的节点上,或者要求Pod不能调度到特定标签的节点上。
  • Pod Affinity:Pod亲和性允许将Pod调度到与其他特定Pod在同一节点上,通常用于需要高效通信的Pod,减少跨节点的网络延迟。
  • Pod Anti-Affinity:Pod反亲和性用于确保Pod不会与特定的Pod调度到同一节点上,适用于需要隔离或避免资源冲突的场景。

配置示例

强制均匀调度

将所有 nginx 的 Pod 严格均匀打散调度到不同节点上,不同节点上 nginx 的副本数量最多只能相差 1 个,如果有节点因其它因素无法调度更多的 Pod (比如资源不足),那么就让剩余的 nginx 副本 Pending。

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:topologySpreadConstraints:- maxSkew: 1topologyKey: kubernetes.io/hostnamewhenUnsatisfiable: DoNotSchedulelabelSelector:- matchLabels:app: nginxcontainers:- name: nginximage: nginx

尽量均匀调度

将 Pod 尽量均匀的打散调度到各个节点上,不强制(把 DoNotSchedule 改成 ScheduleAnyway)。

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:topologySpreadConstraints:- maxSkew: 1topologyKey: kubernetes.io/hostnamewhenUnsatisfiable: ScheduleAnywaylabelSelector:- matchLabels:app: nginxcontainers:- name: nginximage: nginx
http://www.lryc.cn/news/501799.html

相关文章:

  • uniapp中父组件传参到子组件页面渲染不生效问题处理实战记录
  • 螺丝螺帽缺陷检测识别数据集,支持yolo,coco,voc三种格式的标记,一共3081张图片
  • 一个简单带颜色的Map
  • kubeadm安装K8s集群之基础环境配置
  • 前端实现在线预览excel文件
  • 关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决
  • SCRM私域流量管理工具助力企业微信电商转型升级
  • 三相异步电动机为什么能够旋转?
  • 优化移动端H5:常见问题与解决方案
  • TM1不藏私系列——#10. TM1快速运算的秘密武器-Feeder
  • 【Python】【Conda 】Conda vs venv:Python开发者的虚拟环境选择指南
  • 【从0学英语】06.时态 - 一般过去时
  • 获取cpu序列号-python实现
  • 文献分享: PLAID——为ColBERT架构设计的后期交互驱动器
  • IMX6ULL开发板、PC机上的USB网卡、VMware中的Ubuntu的桥接网卡三者互Ping设置及设置
  • 孚盟云 MailAjax.ashx SQL漏洞复现
  • 前端 mp4 视频改成 m3u8 流模式
  • 聚焦港口智能接处警,开启平安海运之门
  • `yarn list --pattern element-ui` 是一个 Yarn 命令,用于列出项目中符合指定模式(`element-ui`)的依赖包信息
  • ElementEye,网页分析器
  • 健康管理系统(Koa+Vue3)
  • 智创 AI 新视界 -- AI 助力金融风险管理的新策略(16 - 10)
  • Linux内核 -- 字符设备之read write poll基本实现
  • 腾讯微信C++面试题及参考答案
  • 如何查看内网设备访问互联网时的出口 IP 地址?
  • ESP32-S3模组上跑通ES8388(24)
  • 【AIGC系列】frequency_penalty如何通过控制参数提升文本生成的多样性与创造性
  • Python+OpenCV系列:图像的运算
  • 【Unity技巧】Unity项目中哪些文件不用管理(.gitignore)
  • ansible 自动化运维工具(三)playbook剧本