4.12. OpenShift Container Platform ノードでのブローカー Pod の配置の制御


ノードセレクター、容認、またはアフィニティーおよび非アフィニティールールを使用して、OpenShift Container Platform ノード上の AMQ Broker Pod の配置を制御できます。

ノードセレクター
ノードセレクターを使用すると、特定のノードでブローカー Pod をスケジュールできます。
Tolerations
容認がノードに設定されたテイントと一致する場合、容認によりノードでブローカー Pod をスケジュールできます。Pod 容認が一致しない場合、テイントにより、ノードは Pod の受け入れを拒否できます。
アフィニティー/非アフィニティー
ノードアフィニティールールは、ノードのラベルに基づいて Pod をスケジュールできるノードを制御します。Pod のアフィニティールールと非アフィニティールールは、そのノードですでに実行されている Pod に基づいて、Pod をスケジュールできるノードを制御します。

4.12.1. ノードセレクターの使用による特定ノードへの Pod の配置

ノードセレクターは、ノードラベルに一致するキーと値のペアを持つノードでブローカー Pod をスケジュールする必要があるキーと値のペアを指定します。

次の例は、特定のノードでブローカー Pod をスケジュールするようにノードセレクターを設定する方法を示しています。

前提条件

手順

  1. メインブローカー CRD に基づいてカスタムリソース (CR) インスタンスを作成します。

    1. OpenShift コマンドラインインターフェイスの使用:

      1. ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。

        oc login -u <user> -p <password> --server=<host:port>
      2. ダウンロードした Operator インストールアーカイブの deploy/crs ディレクトリーに含まれる broker_activemqartemis_cr.yaml というサンプル CR ファイルを開きます。
    2. OpenShift Container Platform Web コンソールの使用

      1. ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとしてコンソールにログインします。
      2. メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、Administration Custom Resource Definitions をクリックします。
      3. ActiveMQArtemis CRD をクリックします。
      4. Instances タブをクリックします。
      5. Create ActiveMQArtemis をクリックします。

        コンソールで、YAML エディターが開き、CR インスタンスを設定できます。

  2. CR の deploymentPlan セクションで、nodeSelector セクションを追加し、Pod のノードを選択するために一致させたいノードラベルを追加します。以下に例を示します。

    spec:
        deploymentPlan:
          nodeSelector:
            app: broker1

    この例では、ブローカー Pod は app: broker1 ラベルを持つノードでスケジュールされます。

  3. CR インスタンスをデプロイします。

    1. OpenShift コマンドラインインターフェイスの使用:

      1. CR ファイルを保存します。
      2. ブローカーデプロイメントを作成するプロジェクトに切り替えます。

        $ oc project <project_name>
      3. CR インスタンスを作成します。

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift Web コンソールの使用

      1. CR の設定が完了したら、Create をクリックします。

関連情報

OpenShift Container Platform のノードセレクターの詳細は、OpenShift Container Platform ドキュメントの ノードセレクターを使用した特定のノードへの Pod の配置 を参照してください。

4.12.2. 容認を使用した Pod の配置の制御

テイントと容認は、特定のノードで Pod をスケジュールできるかできないかを制御します。テイントにより、Pod に一致する容認がない限り、ノードは Pod のスケジュールを拒否できます。テイントを使用すると、ノードから Pod を除外して、ブローカー Pod など、一致する容認を持つ特定の Pod 用にノードを予約することができます。

一致する容認を持つことは、ブローカー Pod をノード上にスケジュールすることを許可しますが、Pod がそのノード上にスケジュールされることを保証するものではありません。テイントが設定されているノードでブローカー Pod が確実にスケジュールされるようにするために、アフィニティールールを設定できます。詳細は、「アフィニティールールと非アフィニティールールを使用した Pod の配置の制御」 を参照してください。

次の例は、ノードで設定されているテイントに一致する容認を設定する方法を示しています。

前提条件

  • CR インスタンスを使用して基本的なブローカーデプロイメントを作成する方法を理解する必要があります。「基本的なブローカーインスタンスのデプロイ」 を参照してください。
  • ブローカー Pod をスケジュールするために予約するノードにテイントを適用します。テイントは、key、value、および effect で構成されています。テイント effect は、以下を決定します。

    • ノード上の既存の Pod が削除されるかどうか
    • 既存の Pod をノードに残すことができるかどうか (ただし、新しい Pod は容認が一致しない限り、スケジュールすることはできない)
    • 必要に応じてノードで新しい Pod をスケジュールできるかどうか (ただし、ノードで新しい Pod をスケジュールしないことが優先される)

テイントの適用の詳細は、OpenShift Container Platform ドキュメントの ノードテイントを使用した Pod 配置の制御 を参照してください。

