debian

Debian上K8S的资源调度策略有哪些

小樊
38
2025-12-13 03:40:23
栏目: 智能运维

Debian上Kubernetes资源调度策略全览

Debian上部署的 Kubernetes 与在其他 Linux 发行版上的调度机制一致,核心由kube-scheduler完成。调度流程分为两步:先进行一组过滤(Predicate)排除不合适的节点,再对通过过滤的节点进行打分(Priority/Score)并选出最优节点。常用过滤包括:PodFitsResources(资源是否充足)、PodFitsHostPorts(主机端口是否冲突)、MatchNodeSelector(节点标签匹配)、PodToleratesNodeTaints(是否容忍节点污点)、NoVolumeZoneConflict(卷与可用区是否冲突)、CheckNodeMemoryPressure/DiskPressure(节点是否处于资源压力状态)等;常用打分包括:LeastRequestedPriority(空闲资源占比高者优先)、BalancedResourceAllocation(CPU/内存使用更均衡者优先)、NodeAffinityPriorityInterPodAffinityPriorityTaintTolerationPriorityImageLocalityPriority等。调度器只会按照 Pod 的requests进行调度决策,而真正设置 cgroups 限制时以limits为准。

常用调度策略与配置要点

策略 作用 关键字段/插件 示例场景
nodeSelector 按节点标签进行硬性选择 spec.nodeSelector 将某业务固定到带有disktype=ssd的节点
nodeAffinity 更灵活的节点选择,支持硬/软约束 spec.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution / preferredDuringSchedulingIgnoredDuringExecution 优先调度到GPU节点,如无则回退到普通节点
podAffinity / podAntiAffinity Pod 间亲和/反亲和,支持软硬约束 spec.affinity.podAffinity / podAntiAffinity 前端+后端放同一节点降时延;将同类副本分散到不同节点提升高可用
Taints & Tolerations 节点“排斥/容忍”机制,实现专用/隔离 spec.taints / spec.tolerations GPU节点打污点,仅允许带容忍的 GPU 工作负载调度
拓扑分散与卷绑定 拓扑域(节点/机架/可用区)分散;卷可用性校验 PodTopologySpread、VolumeBinding/VolumeZone 可用区打散副本;确保PVC能绑定到合适节点/区域
调度框架与多调度器 通过插件扩展调度阶段;可为不同工作负载指定不同调度器 KubeSchedulerConfiguration profiles、queueSort/filter/score、.spec.schedulerName 启用/调优Binpack负载感知打分;为AI/GPU类负载使用专用调度器

服务质量 QoS 与驱逐优先级

Kubernetes 依据容器requests/limits将 Pod 分为三类 QoS:Guaranteed(每个容器都设置了 requests=limits)、Burstable(至少有一个容器设置了 requests)、BestEffort(未设置 requests/limits)。当节点发生MemoryPressure/DiskPressure或资源紧张触发驱逐时,kubelet 按优先级回收:BestEffort最先被驱逐,其次是Burstable(且实际使用超过 requests 者),最后才是Guaranteed(通常仅在超过 limits 或节点本身处于内存压力时)。此外,调度与驱逐决策均以requests为依据,limits 主要作用于运行时 cgroups 限制。

GPU 与专用硬件调度要点

落地配置建议

0
看了该问题的人还看了