×

您可以通过安装辅助调度程序操作符、部署辅助调度程序并在 Pod 定义中设置辅助调度程序,在 OpenShift Container Platform 中运行自定义辅助调度程序。

安装辅助调度程序操作符

您可以使用 Web 控制台安装 Red Hat OpenShift 的辅助调度程序操作符。

先决条件
  • 您已以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform。

  • 您可以访问 OpenShift Container Platform Web 控制台。

步骤
  1. 登录到 OpenShift Container Platform Web 控制台。

  2. 为 Red Hat OpenShift 的辅助调度程序操作符创建所需的命名空间。

    1. 导航到**管理** → **命名空间**,然后单击**创建命名空间**。

    2. 在**名称**字段中输入openshift-secondary-scheduler-operator,然后单击**创建**。

  3. 安装 Red Hat OpenShift 的辅助调度程序操作符。

    1. 导航到**操作符** → **OperatorHub**。

    2. 在过滤器框中输入**Red Hat OpenShift 的辅助调度程序操作符**。

    3. 选择**Red Hat OpenShift 的辅助调度程序操作符**,然后单击**安装**。

    4. 在**安装操作符**页面上

      1. **更新通道**设置为**稳定**,这将安装 Red Hat OpenShift 的辅助调度程序操作符的最新稳定版本。

      2. 选择**集群上的特定命名空间**,然后从下拉菜单中选择**openshift-secondary-scheduler-operator**。

      3. 选择**更新批准**策略。

        • **自动**策略允许操作符生命周期管理器 (OLM) 在有新版本可用时自动更新操作符。

        • **手动**策略需要具有相应凭据的用户批准操作符更新。

      4. 单击**安装**。

验证
  1. 导航到**操作符** → **已安装的操作符**。

  2. 验证**Red Hat OpenShift 的辅助调度程序操作符**是否已列出,且**状态**为**成功**。

部署辅助调度程序

安装辅助调度程序操作符后,您可以部署辅助调度程序。

先决条件
  • 您已以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform。

  • 您可以访问 OpenShift Container Platform Web 控制台。

  • 已安装 Red Hat OpenShift 的辅助调度程序操作符。

步骤
  1. 登录到 OpenShift Container Platform Web 控制台。

  2. 创建 ConfigMap 以保存辅助调度程序的配置。

    1. 导航到**工作负载** → **ConfigMap**。

    2. 单击**创建 ConfigMap**。

    3. 在 YAML 编辑器中,输入包含必要的 KubeSchedulerConfiguration 配置的 ConfigMap 定义。例如

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: "secondary-scheduler-config"                  (1)
        namespace: "openshift-secondary-scheduler-operator" (2)
      data:
        "config.yaml": |
          apiVersion: kubescheduler.config.k8s.io/v1
          kind: KubeSchedulerConfiguration                  (3)
          leaderElection:
            leaderElect: false
          profiles:
            - schedulerName: secondary-scheduler            (4)
              plugins:                                      (5)
                score:
                  disabled:
                    - name: NodeResourcesBalancedAllocation
                    - name: NodeResourcesLeastAllocated
      1 配置映射的名称。在创建SecondaryScheduler CR时,这将用于**调度程序配置**字段。
      2 配置映射必须在openshift-secondary-scheduler-operator命名空间中创建。
      3 次要调度程序的KubeSchedulerConfiguration资源。更多信息,请参见Kubernetes API文档中的KubeSchedulerConfiguration
      4 次要调度程序的名称。将spec.schedulerName字段设置为此值的 Pod 将由此次要调度程序调度。
      5 要为次要调度程序启用或禁用的插件。有关默认调度插件的列表,请参见Kubernetes文档中的调度插件
    4. 单击**创建**。

  3. 创建SecondaryScheduler CR

    1. 导航到**操作符** → **已安装的操作符**。

    2. 选择**Red Hat OpenShift 的次要调度程序操作符**。

    3. 选择**次要调度程序**选项卡,然后单击**创建 SecondaryScheduler**。

    4. **名称**字段默认为cluster;请勿更改此名称。

    5. **调度程序配置**字段默认为secondary-scheduler-config。确保此值与之前在此过程中创建的配置映射的名称匹配。

    6. 在**调度程序镜像**字段中,输入自定义调度程序的镜像名称。

      Red Hat 不直接支持自定义次要调度程序的功能。

    7. 单击**创建**。

使用次要调度程序调度 Pod

要使用次要调度程序调度 Pod,请在 Pod 定义中设置schedulerName字段。

先决条件
  • 您已以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform。

  • 您可以访问 OpenShift Container Platform Web 控制台。

  • 已安装 Red Hat OpenShift 的辅助调度程序操作符。

  • 已配置次要调度程序。

步骤
  1. 登录到 OpenShift Container Platform Web 控制台。

  2. 导航到**工作负载**→**Pod**。

  3. 单击**创建 Pod**。

  4. 在 YAML 编辑器中,输入所需的 Pod 配置并添加schedulerName字段。

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
      namespace: default
    spec:
      securityContext:
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
      containers:
        - name: nginx
          image: nginx:1.14.2
          ports:
            - containerPort: 80
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop: [ALL]
      schedulerName: secondary-scheduler (1)
    1 schedulerName字段必须与配置次要调度程序时在配置映射中定义的名称匹配。
  5. 单击**创建**。

验证
  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. 在“来源”列中,验证事件是由次要调度程序而不是默认调度程序生成的。

    您还可以检查openshift-secondary-scheduler-namespace中的secondary-scheduler-* Pod 日志,以验证 Pod 是否由次要调度程序调度。