手順

  1. メインブローカー CRD に基づいてカスタムリソース (CR) インスタンスを作成します。

    1. OpenShift コマンドラインインターフェイスの使用:

      1. ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。

        oc login -u <user> -p <password> --server=<host:port>
      2. ダウンロードした Operator インストールアーカイブの deploy/crs ディレクトリーに含まれる broker_activemqartemis_cr.yaml というサンプル CR ファイルを開きます。
    2. OpenShift Container Platform Web コンソールの使用

      1. ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとしてコンソールにログインします。
      2. メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、Administration Custom Resource Definitions をクリックします。
      3. ActiveMQArtemis CRD をクリックします。
      4. Instances タブをクリックします。
      5. Create ActiveMQArtemis をクリックします。

        コンソールで、YAML エディターが開き、CR インスタンスを設定できます。

  2. CR の deploymentPlan セクションに、tolerations セクションを追加します。tolerations セクションで、一致させたいノードテイントの容認を追加します。以下に例を示します。

    spec:
         deploymentPlan:
            tolerations:
            - key: "app"
              value: "amq-broker"
              effect: "NoSchedule"

    この例では、容認は app=amq-broker:NoSchedule のノードテイントと一致するため、このテイントが設定されているノードで Pod をスケジュールできます。

注記

ブローカー Pod が正しくスケジュールされるようにするには、CR の tolerations セクションで tolerationsSeconds 属性を指定しないでください。

  1. CR インスタンスをデプロイします。

    1. OpenShift コマンドラインインターフェイスの使用:

      1. CR ファイルを保存します。
      2. ブローカーデプロイメントを作成するプロジェクトに切り替えます。

        $ oc project <project_name>
      3. CR インスタンスを作成します。

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift Web コンソールの使用

      1. CR の設定が完了したら、Create をクリックします。

関連情報

OpenShift Container Platform のテイントと容認の詳細は、OpenShift Container Platform ドキュメントの ノードテイントを使用した Pod 配置の制御 を参照してください。

4.12.3. アフィニティールールと非アフィニティールールを使用した Pod の配置の制御

ノードアフィニティールール、Pod アフィニティールール、または Pod 非アフィニティールールを使用して、Pod の配置を制御できます。ノードアフィニティーにより、Pod はターゲットノードのグループに対するアフィニティーを指定できます。Pod のアフィニティーと非アフィニティーを使用すると、ノードですでに実行されている他の Pod に対して、Pod をどのように相対的にスケジュールできるか、またはできないかについてのルールを指定することができます。

4.12.3.1. ノードアフィニティールールを使用した Pod の配置の制御

ノードアフィニティーは、ブローカー Pod が配置可能なノードのグループに対するアフィニティーを指定することができます。ブローカー Pod は、Pod 用に作成したアフィニティールールと同じキーと値のペアを持つラベルを持つ任意のノードでスケジュールできます。

次の例は、ノードアフィニティールールを使用して Pod の配置を制御するようにブローカーを設定する方法を示しています。

前提条件

  • CR インスタンスを使用して基本的なブローカーデプロイメントを作成する方法を理解する必要があります。「基本的なブローカーインスタンスのデプロイ」 を参照してください。
  • ブローカー Pod をスケジュールできる OpenShift Container Platform クラスター内のノードに共通のラベルを割り当てます (例: zone: emea)。

手順

  1. メインブローカー CRD に基づいてカスタムリソース (CR) インスタンスを作成します。

    1. OpenShift コマンドラインインターフェイスの使用:

      1. ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。

        oc login -u <user> -p <password> --server=<host:port>
      2. ダウンロードした Operator インストールアーカイブの deploy/crs ディレクトリーに含まれる broker_activemqartemis_cr.yaml というサンプル CR ファイルを開きます。
    2. OpenShift Container Platform Web コンソールの使用

      1. ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとしてコンソールにログインします。
      2. メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、Administration Custom Resource Definitions をクリックします。
      3. ActiveMQArtemis CRD をクリックします。
      4. Instances タブをクリックします。
      5. Create ActiveMQArtemis をクリックします。

        コンソールで、YAML エディターが開き、CR インスタンスを設定できます。

  2. CR の deploymentPlan セクションに、affinitynodeAffinityrequiredDuringSchedulingIgnoredDuringExecution、および nodeSelectorTerms の各セクションを追加します。nodeSelectorTerms セクションで、- matchExpressions パラメーターを追加し、一致させるノードラベルのキーと値の文字列を指定します。以下に例を示します。

    spec:
        deploymentPlan:
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: zone
                    operator: In
                    values:
                    - emea

    この例では、アフィニティールールにより、キーが zone で値が emea のラベルを持つ任意のノードで Pod をスケジュールできます。

  3. CR インスタンスをデプロイします。

    1. OpenShift コマンドラインインターフェイスの使用:

      1. CR ファイルを保存します。
      2. ブローカーデプロイメントを作成するプロジェクトに切り替えます。

        $ oc project <project_name>
      3. CR インスタンスを作成します。

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift Web コンソールの使用

      1. CR の設定が完了したら、Create をクリックします。

