You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes 1.18集群如何启用RequestedToCapacityRatio装箱调度特性

Pod无法调度的核心原因
  • 调度插件配置不完整:Kubernetes 1.18版本的kube-scheduler有默认启用的调度插件列表,你在配置中仅显式启用了RequestedToCapacityRatio这一个评分阶段插件,会导致其他所有默认评分插件(如NodeResourcesFit、NodeAffinity等)被自动禁用,调度逻辑链路缺失,无法完成正常的节点筛选和评分。
  • 测试Pod未声明资源请求:RequestedToCapacityRatio插件的评分逻辑完全依赖Pod的resources.requests字段计算节点资源利用率,你提供的测试Pod未配置任何CPU、内存或GPU资源请求,调度器无法计算利用率得分,叠加插件权重设置过高的影响,没有符合调度条件的节点,最终Pod卡在Pending状态。
  • 可选排查点:可执行journalctl -u kube-scheduler -f查看调度器运行日志,确认配置是否加载成功、是否有其他调度相关报错;同时检查节点是否已正确安装nvidia-device-plugin,执行kubectl describe node <节点名>确认Capacity/Allocatable字段下有nvidia.com/gpu资源上报。
正确启用bin packing调度特性的操作步骤
  1. 修正调度策略配置文件
    保留所有默认启用的评分插件,再添加RequestedToCapacityRatio插件,参考配置如下:
apiVersion: kubescheduler.config.k8s.io/v1beta1
kind: KubeSchedulerConfiguration
leaderElection:
  leaderElect: true
clientConnection:
  kubeconfig: /etc/kubernetes/kube-scheduler.kubeconfig
profiles:
  - schedulerName: kube-scheduler
    plugins:
      score:
        enabled:
        # 保留默认启用的评分插件
        - name: NodeResourcesFit
          weight: 1
        - name: NodeAffinity
          weight: 1
        - name: PodTopologySpread
          weight: 1
        - name: TaintToleration
          weight: 1
        - name: ImageLocality
          weight: 1
        # 新增bin packing插件,高权重优先生效
        - name: RequestedToCapacityRatio
          weight: 100
    pluginConfig:
    - name: RequestedToCapacityRatio
      args:
        shape:
        # 利用率越高评分越高,实现装箱效果
        - utilization: 0
          score: 0
        - utilization: 100
          score: 10
        resources: 
        - name:  cpu
          weight: 1
        - name:  nvidia.com/gpu
          weight: 100
  1. 重启kube-scheduler生效配置
    执行原有重启命令即可,重启后检查调度器日志确认无报错:
systemctl daemon-reload
systemctl stop kube-scheduler
systemctl start kube-scheduler
journalctl -u kube-scheduler -f
  1. 修正业务Pod配置
    所有需要参与bin packing调度的Pod必须显式声明resources.requests,GPU资源需要同时配置requests和limits,修正后的测试Pod参考如下:
apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - command: ["/bin/bash", "-c", "sleep 3600"]
    image: ubuntu:18.04
    name: test
    resources:
      requests:
        cpu: "1"
        memory: "2Gi"
        nvidia.com/gpu: "1"
      limits:
        nvidia.com/gpu: "1"
  1. 验证调度效果
    Pod创建后执行kubectl describe pod test查看Events字段的调度记录,确认Pod被调度到GPU利用率更高的节点,符合bin packing策略预期。

内容的提问来源于stack exchange,提问作者Wallace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:36:03