kubernetes - 如何为 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功能呢?为什么不能安排工作?
解决方案
我解决了这个问题。我输入了错误的调度程序名称。kubernetes 的默认调度器名称是 default-scheduler,而不是 kube-scheduler。
推荐阅读
- angular - 如何在Angular中将道具孩子设置为父母?
- geojson - 将特定的填充颜色添加到特定的道路或获取它的 geojson 数据
- reactjs - 使用 preact、Jest 和酶的意外令牌测试用例错误
- mysql - 在 Sequelize 中使用 @variables MySQL
- c# - 使用 SimpleJSON C# 帮助获取信息
- jasmine - 测试期间角度检查 FormControl Validators 列表
- python - Python Pool 一次运行超过 n 个工作程序,并且程序在所有线程完成执行之前退出
- swagger - 使用 NSwag 和 AutoREST 创建一个代码客户端/扁平化控制器
- python - 如何在包装时允许 tkinter 标签或消息小部件拆分单词
- c# - 如何将递归算法变成并行处理的递归算法