関連情報

OpenShift Container Platform のアフィニティールールの詳細は、OpenShift Container Platform ドキュメントの ノードアフィニティールールを使用したノード上の Pod 配置の制御 を参照してください。

4.12.3.2. 非アフィニティールールを使用して Pod を他の Pod に相対的に配置する

非アフィニティールールを使用すると、そのノードですでに実行されている Pod のラベルに基づいて、ブローカー Pod をスケジュールできるノードを制限することができます。

非アフィニティールールのユースケースとしては、クラスター内の複数のブローカー Pod が同じノードにスケジュールされないようにすることで、単一障害点を発生させないようにすることが挙げられます。Pod の配置を制御しない場合、クラスター内の 2 つ以上のブローカー Pod を同じノードでスケジュールすることができます。

次の例は、非アフィニティールールを設定して、クラスター内の 2 つのブローカー Pod が同じノードでスケジュールされないようにする方法を示しています。

前提条件

手順

  1. メインブローカーの CRD に基づいて、クラスター内の最初のブローカーの CR インスタンスを作成します。

    1. OpenShift コマンドラインインターフェイスの使用:

      1. ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。

        oc login -u <user> -p <password> --server=<host:port>
      2. ダウンロードした Operator インストールアーカイブの deploy/crs ディレクトリーに含まれる broker_activemqartemis_cr.yaml というサンプル CR ファイルを開きます。
    2. OpenShift Container Platform Web コンソールの使用

      1. ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとしてコンソールにログインします。
      2. メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、Administration Custom Resource Definitions をクリックします。
      3. ActiveMQArtemis CRD をクリックします。
      4. Instances タブをクリックします。
      5. Create ActiveMQArtemis をクリックします。

        コンソールで、YAML エディターが開き、CR インスタンスを設定できます。

  2. CR の deploymentPlan セクションに、labels セクションを追加します。最初のブローカー Pod の識別ラベルを作成して、2 番目のブローカー Pod に非アフィニティールールを作成し、両方の Pod が同じノードでスケジュールされないようにします。以下に例を示します。

    spec:
        deploymentPlan:
          labels:
            name: broker1
  3. CR インスタンスをデプロイします。

    1. OpenShift コマンドラインインターフェイスの使用:

      1. CR ファイルを保存します。
      2. ブローカーデプロイメントを作成するプロジェクトに切り替えます。

        $ oc project <project_name>
      3. CR インスタンスを作成します。

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift Web コンソールの使用

      1. CR の設定が完了したら、Create をクリックします。
  4. メインブローカーの CRD に基づいて、クラスター内の 2 番目のブローカーの CR インスタンスを作成します。

    1. CR の deploymentPlan セクションに、affinitypodAntiAffinityrequiredDuringSchedulingIgnoredDuringExecution、および labelSelector の各セクションを追加します。labelSelector セクションで、- matchExpressions パラメーターを追加し、一致するブローカー Pod ラベルのキーと値の文字列を指定して、この Pod が同じノードでスケジュールされないようにします。

      spec:
          deploymentPlan:
            affinity:
              podAntiAffinity:
                requiredDuringSchedulingIgnoredDuringExecution:
                  labelSelector:
                    - matchExpressions:
                    - key: name
                      operator: In
                      values:
                        - broker1
                  topologyKey: topology.kubernetes.io/zone

      この例では、Pod 非アフィニティールールにより、キーが name で値が broker1 のラベル (クラスター内の最初のブローカーに割り当てられたラベル) を持つ Pod と同じノードに Pod が配置されないようにします。

  5. CR インスタンスをデプロイします。

    1. OpenShift コマンドラインインターフェイスの使用:

      1. CR ファイルを保存します。
      2. ブローカーデプロイメントを作成するプロジェクトに切り替えます。

        $ oc project <project_name>
      3. CR インスタンスを作成します。

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift Web コンソールの使用

      1. CR の設定が完了したら、Create をクリックします。

関連情報

OpenShift Container Platform のアフィニティールールの詳細は、OpenShift Container Platform ドキュメントの ノードアフィニティールールを使用したノード上の Pod 配置の制御 を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.