This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.9. 运行自定义调度程序
您可以与默认调度程序一起运行多个自定义调度程序,并配置要用于每个 pod 的调度程序。
支持在 OpenShift Container Platform 中使用自定义调度程序,但红帽不直接支持自定义调度程序的功能。
有关如何配置默认调度程序的详情,请参阅使用调度程序控制 pod 放置。
要使用特定的调度程序调度给定 pod,在该 Pod
的规格中指定调度程序的名称。
4.9.1. 部署自定义调度程序 复制链接链接已复制到粘贴板!
要在集群中包含自定义调度程序,请在部署中包含自定义调度程序的镜像。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 您有一个调度程序二进制文件。
注意有关如何创建调度程序二进制文件的信息超出了本文档的讨论范围。例如,请参阅 Kubernetes 文档中的配置多个调度程序。请注意,红帽不支持自定义调度程序的实际功能。
- 您已创建了包含调度程序二进制文件的镜像,并将其推送到 registry。
流程
创建包含调度程序配置文件的配置映射的文件:
Example
scheduler-config-map.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建配置映射:
oc create -f scheduler-config-map.yaml
$ oc create -f scheduler-config-map.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个包含自定义调度程序部署资源的文件:
custom-scheduler.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群中创建部署资源:
oc create -f custom-scheduler.yaml
$ oc create -f custom-scheduler.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证调度程序 pod 是否正在运行:
oc get pods -n kube-system
$ oc get pods -n kube-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 自定义调度程序 pod 列为
Running
:NAME READY STATUS RESTARTS AGE custom-scheduler-6cd7c4b8bc-854zb 1/1 Running 0 2m
NAME READY STATUS RESTARTS AGE custom-scheduler-6cd7c4b8bc-854zb 1/1 Running 0 2m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9.2. 使用自定义调度程序部署 pod 复制链接链接已复制到粘贴板!
在集群中部署自定义调度程序后,您可以将 pod 配置为使用该调度程序,而不是默认调度程序。
每个调度程序具有集群中资源的单独视图。因此,每个调度程序应在自己的一组节点上运行。
如果两个或多个调度程序在同一节点上运行,它们可能会相互干扰,并在同一个节点上调度多个 pod,而不是用于的可用资源。在这种情况下,Pod 可能会因为资源不足而被拒绝。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 自定义调度程序已在集群中部署。
流程
如果您的集群使用基于角色的访问控制 (RBAC),将自定义调度程序名称添加到
system:kube-scheduler
集群角色。编辑
system:kube-scheduler
集群角色:oc edit clusterrole system:kube-scheduler
$ oc edit clusterrole system:kube-scheduler
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将自定义调度程序的名称添加到
leases
和endpoints
的resourceNames
列表中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
Pod
配置并在schedulerName
参数中指定自定义调度程序的名称:custom-scheduler-example.yaml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 要使用的自定义调度程序的名称,本例中为
custom-scheduler
。如果没有提供调度程序名称,pod 会自动使用默认调度程序来调度。
创建 pod:
oc create -f custom-scheduler-example.yaml
$ oc create -f custom-scheduler-example.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
输入以下命令检查 pod 是否已创建:
oc get pod custom-scheduler-example
$ oc get pod custom-scheduler-example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow custom-scheduler-example
pod 在输出中列出:NAME READY STATUS RESTARTS AGE custom-scheduler-example 1/1 Running 0 4m
NAME READY STATUS RESTARTS AGE custom-scheduler-example 1/1 Running 0 4m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令检查自定义调度程序是否已调度 pod:
oc describe pod custom-scheduler-example
$ oc describe pod custom-scheduler-example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 调度程序
custom-scheduler
如以下截断的输出所示:Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled <unknown> custom-scheduler Successfully assigned default/custom-scheduler-example to <node_name>
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled <unknown> custom-scheduler Successfully assigned default/custom-scheduler-example to <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow