4.10. セカンダリースケジューラー

4.10.1. セカンダリースケジューラーの概要

Secondary Scheduler Operator をインストールして、デフォルトのスケジューラーと共にカスタムのセカンダリースケジューラーを実行して Pod をスケジュールすることができます。

4.10.1.1. セカンダリースケジューラー Operator について

Red Hat OpenShift のセカンダリースケジューラー Operator は、OpenShift Container Platform でカスタムセカンダリースケジューラーをデプロイする方法を提供します。セカンダリースケジューラーは、デフォルトのスケジューラーと共に実行され、Pod をスケジュールします。Pod 設定は、使用するスケジューラーを指定できます。

カスタムスケジューラーには /bin/kube-scheduler バイナリーが必要であり、Kubernetes スケジューリングフレームワーク をベースとする必要があります。

重要

Secondary Scheduler Operator を使用してカスタムセカンダリースケジューラーを OpenShift Container Platform にデプロイできますが、Red Hat はカスタムセカンダリースケジューラーの機能を直接サポートしません。

セカンダリースケジューラー Operator は、セカンダリースケジューラーで必要なデフォルトのロールおよびロールバインディングを作成します。セカンダリースケジューラーの KubeSchedulerConfiguration リソースを設定することにより、有効または無効にするスケジューリングプラグインを指定できます。

4.10.2. Red Hat OpenShift リリースノートのセカンダリースケジューラー Operator

Red Hat OpenShift のセカンダリースケジューラー Operator を使用すると、カスタムセカンダリースケジューラーを OpenShift Container Platform クラスターにデプロイできます。

本リリースノートでは、Red Hat OpenShift のセカンダリースケジューラー Operator の開発を追跡します。

詳細については、Secondary Scheduler Operator について を参照してください。

4.10.2.1. Red Hat OpenShift 1.1.3 の Secondary Scheduler Operator のリリースノート

発行日: 2023-10-26

以下のアドバイザリーは、Red Hat OpenShift 1.1.3 の Secondary Scheduler Operator で利用できます。

