首页 > 解决方案 > 如何为 Kubernetes 集群启用 RequestedToCapacityRatio 功能(1.18 版)

问题描述

我们有一个运行在 ubuntu 18.04 上的 kubernetes 集群(版本 1.18.x),我们主要使用这个集群来运行 AI 作业。

我们希望集群根据 bin 打包策略调度作业(nvidia gpu 资源具有最高的权重),我按照本文所述做到了这一点。但是在我做完所有的工作人员之后,吊舱就不能再安排了,它总是卡在 Pending 中!!

我们运行调度程序的命令如下:

/opt/kube/bin/kube-scheduler --address=127.0.0.1 --kubeconfig=/etc/kubernetes/kube-scheduler.kubeconfig --leader-elect=true --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 --tls-min-version=VersionTLS12 --v=2 --config=/path/to/my_policy_file.yaml 

重启 kube-scheduler 的命令:

systemctl daemon-reload
systemctl stop kube-scheduler
systemctl start kube-scheduler

我的政策文件:

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: 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

但是在我将此文件应用到默认调度程序后,它不能再调度 pod。Pod 总是卡在待处理状态。这是我用来测试的 yaml 文件:

apiVersion: v1
kind: Pod
metadata:
  name: test
spec:
  containers:
  - command: ["/bin/bash", "-c", "sleep", "3600"]
    image: ubuntu:18.04
    name: test


              
                    

那么如何正确开启binpack功能呢?为什么不能安排工作?

标签: kubernetesschedulingbin-packingkube-scheduler

解决方案


我解决了这个问题。我输入了错误的调度程序名称。kubernetes 的默认调度器名称是 default-scheduler,而不是 kube-scheduler。


推荐阅读