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. Secondary Scheduler Operator for Red Hat OpenShift 1.1.3 发行注记

发布日期:2023 年 10 月 26 日

以下公告对于 Secondary Scheduler Operator for Red Hat OpenShift 1.1.3 可用:

4.10.2.1.1. 程序错误修复
  • 此 Secondary Scheduler Operator 发行版本解决了 CVE 报告的安全漏洞问题。
4.10.2.1.2. 已知问题
  • 目前,您无法通过 Secondary Scheduler Operator 部署其他资源,如配置映射、CRD 或 RBAC 策略。自定义二级调度程序所需的角色和角色绑定以外的任何资源都必须外部应用。(WRKLDS-645)

4.10.2.2. Red Hat OpenShift 1.1.2 的 Secondary Scheduler Operator 发行注记

发布日期:2023 年 3 月 23 日

以下公告可用于 Red Hat OpenShift 1.1.2 的 Secondary Scheduler Operator:

4.10.2.2.1. 程序错误修复
  • 此 Secondary Scheduler Operator 发行版本解决了几个常见漏洞和暴露 (CVE)。
4.10.2.2.2. 已知问题
  • 目前,您无法通过 Secondary Scheduler Operator 部署其他资源,如配置映射、CRD 或 RBAC 策略。自定义二级调度程序所需的角色和角色绑定以外的任何资源都必须外部应用。(WRKLDS-645)

4.10.2.3. Red Hat OpenShift 1.1.0 的 Secondary Scheduler Operator 发行注记

发布日期: 2022-9-1

以下公告可用于 Red Hat OpenShift 1.1.0 的 Secondary Scheduler Operator:

4.10.2.3.1. 新功能及功能增强
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 控制台。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 为 Red Hat OpenShift 创建 Secondary Scheduler Operator 所需的命名空间。

    1. 进行 AdministrationNamespaces,点 Create Namespace
    2. Name 字段中输入 openshift-secondary-scheduler-operator,再点 Create
  3. 为 Red Hat OpenShift 安装 Secondary Scheduler Operator。

    1. 导航至 OperatorsOperatorHub
    2. 在过滤器框中输入 Secondary Scheduler Operator for Red Hat OpenShift
    3. 选择 Secondary Scheduler Operator for Red Hat OpenShift 并点 Install
    4. Install Operator 页面中:

      1. Update channel 设置为 stable,它将为 Red Hat OpenShift 安装 Secondary Scheduler Operator 的最新稳定版本。
      2. 选择 A specific namespace on the cluster,并从下拉菜单中选择 openshift-secondary-scheduler-operator
      3. 选择一个 更新批准策略

        • Automatic 策略允许 Operator Lifecycle Manager(OLM)在有新版本可用时自动更新 Operator。
        • Manual 策略需要拥有适当凭证的用户批准 Operator 更新。
      4. Install

验证

  1. 导航到 OperatorsInstalled Operators
  2. 验证 Secondary Scheduler Operator for Red Hat OpenShift 已列出,StatusSucceeded

4.10.3.2. 部署二级调度程序

安装 Secondary Scheduler Operator 后,您可以部署二级调度程序。

先决条件

  • 您可以使用 cluster-admin 权限访问集群。
  • 访问 OpenShift Container Platform web 控制台。
  • 安装了 Secondary Scheduler Operator for Red Hat OpenShift。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 创建配置映射来保存二级调度程序的配置。

    1. 进入 WorkloadsConfigMaps
    2. Create ConfigMap
    3. 在 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 文档中的 调度插件
    4. Create
  3. 创建 SecondaryScheduler CR:

    1. 导航到 OperatorsInstalled Operators
    2. 选择 Secondary Scheduler Operator for Red Hat OpenShift
    3. 选择 Secondary Scheduler 选项卡,然后点 Create SecondaryScheduler
    4. Name 字段默认为 cluster; 不要更改此名称。
    5. Scheduler Config 字段默认为 secondary-scheduler-config。确保这个值与此流程中创建的配置映射的名称匹配。
    6. Scheduler Image 字段中,输入自定义调度程序的镜像名称。

      重要

      红帽不直接支持自定义二级调度程序的功能。

    7. Create

4.10.3.3. 使用二级调度程序调度 pod

要使用二级调度程序调度 pod,请在 pod 定义中设置 schedulerName 字段。

先决条件

  • 您可以使用 cluster-admin 权限访问集群。
  • 访问 OpenShift Container Platform web 控制台。
  • 安装了 Secondary Scheduler Operator for Red Hat OpenShift。
  • 配置了二级调度程序。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 导航到 WorkloadsPods
  3. Create Pod
  4. 在 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 字段必须与配置映射中定义的名称匹配。
  5. Create

验证

  1. 登录到 OpenShift CLI。
  2. 使用以下命令描述 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
    ...

  3. 在事件表中,找到带有与 Successfully assigned <namespace>/<pod_name> to <node_name> 类似消息的事件。
  4. 在 "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。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 为 Red Hat OpenShift Operator 卸载 Secondary Scheduler Operator。

    1. 导航到 OperatorsInstalled Operators
    2. Secondary Scheduler Operator 条目旁边的 Options 菜单 kebab ,并点 Uninstall Operator
    3. 在确认对话框中,点 Uninstall

4.10.4.2. 删除 Secondary Scheduler Operator 资源

另外,在为 Red Hat OpenShift 卸载 Secondary Scheduler Operator 后,您可以从集群中移除其相关资源。

先决条件

  • 您可以使用 cluster-admin 权限访问集群。
  • 访问 OpenShift Container Platform web 控制台。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 删除由 Secondary Scheduler Operator 安装的 CRD:

    1. 进入到 AdministrationCustomResourceDefinitions
    2. Name 字段中输入 SecondaryScheduler 以过滤 CRD。
    3. SecondaryScheduler CRD 旁边的 Options 菜单 kebab 并选择 Delete Custom Resource Definition:
  3. 删除 openshift-secondary-scheduler-operator 命名空间。

    1. 导航至 AdministrationNamespaces
    2. openshift-secondary-scheduler-operator 旁边的 Options 菜单 kebab 并选择 Delete Namespace
    3. 在确认对话框中,在字段中输入 openshift-secondary-scheduler-operator,再点 Delete