4.10. 二级调度程序
4.10.1. 二级调度程序概述
您可以安装 Secondary Scheduler Operator 来运行自定义二级调度程序,以及调度 pod 的默认调度程序。
4.10.1.1. 关于 Secondary Scheduler Operator
Red Hat OpenShift 的 Secondary Scheduler Operator 提供了在 OpenShift Container Platform 中部署自定义二级调度程序的方法。二级调度程序与默认调度程序一起运行,以调度 pod。Pod 配置可指定要使用的调度程序。
自定义调度程序必须具有 /bin/kube-scheduler
二进制文件,并基于 Kubernetes 调度框架。
您可以使用 Secondary Scheduler Operator 在 OpenShift Container Platform 中部署自定义二级调度程序,但红帽不直接支持自定义二级调度程序的功能。
Secondary Scheduler Operator 创建二级调度程序所需的默认角色和角色绑定。您可以通过为从属调度程序配置 KubeSchedulerConfiguration
资源,来指定哪些调度插件来启用或禁用。
4.10.2. Secondary Scheduler Operator for Red Hat OpenShift 发行注记
Red Hat OpenShift 的 Secondary Scheduler Operator 允许您在 OpenShift Container Platform 集群中部署自定义二级调度程序。
本发行注记介绍了针对 Red Hat OpenShift 的 Secondary Scheduler Operator 的开发。
如需更多信息,请参阅关于 Secondary Scheduler Operator。
4.10.2.1. Red Hat OpenShift 1.1.0 的 Secondary Scheduler Operator 发行注记
发布日期: 2022-9-1
以下公告可用于 Red Hat OpenShift 1.1.0 的 Secondary Scheduler Operator:
4.10.2.1.1. 新功能及功能增强
- Secondary Scheduler Operator 安全上下文配置已更新,以符合 pod 安全准入执行。
4.10.2.1.2. 已知问题
- 目前,您无法通过 Secondary Scheduler Operator 部署其他资源,如配置映射、CRD 或 RBAC 策略。自定义二级调度程序所需的角色和角色绑定以外的任何资源都必须外部应用。(BZ#2071684)
4.10.2.2. Red Hat OpenShift 1.0.1 的 Secondary Scheduler Operator 发行注记
发布日期: 2022 年 7 月 28 日
以下公告可用于 Red Hat OpenShift 1.0.1 的 Secondary Scheduler Operator:
4.10.2.2.1. 新功能及功能增强
- Red Hat OpenShift 1.0.1 的Secondary Scheduler Operator 的最大 OpenShift Container Platform 版本为 4.11。
4.10.2.2.2. 程序错误修复
- 在以前的版本中,在删除了二级调度程序自定义资源(CR)后,二级调度程序部署不会被删除,这会阻止 Secondary Scheduler Operator 和操作对象被完全卸载。现在,当子调度程序 CR 被删除时,二级调度程序部署会被删除,以便现在完全卸载 Secondary Scheduler Operator。(BZ#2100923)
4.10.2.2.3. 已知问题
- 目前,您无法通过 Secondary Scheduler Operator 部署其他资源,如配置映射、CRD 或 RBAC 策略。自定义二级调度程序所需的角色和角色绑定以外的任何资源都必须外部应用。(BZ#2071684)
4.10.2.3. Red Hat OpenShift 1.0.0 的 Secondary Scheduler Operator 发行注记
发布日期: 2022 年 4 月 18 日
以下公告可用于 Red Hat OpenShift 1.0.0 的 Secondary Scheduler Operator:
4.10.2.3.1. 新功能及功能增强
- 这是 Red Hat OpenShift 的 Secondary Scheduler Operator 的初始发行版本。
4.10.2.3.2. 已知问题
- 目前,您无法通过 Secondary Scheduler Operator 部署其他资源,如配置映射、CRD 或 RBAC 策略。自定义二级调度程序所需的角色和角色绑定以外的任何资源都必须外部应用。(BZ#2071684)
4.10.3. 使用二级调度程序调度 pod
您可以通过安装 Secondary Scheduler Operator、部署二级调度程序,并在 pod 定义中设置二级调度程序,在 OpenShift Container Platform 中运行自定义次要调度程序。
4.10.3.1. 安装 Secondary Scheduler Operator
您可以使用 Web 控制台为 Red Hat OpenShift 安装 Secondary Scheduler Operator。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
为 Red Hat OpenShift 创建 Secondary Scheduler Operator 所需的命名空间。
-
进行 Administration
Namespaces,点 Create Namespace。 -
在 Name 字段中输入
openshift-secondary-scheduler-operator
,再点 Create。
-
进行 Administration
为 Red Hat OpenShift 安装 Secondary Scheduler Operator。
-
导航至 Operators
OperatorHub。 - 在过滤器框中输入 Secondary Scheduler Operator for Red Hat OpenShift。
- 选择 Secondary Scheduler Operator for Red Hat OpenShift 并点 Install。
在 Install Operator 页面中:
- Update channel 设置为 stable,它将为 Red Hat OpenShift 安装 Secondary Scheduler Operator 的最新稳定版本。
- 选择 A specific namespace on the cluster,并从下拉菜单中选择 openshift-secondary-scheduler-operator。
选择一个 更新批准策略。
- Automatic 策略允许 Operator Lifecycle Manager(OLM)在有新版本可用时自动更新 Operator。
- Manual 策略需要拥有适当凭证的用户批准 Operator 更新。
- 点 Install。
-
导航至 Operators
验证
-
导航到 Operators
Installed Operators。 - 验证 Secondary Scheduler Operator for Red Hat OpenShift 已列出,Status 为 Succeeded。
4.10.3.2. 部署二级调度程序
安装 Secondary Scheduler Operator 后,您可以部署二级调度程序。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
- 安装了 Secondary Scheduler Operator for Red Hat OpenShift。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
创建配置映射来保存二级调度程序的配置。
-
进入 Workloads
ConfigMaps。 - 点 Create ConfigMap。
在 YAML 编辑器中,输入包含必要
KubeSchedulerConfiguration
配置的配置映射定义。例如:apiVersion: v1 kind: ConfigMap metadata: name: "secondary-scheduler-config" 1 namespace: "openshift-secondary-scheduler-operator" 2 data: "config.yaml": | apiVersion: kubescheduler.config.k8s.io/v1beta3 kind: KubeSchedulerConfiguration 3 leaderElection: leaderElect: false profiles: - schedulerName: secondary-scheduler 4 plugins: 5 score: disabled: - name: NodeResourcesBalancedAllocation - name: NodeResourcesLeastAllocated
- 1
- 配置映射的名称。这将在创建
SecondaryScheduler
CR 时,在 Scheduler Config 字段中使用。 - 2
- 配置映射必须在
openshift-secondary-scheduler-operator
命名空间中创建。 - 3
- 二级调度程序的
KubeSchedulerConfiguration
资源。如需更多信息,请参阅 Kubernetes API 文档中的KubeSchedulerConfiguration
。 - 4
- 二级调度程序的名称。将其
spec.schedulerName
字段设置为此值的 Pod 会使用这个二级调度程序来调度。 - 5
- 为二级调度程序启用或禁用插件。如需列出默认调度插件,请参阅 Kubernetes 文档中的 调度插件。
- 点 Create。
-
进入 Workloads
创建
SecondaryScheduler
CR:-
导航到 Operators
Installed Operators。 - 选择 Secondary Scheduler Operator for Red Hat OpenShift。
- 选择 Secondary Scheduler 选项卡,然后点 Create SecondaryScheduler。
-
Name 字段默认为
cluster
; 不要更改此名称。 -
Scheduler Config 字段默认为
secondary-scheduler-config
。确保这个值与此流程中创建的配置映射的名称匹配。 在 Scheduler Image 字段中,输入自定义调度程序的镜像名称。
重要红帽不直接支持自定义二级调度程序的功能。
- 点 Create。
-
导航到 Operators
4.10.3.3. 使用二级调度程序调度 pod
要使用二级调度程序调度 pod,请在 pod 定义中设置 schedulerName
字段。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
- 安装了 Secondary Scheduler Operator for Red Hat OpenShift。
- 配置了二级调度程序。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
导航到 Workloads
Pods。 - 点 Create Pod。
在 YAML 编辑器中,输入所需的 pod 配置并添加
schedulerName
字段:apiVersion: v1 kind: Pod metadata: name: nginx namespace: default spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 schedulerName: secondary-scheduler 1
- 1
- 在配置二级调度程序时,
schedulerName
字段必须与配置映射中定义的名称匹配。
- 点 Create。
验证
- 登录到 OpenShift CLI。
使用以下命令描述 pod:
$ oc describe pod nginx -n default
输出示例
Name: nginx Namespace: default Priority: 0 Node: ci-ln-t0w4r1k-72292-xkqs4-worker-b-xqkxp/10.0.128.3 ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 12s secondary-scheduler Successfully assigned default/nginx to ci-ln-t0w4r1k-72292-xkqs4-worker-b-xqkxp ...
-
在事件表中,找到带有与
Successfully assigned <namespace>/<pod_name> to <node_name>
类似消息的事件。 在 "From" 列中,验证事件是从二级调度程序生成的,而不是默认调度程序。
注意您还可以检查
openshift-secondary-scheduler-namespace
中的secondary-scheduler-*
pod 日志,以验证 pod 是否已由二级调度程序调度。
4.10.4. 卸载 Secondary Scheduler Operator
您可以通过卸载 Operator 并删除其相关资源,从 OpenShift Container Platform 中删除 Red Hat OpenShift 的 Secondary Scheduler Operator。
4.10.4.1. 卸载 Secondary Scheduler Operator
您可以使用 Web 控制台为 Red Hat OpenShift 卸载 Secondary Scheduler Operator。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
- 安装了 Secondary Scheduler Operator for Red Hat OpenShift。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
为 Red Hat OpenShift Operator 卸载 Secondary Scheduler Operator。
-
导航到 Operators
Installed Operators。 - 点 Secondary Scheduler Operator 条目旁边的 Options 菜单 ,并点 Uninstall Operator。
- 在确认对话框中,点 Uninstall。
-
导航到 Operators
4.10.4.2. 删除 Secondary Scheduler Operator 资源
另外,在为 Red Hat OpenShift 卸载 Secondary Scheduler Operator 后,您可以从集群中移除其相关资源。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
删除由 Secondary Scheduler Operator 安装的 CRD:
-
进入到 Administration
CustomResourceDefinitions。 -
在 Name 字段中输入
SecondaryScheduler
以过滤 CRD。 - 点 SecondaryScheduler CRD 旁边的 Options 菜单 并选择 Delete Custom Resource Definition:
-
进入到 Administration
删除
openshift-secondary-scheduler-operator
命名空间。-
导航至 Administration
Namespaces。 - 点 openshift-secondary-scheduler-operator 旁边的 Options 菜单 并选择 Delete Namespace。
-
在确认对话框中,在字段中输入
openshift-secondary-scheduler-operator
,再点 Delete。
-
导航至 Administration