4.10.2.1.1. バグ修正
  • Secondary Scheduler Operator のこのリリースでは、Common Vulnerabilities and Exposures (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 年 8 月 23 日

以下のアドバイザリーは、Red Hat OpenShift 1.1.2 の セカンダリースケジューラー Operator で利用できます。

4.10.2.2.1. バグ修正
  • Secondary Scheduler Operator のこのリリースでは、いくつかの Common Vulnerabilities and Exposures (CVE) に対処しています。
4.10.2.2.2. 既知の問題
  • 現時点で、Secondary Scheduler Operator を使用して設定マップ、CRD、RBAC ポリシーなどの追加のリソースをデプロイできません。カスタムセカンダリースケジューラーに必要なロールとロールバインディング以外のリソースは、外部から適用する必要があります。(WRKLDS-645)

4.10.2.3. Red Hat OpenShift 1.1.0 のセカンダリースケジューラー Operator のリリースノート

発行日: 2022-9-1

以下のアドバイザリーは、Red Hat OpenShift 1.1.0 のセカンダリースケジューラー Operator で利用できます。

4.10.2.3.1. 新機能および機能拡張
4.10.2.3.2. 既知の問題
  • 現時点で、Secondary Scheduler Operator を使用して設定マップ、CRD、RBAC ポリシーなどの追加のリソースをデプロイできません。カスタムセカンダリースケジューラーに必要なロールとロールバインディング以外のリソースは、外部から適用する必要があります。(BZ#2071684)

4.10.3. セカンダリースケジューラーを使用した Pod のスケジューリング

OpenShift Container Platform でカスタムセカンダリースケジューラーを実行するには、セカンダリースケジューラー Operator をインストールし、セカンダリースケジューラーをデプロイし、セカンダリースケジューラーを Pod 定義に設定します。

4.10.3.1. セカンダリースケジューラー Operator のインストール

Web コンソールを使用して、Red Hat OpenShift の Secondary Scheduler Operator をインストールできます。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • OpenShift Container Platform Web コンソールにアクセスできる。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. Red Hat OpenShift のセカンダリースケジューラー Operator に必要な namespace を作成します。

    1. AdministrationNamespaces に移動し、Create Namespace をクリックします。
    2. Name フィールドに openshift-secondary-scheduler-operator を入力し、Create をクリックします。
  3. Red Hat OpenShift 用のセカンダリースケジューラー Operator をインストールします。

    1. OperatorsOperatorHub に移動します。
    2. フィルターボックスに Red Hat の SecondarySchedulerOperator と入力します。
    3. Red Hat OpenShift 用の Secondary Scheduler Operator を選択し、Install をクリックします。
    4. Install Operator ページで以下を行います。

      1. Update チャネルstable に設定され、Red Hat OpenShift 用の Secondary Scheduler Operator の最新の安定したリリースをインストールします。
      2. クラスターで特定の namespace を 選択し、ドロップダウンメニューから openshift-secondary-scheduler-operator を選択します。
      3. Update approval strategy を選択します。

        • Automatic ストラテジーにより、Operator Lifecycle Manager (OLM) は新規バージョンが利用可能になると Operator を自動的に更新できます。
        • Manual ストラテジーには、Operator の更新を承認するための適切な認証情報を持つユーザーが必要です。
      4. Install をクリックします。

検証

  1. OperatorsInstalled Operators に移動します。
  2. Red Hat OpenShift の Secondary Scheduler OperatorStatusSucceeded の状態でリスト表示されていることを確認します。

4.10.3.2. セカンダリースケジューラーのデプロイ

Secondary Scheduler Operator のインストール後に、セカンダリースケジューラーをデプロイできます。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • OpenShift Container Platform Web コンソールにアクセスできる。
  • Red Hat OpenShift のセカンダリースケジューラー Operator がインストールされている。

手順

  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 namespace に作成される必要があります。
      3
      セカンダリースケジューラーの KubeSchedulerConfiguration リソース。詳細は、Kubernetes API ドキュメントの KubeSchedulerConfiguration を参照してください。
      4
      セカンダリースケジューラーの名前。spec.schedulerName フィールドをこの値に設定する Pod はこのセカンダリースケジューラーでスケジュールされます。
      5
      セカンダリースケジューラーに対して有効または無効にするプラグイン。デフォルトのスケジューリングプラグインのリストについては、Kubernetes ドキュメントの スケジューリングプラグ インを参照してください。
    4. Create をクリックします。
  3. SecondaryScheduler CR を作成します。

    1. OperatorsInstalled Operators に移動します。
    2. Red Hat OpenShift の Secondary Scheduler Operator を選択します。
    3. Secondary Scheduler タブを選択し、Create SecondaryScheduler をクリックします。
    4. Name フィールドはデフォルトで cluster に設定されます。この名前は変更しないでください。
    5. Scheduler Config フィールドは secondary-scheduler-config にデフォルト設定されます。この値は、この手順で先に作成した設定マップの名前と一致していることを確認してください。
    6. Scheduler Image フィールドにカスタムスケジューラーのイメージ名を入力します。

      重要

      Red Hat では、カスタムのセカンダリースケジューラーの機能を直接サポートしません。

    7. Create をクリックします。

4.10.3.3. セカンダリースケジューラーを使用した Pod のスケジューリング

セカンダリースケジューラーを使用して Pod をスケジュールするには、Pod 定義の schedulerName フィールドを設定します。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • OpenShift Container Platform Web コンソールにアクセスできる。
  • Red Hat OpenShift のセカンダリースケジューラー Operator がインストールされている。
  • セカンダリースケジューラーが設定されています。

手順

  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-namespacesecondary-scheduler-* Pod ログをチェックして、Pod がセカンダリースケジューラーによってスケジュールされていることを確認することもできます。

4.10.4. セカンダリースケジューラー Operator のアンインストール

Operator をアンインストールして関連リソースを削除することにより、Red Hat OpenShift のセカンダリースケジューラー Operator を OpenShift Container Platform から削除できます。

4.10.4.1. セカンダリースケジューラー Operator のアンインストール

Web コンソールを使用して、Red Hat OpenShift のセカンダリースケジューラー Operator をアンインストールできます。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • OpenShift Container Platform Web コンソールにアクセスできる。
  • Red Hat OpenShift のセカンダリースケジューラー Operator がインストールされている。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. Red Hat OpenShift Operator のセカンダリースケジューラー Operator をアンインストールします。

    1. OperatorsInstalled Operators に移動します。
    2. セカンダリースケジューラーの Operator エントリーの隣にあるオプションメニュー kebab をクリックし、Operator のアンインストール をクリックします。
    3. 確認ダイアログで、Uninstall をクリックします。

4.10.4.2. Secondary Scheduler Operator リソースの削除

オプションで、Red Hat の 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 namespace を削除します。

    1. AdministrationNamespaces に移動します。
    2. openshift-secondary-scheduler-operator の横にあるオプションメニュー kebab をクリックし、namespace の削除 を選択します。
    3. 確認ダイアログで、フィールドに openshift-secondary-scheduler-operator を入力し、Delete をクリックします。