クラスター管理

Red Hat OpenShift Service on AWS 4

Red Hat OpenShift Service on AWS クラスターの設定

概要

本書では、Red Hat OpenShift Service on AWS (ROSA) クラスターの設定について説明します。

第1章 プライベート接続の設定

1.1. プライベート接続の設定

プライベートクラスターのアクセスは、Red Hat OpenShift Service on AWS (ROSA) 環境のニーズに合わせて実装できます。

手順

  1. ROSA AWS アカウントにアクセスし、以下の方法のいずれかを使用してクラスターへのプライベート接続を確立します。

    • AWS VPC ピアリングの設定: VPC ピアリングを有効にして、2 つのプライベート IP アドレス間のネットワークトラフィックをルーティングできるようにします。
    • AWS VPN の設定: プライベートネットワークを Amazon Virtual Private Cloud にセキュアに接続するために、仮想プライベートネットワークを確立します。
    • AWS Direct Connect の設定: プライベートネットワークと AWS Direct Connect の場所との間に専用のネットワーク接続を確立するように AWS Direct Connect を設定します。
  2. ROSA でプライベートクラスターを設定します

1.2. AWS VPC ピアリングの設定

このサンプルプロセスでは、Red Hat OpenShift Service on AWS クラスターが含まれる Amazon Web Services (AWS) VPC を、別の AWS VPC ネットワークとピア接続するように設定します。AWS VPC ピアリング接続の作成または他の設定に関する詳細は、AWS VPC Peering ガイドを参照してください。

1.2.1. VPC ピアリングの用語

2 つの別々の AWS アカウントで 2 つの VPC 間で VPC ピアリング接続を設定する場合は、以下の用語が使用されます。

Red Hat OpenShift Service on AWS の AWS アカウント

Red Hat OpenShift Service on AWS クラスターが含まれる AWS アカウント。

Red Hat OpenShift Service on AWS クラスター VPC

Red Hat OpenShift Service on AWS クラスターが含まれる VPC。

Customer AWS アカウント

ピア接続する Red Hat OpenShift Service on AWS 以外の AWS アカウント。

Customer VPC

ピア接続する AWS アカウントの VPC。

Customer VPC リージョン

お客様の VPC が置かれるリージョン。

注記

2018 年 7 月時点で、AWS は、中国を除く すべての商業地域でのリージョン間の VPC ピアリングをサポートします。

1.2.2. VPC ピア要求の開始

VPC ピアリング接続要求を Red Hat OpenShift Service on AWS アカウントから Customer AWS アカウントに送信できます。

前提条件

  • ピア要求を開始するために必要な Customer VPC に関する以下の情報を収集します。

    • Customer AWS アカウント番号
    • Customer VPC ID
    • Customer VPC リージョン
    • Customer VPC CIDR
  • Red Hat OpenShift Service on AWS クラスター VPC で使用される CIDR ブロックを確認します。Customer VPC の CIDR ブロックとの重複や一致があると、この 2 つの VPC 間のピアリングは実行できません。詳細は、Amazon VPC の サポートされていない VPC ピアリング設定 を参照してください。CIDR ブロックが重複していない場合は、手順を続行できます。

手順

  1. AWS の AWS アカウントで Red Hat OpenShift Service の Web コンソールにログインし、クラスターがホストされるリージョンの VPC Dashboard に移動します。
  2. Peering Connections ページに移動し、 Create Peering Connection ボタンをクリックします。
  3. ログインしているアカウントの詳細と、接続しているアカウントおよび VPC の詳細を確認します。

    1. Peering connection name tag: VPC ピアリング接続を説明する名前を設定します。
    2. VPC (Requester): ドロップダウン *リストから Red Hat OpenShift Service on AWS クラスター VPC ID を選択します。
    3. Account: Another account を選択し、Customer AWS アカウント番号 *(ダッシュなし) を指定します。
    4. Region: Customer VPC リージョンが現在のリージョンと異なる場合は、Another Region を選択し、ドロップダウンリストからお客様の VPC リージョンを選択します。
    5. VPC (Accepter): Customer VPC ID を設定します。
  4. Create Peering Connection をクリックします。
  5. 要求の状態が Pending になっていることを確認します。Failed 状態になった場合は、詳細を確認し、このプロセスを繰り返します。

1.2.3. VPC ピア要求の許可

VPC ピアリング接続を作成したら、Customer AWS アカウントで要求を受け入れる必要があります。

前提条件

  • VPC ピア要求を開始します。

手順

  1. AWS Web Console にログインします。
  2. VPC Service に移動します。
  3. Peering Connections に移動します。
  4. Pending peering connection をクリックします。
  5. 要求の発信元の AWS アカウントおよび VPC ID を確認します。これは、Red Hat OpenShift Service on AWS の AWS アカウントおよび Red Hat OpenShift Service on AWS クラスター VPC から取得する必要があります。
  6. Accept Request をクリックします。

1.2.4. ルーティングテーブルの設定

VPC のピアリング要求を受け入れた後に、両方の VPC がピアリング接続間で通信するようにルートを設定する必要があります。

前提条件

  • VPC ピア要求を開始して、受け入れている。

手順

  1. Red Hat OpenShift Service on AWS の AWS アカウントで AWS Web Console にログインします。
  2. VPC Service に移動してから Route Tables に移動します。
  3. Red Hat OpenShift Service on AWS クラスター VPC の Route Table を選択します。

    注記

    クラスターによっては、特定の VPC に複数のルートテーブルが存在する場合があります。明示的に関連付けられた多数のサブネットを持つプライベートのルートテーブルを選択します。

  4. Routes タブを選択してから Edit を選択します。
  5. Destination テキストボックスに Customer VPC CIDR ブロックを入力します。
  6. Target テキストボックスにピアリング接続 ID を入力します。
  7. Save をクリックします。
  8. 他の VPC の CIDR ブロックで同じプロセスを完了する必要があります。

    1. Customer AWS Web Console → VPC ServiceRoute Tables にログインします。
    2. VPC の Route Table を選択します。
    3. Routes タブを選択してから Edit を選択します。
    4. Destination テキストボックスに Red Hat OpenShift Service on AWS クラスター VPC CIDR ブロックを入力します。
    5. Target テキストボックスにピアリング接続 ID を入力します。
    6. Save をクリックします。

VPC ピアリング接続が完了しました。検証手順に従い、ピアリング接続間の接続が機能していることを確認します。

1.2.5. VPC ピアリング設定の確認およびトラブルシューティング

VPC ピアリング接続を設定したら、これが設定されており、正常に機能していることを確認することが推奨されます。

前提条件

  • VPC ピア要求を開始して、受け入れている。
  • ルーティングテーブルを設定している。

手順

  • AWS コンソールで、ピア接続されるクラスター VPC のルートテーブルを確認します。ルーティングテーブルの設定手順に従い、ピアリング接続のターゲットに VPC CIDR 範囲の宛先を指定するルートテーブルエントリーがあることを確認します。

    正しいルートが Red Hat OpenShift Service on AWS クラスター VPC ルートテーブルおよび Customer VPC ルートテーブルの両方で使用されることが予想される場合は、接続を以下の netcat メソッドを使用してテストする必要があります。テスト呼び出しが正常に行われる場合は、VPC ピアリングが正常に機能します。

  • エンドポイントデバイスへのネットワーク接続をテストする場合のトラブルシューティングツールとしては、nc (または netcat) が役に立ちます。これはデフォルトのイメージに含まれ、接続を確立できる場合に迅速かつ明確に出力を提供します。

    1. busybox イメージを使用して一時的な Pod を作成します。これは後で自身をクリーンアップします。

      $ oc run netcat-test \
          --image=busybox -i -t \
          --restart=Never --rm \
          -- /bin/sh
    2. nc を使用して接続を確認します。

      • 正常な接続の結果の例:

        / nc -zvv 192.168.1.1 8080
        10.181.3.180 (10.181.3.180:8080) open
        sent 0, rcvd 0
      • 失敗した接続の結果の例:

        / nc -zvv 192.168.1.2 8080
        nc: 10.181.3.180 (10.181.3.180:8081): Connection refused
        sent 0, rcvd 0
    3. コンテナーを終了します。これにより、Pod が自動的に削除されます。

      / exit

1.3. AWS VPN の設定

このサンプルプロセスでは、Amazon Web Services (AWS) Red Hat OpenShift Service on AWS を、お客様のオンサイトのハードウェア VPN デバイスを使用するように設定します。

注記

現時点で AWS VPN は、NAT を VPN トラフィックに適用するための管理オプションを提供しません。詳細は、AWS Knowledge Center を参照してください。

注記

プライベート接続を使用したすべてのトラフィックのルーティング (0.0.0.0/0 など) はサポートされていません。この場合は、SRE 管理トラフィックを無効にするインターネットゲートウェイを削除する必要があります。

ハードウェア VPN デバイスを使用して AWS VPC をリモートネットワークに接続する方法は、Amazon VPC の VPN Connections ドキュメントを参照してください。

1.3.1. VPN 接続の作成

以下の手順に従って、Amazon Web Services (AWS) Red Hat OpenShift Service on AWS クラスターを、お客様のオンサイトのハードウェア VPN デバイスを使用できるように設定できます。

前提条件

  • ハードウェア VPN ゲートウェイデバイスモデルおよびソフトウェアバージョン (例: Cisco ASA バージョン 8.3 を実行)。Amazon VPC の ネットワーク管理者ガイド を参照して、お使いのゲートウェイデバイスが AWS でサポートされているかどうかを確認します。
  • VPN ゲートウェイデバイスのパブリック静的 IP アドレス。
  • BGP または静的ルーティング: BGP の場合は、ASN が必要です。静的ルーティングの場合は、1 つ以上の静的ルートを設定する必要があります。
  • オプション: VPN 接続をテストするための到達可能なサービスの IP およびポート/プロトコル。

1.3.1.1. VPN 接続の設定

手順

  1. AWS の AWS Account Dashboard で Red Hat OpenShift Service にログインし、VPC Dashboard に移動します。
  2. Your VPCs をクリックし、Red Hat OpenShift Service on AWS クラスターが含まれる VPC の名前および VPC ID を特定します。
  3. VPC Dashboard から、Customer Gateway をクリックします。
  4. Create Customer Gateway をクリックし、これに意味のある名前を指定します。
  5. ルーティング方法 (Dynamic または Static) を選択します。
  6. Dynamic の場合は、表示されるフィールドに BGP ASN を入力します。
  7. VPN ゲートウェイエンドポイント IP アドレスに貼り付けます。
  8. Create をクリックします。
  9. 仮想プライベートゲートウェイが目的の VPC に割り当てられていない場合:

    1. VPC Dashboard から、Virtual Private Gateway をクリックします。
    2. Create Virtual Private Gateway をクリックし、意味のある名前を指定して Create をクリックします。
    3. デフォルトの Amazon デフォルト ASN のままにします。
    4. 新たに作成したゲートウェイを選択し、Attach to VPC をクリックし、これを以前に指定したクラスター VPC に割り当てます。

1.3.1.2. VPN 接続の確立

手順

  1. VPC Dashboard から、Site-to-Site VPN Connections をクリックします。
  2. Create VPN Connection をクリックします。

    1. これに意味のある名前タグを指定します。
    2. 以前に作成した仮想プライベートゲートウェイを選択します。
    3. Customer Gateway については、Existing を選択します。
    4. 名前でカスタマーゲートウェイデバイスを選択します。
    5. VPN が BGP を使用する場合は Dynamic を選択し、それ以外の場合は Static を選択します。静的 IP CIDR を入力します。複数の CIDR がある場合は、各 CIDR を Another Rule として追加します。
    6. Create をクリックします。
    7. VPN のステータスが Available に変更するまで待機します (約 5 分から 10 分)。
  3. 作成したばかりの VPN を選択し、Download Configuration をクリックします。

    1. ドロップダウンリストから、カスタマーゲートウェイデバイスのベンダー、プラットフォーム、およびバージョンを選択し、Download をクリックします。
    2. Generic ベンダー設定は、プレーンテキスト形式で情報を取得する場合にも利用できます。
注記

VPN 接続が確立されたら、Route Propagation をセットアップしてください。セットアップしない場合、VPN が予想通りに機能しない可能性があります。

注記

VPC サブネット情報をメモします。これは、リモートネットワークとして設定に追加する必要があります。

1.3.1.3. VPN ルート伝播の有効化

VPN 接続を設定したら、必要なルートが VPC のルートテーブルに追加されるように、ルートの伝播が有効にされていることを確認する必要があります。

手順

  1. VPC Dashboard から、Route Tables をクリックします。
  2. Red Hat OpenShift Service on AWS クラスターが含まれる VPC に関連付けられたプライベートルートテーブルを選択します。

    注記

    クラスターによっては、特定の VPC に複数のルートテーブルが存在する場合があります。明示的に関連付けられた多数のサブネットを持つプライベートのルートテーブルを選択します。

  3. Route Propagation タブをクリックします。
  4. 表示される表に、以前に作成した仮想プライベートゲートウェイが表示されるはずです。Propagate column の値を確認します。

    1. Propagate (伝播) が No に設定されている場合は、Edit route propagation をクリックし、仮想プライベートゲートウェイの名前の横にある Propagate チェックボックスを確認して Save をクリックします。

VPN トンネルを設定し、AWS がこれを Up として検出すると、静的ルートまたは BGP ルートは自動的にルートテーブルに追加されます。

1.3.2. VPN 接続の確認

ご使用の側から VPN トンネルを設定した後に、そのトンネルが AWS コンソールで稼働していること、およびトンネル全体で接続が機能していることを確認します。

前提条件

  • VPN 接続を作成します。

手順

  1. トンネルが AWS で稼働していることを確認します。

    1. VPC Dashboard から、VPN Connections をクリックします。
    2. 以前に作成した VPN 接続を選択し、Tunnel Details タブをクリックします。
    3. 1 つ以上の VPN トンネルが Up になっていることを確認できます。
  2. 接続を確認します。

    エンドポイントデバイスへのネットワーク接続をテストする場合のトラブルシューティングツールとしては、nc (または netcat) が役に立ちます。これはデフォルトのイメージに含まれ、接続を確立できる場合に迅速かつ明確に出力を提供します。

    1. busybox イメージを使用して一時的な Pod を作成します。これは後で自身をクリーンアップします。

      $ oc run netcat-test \
          --image=busybox -i -t \
          --restart=Never --rm \
          -- /bin/sh
    2. nc を使用して接続を確認します。

      • 正常な接続の結果の例:

        / nc -zvv 192.168.1.1 8080
        10.181.3.180 (10.181.3.180:8080) open
        sent 0, rcvd 0
      • 失敗した接続の結果の例:

        / nc -zvv 192.168.1.2 8080
        nc: 10.181.3.180 (10.181.3.180:8081): Connection refused
        sent 0, rcvd 0
    3. コンテナーを終了します。これにより、Pod が自動的に削除されます。

      / exit

1.3.3. VPN 接続のトラブルシューティング

トンネルが接続されていない

トンネル接続がまだ ダウン している場合は、以下を確認できます。

  • AWS トンネルは VPN 接続を開始しません。接続の試行はカスタマーゲートウェイから開始する必要があります。
  • ソーストラフィックが、設定されたカスタマーゲートウェイと同じ IP から送信されることを確認します。AWS は、ソース IP アドレスが一致しないゲートウェイへのすべてのトラフィックを通知なしでドロップします。
  • 設定が AWS でサポートされる 値と一致することを確認します。これには、IKE バージョン、DH グループ、IKE ライフタイムなどが含まれます。
  • VPC のルートテーブルを再確認します。伝播が有効で、先にターゲットとして作成した仮想プライベートゲートウェイを持つルートテーブルにエントリーがあることを確認します。
  • 中断が発生する可能性があるファイアウォールルールが存在しないことを確認します。
  • ポリシーベースの VPN を使用しているかどうかを確認します。これを使用している場合は、その設定によっては複雑な状態が生じる可能性があります。
  • トラブルシューティングの手順についての詳細は、AWS ナレッジセンター を参照してください。
トンネルが接続状態にならない

トンネル接続を一貫して Up の状態にすることができない場合は、すべての AWS トンネル接続がゲートウェイから開始される必要があることに注意してください。AWS トンネルは トンネリングを開始しません

Red Hat は、ご使用の側から SLA モニター (Cisco ASA) または一部のデバイスをセットアップすることを推奨しています。これにより、VPC CIDR 範囲内で設定されるすべての IP アドレスで、 pingnctelnet などの対象 (interesting) トラフィックが絶えず送信されます。接続が成功したかどうかにかかわらず、トラフィックがトンネルにダイレクトされます。

Down 状態のセカンダリートンネル

VPN トンネルが作成されると、AWS は追加のフェイルオーバートンネルを作成します。ゲートウェイデバイスによっては、セカンダリートンネルが Down 状態として表示される場合があります。

AWS 通知は以下のようになります。

You have new non-redundant VPN connections

One or more of your vpn connections are not using both tunnels. This mode of
operation is not highly available and we strongly recommend you configure your
second tunnel. View your non-redundant VPN connections.

1.4. AWS Direct Connect の設定

このプロセスでは、Red Hat OpenShift Service on AWS で AWS Direct Connect 仮想インターフェイスを受け入れる方法について説明します。AWS Direct Connect のタイプおよび設定についての詳細は、AWS Direct Connect コンポーネント を参照してください。

1.4.1. AWS Direct Connect の方法

Direct Connect 接続には、Direct Connect Gateway (DXGateway) に接続されるホスト型の仮想インターフェイス (VIF) が必要です。これは、同じまたは別のアカウントでリモート VPC にアクセスするために、Virtual Gateway (VGW) または Transit Gateway に関連付けられます。

既存の DXValidation がない場合、通常のプロセスではホストされた VIF を作成し、Red Hat OpenShift Service on AWS の AWS アカウントに DXValidation および VGW が作成されます。

既存の DXGateway が 1 つ以上の既存の VGW に接続されている場合、このプロセスでは、Red Hat OpenShift Service on AWS の AWS アカウントが Association Proposal (関連付けの提案) を DXGateway の所有者に送信します。DXGateway の所有者は、提案される CIDR が関連付けのあるその他の VGW と競合しないことを確認する必要があります。

詳細は、以下の AWS ドキュメントを参照してください。

重要

既存の DXValidation への接続は、有料 となります。

選択可能な設定オプションは、以下の 2 つです。

方法 1

ホストされた VIF を作成してから、DXGateway および VGW を作成します。

方法 2

所有する既存の Direct Connect ゲートウェイ経由で接続を要求します。

1.4.2. ホストされた仮想インターフェイスの作成

前提条件

  • AWS の AWS Account ID で Red Hat OpenShift Service を収集する。

1.4.2.1. Direct Connect 接続のタイプの決定

Direct Connect 仮想インターフェイスの詳細を表示して、接続の種類を判別します。

手順

  1. AWS の AWS Account Dashboard の Red Hat OpenShift Service にログインし、正しいリージョンを選択します。
  2. Services メニューから Direct Connect を選択します。
  3. 受け入れを待機している 1 つ以上の仮想インターフェイスがあります。いずれかの仮想インターフェイスを選択して Summary を表示します。
  4. 仮想インターフェイスタイプ (private または public) を表示します。
  5. Amazon side ASN の値を記録します。

Direct Connect 仮想インターフェイスの種類が Private の場合は、仮想プライベートゲートウェイが作成されます。Direct Connect Virtual Interface が Public の場合は、Direct Connect Gateway が作成されます。

1.4.2.2. Private Direct Connect の作成

Direct Connect Virtual Interface タイプが Private の場合は、Private Direct Connect が作成されます。

手順

  1. AWS の AWS Account Dashboard の Red Hat OpenShift Service にログインし、正しいリージョンを選択します。
  2. AWS リージョンで、Services メニューから VPC を選択します。
  3. VPN Connections から Virtual Private Gateways を選択します。
  4. Create Virtual Private Gateway をクリックします。
  5. 仮想プライベートゲートウェイに適切な名前を指定します。
  6. Custom ASN を選択し、先に収集された Amazon side ASN の値を入力します。
  7. 仮想プライベートゲートウェイを作成します。
  8. 新規に作成された仮想プライベートゲートウェイをクリックし、Actions タブで Attach to VPC を選択します。
  9. 一覧から Red Hat OpenShift Service on AWS Cluster VPC を選択し、Virtual Private Gateway を VPC に割り当てます。
  10. Services メニューで、Direct Connect をクリックします。一覧から Direct Connect 仮想インターフェイスのいずれかを選択します。
  11. I understand that Direct Connect port charges apply once I click Accept Connection メッセージを確認したら Accept Connection を選択します。
  12. 仮想プライベートゲートウェイ接続に対して Accept を選択し、前の手順で作成した仮想プライベートゲートウェイを選択します。
  13. Accept を選択して接続を受け入れます。
  14. 仮想インターフェイスが複数ある場合は、直前の手順を繰り返します。

1.4.2.3. Public Direct Connect の作成

Direct Connect Virtual Interface タイプが Public の場合は、Public Direct Connect が作成されます。

手順

  1. AWS の AWS Account Dashboard の Red Hat OpenShift Service にログインし、正しいリージョンを選択します。
  2. AWS の AWS アカウントリージョンの Red Hat OpenShift Service の Services メニューから Direct Connect を選択します。
  3. Direct Connect Gateways および Create Direct Connect Gateway を選択します。
  4. Direct Connect Gateway に適切な名前を付けます。
  5. Amazon side ASN で、以前に収集した Amazon side ASN 値を入力します。
  6. Direct Connect Gateway を作成します。
  7. Services メニューから Direct Connect を選択します。
  8. 一覧から Direct Connect 仮想インターフェイスのいずれかを選択します。
  9. I understand that Direct Connect port charges apply once I click Accept Connection メッセージを確認したら Accept Connection を選択します。
  10. Direct Connect Gateway Connection に対して Accept を選択し、直前の手順で作成した Direct Connect Gateway を選択します。
  11. Accept をクリックして接続を受け入れます。
  12. 仮想インターフェイスが複数ある場合は、直前の手順を繰り返します。

1.4.2.4. 仮想インターフェイスの確認

Direct Connect 仮想インターフェイスが許可されたら、少しの間待機してから、インターフェイスの状態を確認します。

手順

  1. AWS の AWS Account Dashboard の Red Hat OpenShift Service にログインし、正しいリージョンを選択します。
  2. AWS の AWS アカウントリージョンの Red Hat OpenShift Service の Services メニューから Direct Connect を選択します。
  3. 一覧から Direct Connect 仮想インターフェイスのいずれかを選択します。
  4. インターフェイスの状態が Available になったことを確認します。
  5. インターフェイス BGP のステータスが Up になったことを確認します。
  6. 残りの Direct Connect インターフェイスに対してこの検証を繰り返します。

Direct Connect Virtual Interface が利用可能になった後に、AWS の AWS Account Dashboard で Red Hat OpenShift Service にログインし、ユーザーの側の設定用に Direct Connect 設定ファイルをダウンロードできます。

1.4.3. 既存の Direct Connect ゲートウェイへの接続

前提条件

  • AWS VPC の Red Hat OpenShift Service の CIDR 範囲が、関連付けた他の VGW と競合しないことを確認します。
  • 以下の情報を収集します。

    • Direct Connect Gateway ID。
    • 仮想インターフェイスに関連付けられた AWS アカウント ID。
    • DXGateway に割り当てられた BGP ASN。必要に応じて、Amazon のデフォルト ASN も使用できます。

手順

  1. AWS の AWS Account Dashboard の Red Hat OpenShift Service にログインし、正しいリージョンを選択します。
  2. AWS の AWS アカウントリージョンの Red Hat OpenShift Service の Services メニューから VPC を選択します。
  3. VPN Connections から、Virtual Private Gateways を選択します。
  4. Create Virtual Private Gateway を選択します。
  5. 仮想プライベートゲートウェイに適切な名前を指定します。
  6. Custom ASN をクリックし、以前に使用された Amazon side ASN 値を入力するか、Amazon で提供される ASN を使用します。
  7. 仮想プライベートゲートウェイを作成します。
  8. AWS の AWS Account Dashboard の Red Hat OpenShift Service の Navigation ペインで、 Virtual private gateways を選択してから仮想プライベートゲートウェイを選択します。View details を選択します。
  9. Direct Connect gateway associations を選択し、 Associate Direct Connect gateway をクリックします。
  10. Association account type で、 Account の所有者に Another account を選択します。
  11. Direct Connect gateway owner に、Direct Connect ゲートウェイを所有する AWS アカウントの ID を入力します。
  12. Direct Connect ゲートウェイ ID の Association settings に、Direct Connect ゲートウェイの ID を入力します。
  13. Association settings に、仮想インターフェイスの所有者について、関連付けのために仮想インターフェイスを所有する AWS アカウントの ID を入力します。
  14. オプション: 接頭辞を Allowed の接頭辞に追加し、それらをコンマで区切ります。
  15. Associate Direct Connect gateway を選択します。
  16. Association Proposal (関連付けの提案) が送信されたら、承認されるのを待っています。実行する必要のある最終手順は、AWS ドキュメンテーション を参照してください。

1.4.4. Direct Connect のトラブルシューティング

トラブルシューティングの詳細は、AWS Direct Connect のトラブルシューティング を参照してください。

第2章 ノード

2.1. マシンプールについて

Red Hat OpenShift Service on AWS は、クラウドインフラストラクチャーで柔軟性があり動的なプロビジョニング方法としてマシンプールを使用します。

主要なリソースは、マシン、コンピューティングマシンセット、およびマシンプールです。

重要

Red Hat OpenShift Service on AWS バージョン 4.8.35、4.9.26、4.10.6 の時点で、Red Hat OpenShift Service on AWS におけるデフォルトの Pod ごとの PID 制限は 4096 です。この PID 制限を有効にする場合は、Red Hat OpenShift Service on AWS クラスターをこれらのバージョン以降にアップグレードする必要があります。以前のバージョンの Red Hat OpenShift Service on AWS クラスターでは、デフォルトの PID 制限である 1024 が使用されます。

Red Hat OpenShift Service on AWS クラスターで Pod ごとの PID 制限を設定することはできません。

2.1.1. Machines

マシンは、ワーカーノードのホストを記述する基本的な単位です。

2.1.2. マシンセット

MachineSet リソースは、計算マシンのグループです。より多くのマシンが必要な場合、またはマシンをスケールダウンする必要がある場合は、コンピュートマシンセットが属するマシンプール内のレプリカの数を変更します。

マシンセットは ROSA で直接変更することができません。

2.1.3. マシンプール

マシンプールは、マシンセットを計算するための上位レベルの構造です。

コンピュートマシンプールは、アベイラビリティーゾーン全体で同じ設定のクローンがすべて含まれるマシンセットを作成します。マシンプールは、ワーカーノードですべてのホストノードのプロビジョニング管理アクションを実行します。より多くのマシンが必要な場合、またはマシンをスケールダウンする必要がある場合は、コンピュートのニーズに合わせてマシンプール内のレプリカの数を変更してください。スケーリングは手動または自動の設定ができます。

デフォルトで、クラスターは 1 つのマシンプールを使用して作成されます。追加のマシンプールを既存クラスターに追加し、デフォルトのマシンプールを変更して、マシンプールを削除できます。

1 つのクラスターに複数のマシンプールが存在する可能性があり、それぞれが異なるタイプまたは異なるサイズのノードを持つことができます。

2.1.4. 複数のゾーンクラスターのマシンプール

複数のアベイラビリティーゾーン (Multi-AZ) クラスターにマシンプールを作成する場合は、1 つのマシンプールに 3 つのゾーンがあります。次に、マシンプールは、合計 3 つのコンピュートマシンセット (クラスター内のゾーンごとに 1 つ) を作成します。これらの各コンピュートマシンセットは、それぞれのアベイラビリティーゾーンで 1 つ以上のマシンを管理します。

新しい Multi-AZ クラスターを作成すると、マシンプールはそれらのゾーンに自動的に複製されます。マシンプールを既存の Multi-AZ に追加すると、そのゾーンに新しいプールが自動的に作成されます。同様に、マシンプールを削除するとすべてのゾーンから削除されます。この相乗効果により、Multi-AZ クラスターでマシンプールを使用すると、マシンプールを作成するときに、特定のリージョンに対するプロジェクトのクォータをより多く消費する可能性があります。

2.1.5. 関連情報

2.2. コンピュートノードの管理

本書では、Red Hat OpenShift Service on AWS (ROSA) でコンピュート (ワーカーとも呼ばれる) ノードを管理する方法について説明します。

コンピュートノードの変更の大半は、マシンプールで設定されます。マシンプール は、管理を容易にするために、同じ設定を持つクラスター内のコンピュートノードのグループです。

スケーリング、ノードラベルの追加、テイントの追加などのマシンプール設定オプションを編集できます。

2.2.1. マシンセットの作成

デフォルトのマシンプールは、Red Hat OpenShift Service on AWS (ROSA) クラスターのインストール時に作成されます。インストール後に、OpenShift Cluster Manager または ROSA CLI (rosa) を使用して、クラスターの追加のマシンプールを作成できます。

2.2.1.1. OpenShift Cluster Manager を使用したマシンプールの作成

OpenShift Cluster Manager を使用して、Red Hat OpenShift Service on AWS (ROSA) クラスターに追加のマシンプールを作成できます。

前提条件

  • ROSA クラスターを作成している。

手順

  1. OpenShift Cluster Manager Hybrid Cloud Console に移動し、クラスターを選択します。
  2. Machine pools タブで、Add machine pool をクリックします。
  3. マシンプール名 を追加します。
  4. ドロップダウンメニューから Worker node instance type を選択します。インスタンスタイプは、マシンプール内の各コンピュートノードの仮想 CPU およびメモリー割り当てを定義します。

    注記

    プールを作成した後に、マシンプールのインスタンスタイプを変更することはできません。

  5. オプション: マシンプールの自動スケーリングを設定します。

    1. Enable autoscaling を選択し、デプロイメントのニーズを満たすためにマシンプール内のマシン数を自動的にスケーリングします。
    2. 自動スケーリングの最小および最大のノード数制限を設定します。Cluster Autoscaler は、指定する制限を超えてマシンプールノード数を減らしたり、増やしたりできません。

      • 単一アベイラビリティーゾーンを使用してクラスターをデプロイした場合は、最小および最大のノード数 を設定します。これは、アベイラビリティーゾーンのコンピュートノードの最小および最大の制限を定義します。
      • 複数のアベイラビリティーゾーンを使用してクラスターをデプロイした場合は、Minimum nodes per zone および Maximum nodes per zone を設定します。これは、ゾーンごとの最小および最大のコンピュート制限を定義します。

        注記

        または、マシンプールの作成後にマシンプールの自動スケーリングを設定できます。

  6. 自動スケーリングを有効にしていない場合は、コンピュートノードの数を選択します。

    • 単一アベイラビリティーゾーンを使用してクラスターをデプロイした場合は、ドロップダウンメニューから ワーカーノード数 を選択します。これは、ゾーンのマシンプールにプロビジョニングするコンピュートノードの数を定義します。
    • 複数のアベイラビリティーゾーンを使用してクラスターをデプロイした場合は、ドロップダウンメニューから ワーカーノードの数 (ゾーンごと) を選択します。これは、ゾーンごとにマシンプールにプロビジョニングするコンピュートノードの数を定義します。
  7. オプション: マシンプールのノードラベルおよびテイントを追加します。

    1. Edit node labels and taints メニューを展開します。
    2. Node labels で、ノードラベルの Key および Value のエントリーを追加します。
    3. Taints で、テイントの Key および Value エントリーを追加します。
    4. テイントごとに、ドロップダウンメニューから Effect を選択します。使用できるオプションには、NoSchedulePreferNoSchedule、および NoExecute が含まれます。

      注記

      または、マシンプールの作成後にノードラベルおよびテイントを追加できます。

  8. オプション: マシンプールを保証なしの AWS Spot インスタンスとしてデプロイするように設定するには、Amazon EC2 Spot インスタンスを使用します。

    1. Use Amazon EC2 Spot Instances を選択します。
    2. オンデマンドのインスタンス価格を使用するには、Use On-Demand instance price を選択したままにします。または、Set maximum price を選択して、Spot インスタンスの 1 時間ごとの最大価格を定義します。

      Amazon EC2 Spot インスタンスの詳細は、AWS のドキュメント を参照してください。

      重要

      Amazon EC2 Spot インスタンスはいつでも中断する可能性があります。Amazon EC2 Spot インスタンスは、中断に対応できるワークロードにのみ使用します。

      注記

      マシンプールに Use Amazon EC2 Spot Instances を選択すると、マシンプールの作成後にオプションを無効にすることはできません。

  9. Add machine pool をクリックしてマシンプールを作成します。

検証

  • マシンプールが Machine pools ページに表示され、設定が想定どおりに表示されていることを確認します。

2.2.1.2. ROSA CLI を使用したマシンプールの作成

ROSA CLI (rosa) を使用して、Red Hat OpenShift Service on AWS (ROSA) クラスターの追加のマシンプールを作成できます。

前提条件

  • ワークステーションに最新の AWS (aws)、ROSA (rosa)、OpenShift (oc) の CLI をインストールして設定している。
  • rosa CLI を使用して Red Hat アカウントにログインしている。
  • ROSA クラスターを作成している。

手順

  • 自動スケーリングを使用しないマシンプールを追加するには、マシンプールを作成し、インスタンスタイプ、コンピュート (ワーカーとも呼ばれる) ノード数、およびノードラベルを定義します。

    $ rosa create machinepool --cluster=<cluster-name> \
                              --name=<machine_pool_id> \ 1
                              --replicas=<replica_count> \ 2
                              --instance-type=<instance_type> \ 3
                              --labels=<key>=<value>,<key>=<value> \ 4
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ 5
                              --use-spot-instances \ 6
                              --spot-max-price=0.5 7
    1
    マシンプールの名前を指定します。<machine_pool_id> をマシンプールの名前に置き換えます。
    2
    プロビジョニングするコンピュートノードの数を指定します。単一アベイラビリティーゾーンを使用して ROSA をデプロイしている場合は、ゾーンのマシンプールにプロビジョニングするコンピュートノードの数を定義します。複数のアベイラビリティーゾーンを使用してクラスターをデプロイしている場合は、全ゾーンでプロビジョニングするコンピュートノードの数を定義し、その数は 3 の倍数である必要があります。--replicas 引数は、自動スケーリングが設定されていない場合に必要です。
    3
    オプション: マシンプールのコンピュートノードのインスタンスタイプを設定します。インスタンスタイプは、プール内の各コンピュートノードの仮想 CPU およびメモリー割り当てを定義します。<instance_type> をインスタンスタイプに置き換えます。デフォルトは m5.xlarge です。プールを作成した後に、マシンプールのインスタンスタイプを変更することはできません。
    4
    オプション: マシンプールのラベルを定義します。<key>=<value>,<key>=<value> は、キーと値のペアのコンマ区切りリストに置き換えます (例: --labels=key1=value1,key2=value2)。
    5
    オプション: マシンプールのテイントを定義します。<key>=<value>:<effect>,<key>=<value>:<effect> は、各テイントのキー、値、および影響に置き換えます (例: --taints=key1=value1:NoSchedule,key2=value2:NoExecute)。利用可能な影響には、NoSchedulePreferNoSchedule、および NoExecute が含まれます。
    6
    オプション: マシンプールは、保証なしの AWS Spot インスタンスとしてデプロイするように設定します。詳細は、AWS ドキュメントの Amazon EC2 Spot Instances を参照してください。マシンプールに Use Amazon EC2 Spot Instances を選択すると、マシンプールの作成後にオプションを無効にすることはできません。
    7
    オプション: Spot インスタンスを使用する場合は、この引数を指定して Spot インスタンスの 1 時間ごとの最大価格を定義できます。この引数が指定されていない場合は、オンデマンドの価格が使用されます。
    重要

    Amazon EC2 Spot インスタンスはいつでも中断する可能性があります。Amazon EC2 Spot インスタンスは、中断に対応できるワークロードにのみ使用します。

    以下の例では、m5.xlarge インスタンスタイプを使用し、コンピュートノードレプリカが 2 つ含まれる mymachinepool という名前のマシンプールを作成します。この例では、ワークロード固有のラベルも 2 つ追加します。

    $ rosa create machinepool --cluster=mycluster --name=mymachinepool --replicas=2 --instance-type=m5.xlarge --labels=app=db,tier=backend

    出力例

    I: Machine pool 'mymachinepool' created successfully on cluster 'mycluster'
    I: To view all machine pools, run 'rosa list machinepools -c mycluster'

  • 自動スケーリングを使用するマシンプールを追加するには、マシンプールを作成して、自動スケーリング設定、インスタンスタイプ、およびノードラベルを定義します。

    $ rosa create machinepool --cluster=<cluster-name> \
                              --name=<machine_pool_id> \ 1
                              --enable-autoscaling \ 2
                              --min-replicas=<minimum_replica_count> \ 3
                              --max-replicas=<maximum_replica_count> \ 4
                              --instance-type=<instance_type> \ 5
                              --labels=<key>=<value>,<key>=<value> \ 6
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ 7
                              --use-spot-instances \ 8
                              --spot-max-price=0.5 9
    1
    マシンプールの名前を指定します。<machine_pool_id> をマシンプールの名前に置き換えます。
    2
    マシンプールの自動スケーリングを有効にし、デプロイメントのニーズに対応します。
    3 4
    コンピュートノードの最小および最大の制限を定義します。Cluster Autoscaler は、指定する制限を超えてマシンプールノード数を減らしたり、増やしたりできません。単一アベイラビリティーゾーンを使用して ROSA をデプロイしている場合、--min-replicas 引数および --max-replicas 引数は、ゾーンのマシンプールに自動スケーリング制限を定義します。複数のアベイラビリティーゾーンを使用してクラスターをデプロイしている場合に、すべてのゾーンにおける自動スケーリングの制限を引数で定義し、その数は 3 の倍数である必要があります。
    5
    オプション: マシンプールのコンピュートノードのインスタンスタイプを設定します。インスタンスタイプは、プール内の各コンピュートノードの仮想 CPU およびメモリー割り当てを定義します。<instance_type> をインスタンスタイプに置き換えます。デフォルトは m5.xlarge です。プールを作成した後に、マシンプールのインスタンスタイプを変更することはできません。
    6
    オプション: マシンプールのラベルを定義します。<key>=<value>,<key>=<value> は、キーと値のペアのコンマ区切りリストに置き換えます (例: --labels=key1=value1,key2=value2)。
    7
    オプション: マシンプールのテイントを定義します。<key>=<value>:<effect>,<key>=<value>:<effect> は、各テイントのキー、値、および影響に置き換えます (例: --taints=key1=value1:NoSchedule,key2=value2:NoExecute)。利用可能な影響には、NoSchedulePreferNoSchedule、および NoExecute が含まれます。
    8
    オプション: マシンプールは、保証なしの AWS Spot インスタンスとしてデプロイするように設定します。詳細は、AWS ドキュメントの Amazon EC2 Spot Instances を参照してください。マシンプールに Use Amazon EC2 Spot Instances を選択すると、マシンプールの作成後にオプションを無効にすることはできません。
    9
    オプション: Spot インスタンスを使用する場合は、この引数を指定して Spot インスタンスの 1 時間ごとの最大価格を定義できます。この引数が指定されていない場合は、オンデマンドの価格が使用されます。
    重要

    Amazon EC2 Spot インスタンスはいつでも中断する可能性があります。Amazon EC2 Spot インスタンスは、中断に対応できるワークロードにのみ使用します。

    以下の例では、m5.xlarge インスタンスタイプを使用し、自動スケーリングが有効になっている mymachinepool という名前のマシンプールを作成します。コンピュートノードの最小制限は 3 で、最大制限は全体で 6 です。この例では、ワークロード固有のラベルも 2 つ追加します。

    $ rosa create machinepool --cluster=mycluster --name=mymachinepool --enable-autoscaling --min-replicas=3 --max-replicas=6 --instance-type=m5.xlarge --labels=app=db,tier=backend

    出力例

    I: Machine pool 'mymachinepool' created successfully on cluster 'mycluster'
    I: To view all machine pools, run 'rosa list machinepools -c mycluster'

検証

  1. クラスターで利用可能なマシンプールを一覧表示します。

    $ rosa list machinepools --cluster=<cluster_name>

    出力例

    ID             AUTOSCALING  REPLICAS  INSTANCE TYPE  LABELS                  TAINTS    AVAILABILITY ZONES                    SPOT INSTANCES
    Default        No           3         m5.xlarge                                        us-east-1a, us-east-1b, us-east-1c    N/A
    mymachinepool  Yes          3-6       m5.xlarge      app=db, tier=backend              us-east-1a, us-east-1b, us-east-1c    No

  2. マシンプールが出力に含まれ、設定が想定どおりであることを確認します。

関連情報

2.2.2. コンピュートノードの手動によるスケーリング

マシンプールの自動スケーリングを有効にしていない場合は、デプロイメントのニーズに合わせてプール内のコンピュート (ワーカーとも呼ばれる) ノードの数を手動でスケーリングできます。

各マシンプールを個別にスケーリングする必要があります。

前提条件

  • ワークステーションに最新の AWS (aws)、ROSA (rosa)、OpenShift (oc) の CLI をインストールして設定している。
  • rosa CLI を使用して Red Hat アカウントにログインしている。
  • Red Hat OpenShift Service on AWS (ROSA) クラスターを作成している。
  • 既存のマシンプールがある。

手順

  1. クラスターのマシンプールを一覧表示します。

    $ rosa list machinepools --cluster=<cluster_name>

    出力例

    ID        AUTOSCALING   REPLICAS    INSTANCE TYPE  LABELS    TAINTS   AVAILABILITY ZONES
    default   No            2           m5.xlarge                        us-east-1a
    mp1       No            2           m5.xlarge                        us-east-1a

  2. マシンプール内のコンピュートノードのレプリカ数を増減します。

    $ rosa edit machinepool --cluster=<cluster_name> \
                            --replicas=<replica_count> \ 1
                            <machine_pool_id> 2
    1
    単一アベイラビリティーゾーンを使用して Red Hat OpenShift Service on AWS (ROSA) をデプロイしている場合、レプリカ数はゾーンのマシンプールにプロビジョニングするコンピュートノードの数を定義します。複数のアベイラビリティーゾーンを使用してクラスターをデプロイしている場合は、すべてのゾーンでマシンプール内のコンピュートノードの合計数を定義し、その数は 3 の倍数である必要があります。
    2
    <machine_pool_id> を、前述のコマンドの出力に表示されているマシンプールの ID に置き換えます。

検証

  1. クラスターで利用可能なマシンプールを一覧表示します。

    $ rosa list machinepools --cluster=<cluster_name>

    出力例

    ID        AUTOSCALING   REPLICAS    INSTANCE TYPE  LABELS    TAINTS   AVAILABILITY ZONES
    default   No            2           m5.xlarge                        us-east-1a
    mp1       No            3           m5.xlarge                        us-east-1a

  2. 上記のコマンドの出力で、コンピュートノードのレプリカ数がマシンプールで想定通りに設定されていることを確認します。この出力例では、mp1 マシンプールのコンピュートノードレプリカ数は 3 にスケーリングされています。

2.2.3. ノードラベル

ラベルは、Node オブジェクトに適用されるキーと値のペアです。ラベルを使用して一連のオブジェクトを整理し、Pod のスケジューリングを制御できます。

クラスターの作成中または後にラベルを追加できます。ラベルはいつでも変更または更新できます。

関連情報

2.2.3.1. ノードラベルのマシンプールへの追加

いつでもコンピュート (ワーカーとも呼ばれる) ノードのラベルを追加または編集して、適切な方法でノードを管理します。たとえば、ワークロードのタイプを特定のノードに割り当てることができます。

ラベルは key-value ペアとして割り当てられます。各キーは、割り当てられたオブジェクトに固有のものである必要があります。

前提条件

  • ワークステーションに最新の AWS (aws)、ROSA (rosa)、OpenShift (oc) の CLI をインストールして設定している。
  • rosa CLI を使用して Red Hat アカウントにログインしている。
  • Red Hat OpenShift Service on AWS (ROSA) クラスターを作成している。
  • 既存のマシンプールがある。

手順

  1. クラスターのマシンプールを一覧表示します。

    $ rosa list machinepools --cluster=<cluster_name>

    出力例

    ID           AUTOSCALING  REPLICAS  INSTANCE TYPE  LABELS    TAINTS    AVAILABILITY ZONES    SPOT INSTANCES
    Default      No           2         m5.xlarge                          us-east-1a            N/A
    db-nodes-mp  No           2         m5.xlarge                          us-east-1a            No

  2. マシンプールのノードラベルを追加または更新します。

    • 自動スケーリングを使用しないマシンプールのノードラベルを追加または更新するには、以下のコマンドを実行します。

      $ rosa edit machinepool --cluster=<cluster_name> \
                              --replicas=<replica_count> \ 1
                              --labels=<key>=<value>,<key>=<value> \ 2
                              <machine_pool_id>
      1
      自動スケーリングを使用しないマシンプールの場合は、ノードラベルの追加時にレプリカ数を指定する必要があります。--replicas 引数を指定しないと、コマンドが完了する前にレプリカ数の入力を求めるプロンプトが出されます。単一アベイラビリティーゾーンを使用して Red Hat OpenShift Service on AWS (ROSA) をデプロイしている場合、レプリカ数はゾーンのマシンプールにプロビジョニングするコンピュートノードの数を定義します。複数のアベイラビリティーゾーンを使用してクラスターをデプロイしている場合は、すべてのゾーンでマシンプール内のコンピュートノードの合計数を定義し、その数は 3 の倍数である必要があります。
      2
      <key>=<value>,<key>=<value> は、キーと値のペアのコンマ区切りリストに置き換えます (例: --labels=key1=value1,key2=value2)。この一覧は、継続的にノードラベルに加えられるすべての変更を上書きします。

      以下の例では、ラベルを db-nodes-mp マシンプールに追加します。

      $ rosa edit machinepool --cluster=mycluster --replicas=2 --labels=app=db,tier=backend db-nodes-mp

      出力例

      I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'

    • 自動スケーリングを使用するマシンプールのノードラベルを追加または更新するには、以下のコマンドを実行します。

      $ rosa edit machinepool --cluster=<cluster_name> \
                              --min-replicas=<minimum_replica_count> \ 1
                              --max-replicas=<maximum_replica_count> \ 2
                              --labels=<key>=<value>,<key>=<value> \ 3
                              <machine_pool_id>
      1 2
      自動スケーリングを使用するマシンプールの場合は、最小および最大のコンピュートノードレプリカ制限を指定する必要があります。引数を指定しないと、コマンドが完了する前に値の入力が求められます。Cluster Autoscaler は、指定する制限を超えてマシンプールノード数を減らしたり、増やしたりできません。単一アベイラビリティーゾーンを使用して ROSA をデプロイしている場合、--min-replicas 引数および --max-replicas 引数は、ゾーンのマシンプールに自動スケーリング制限を定義します。複数のアベイラビリティーゾーンを使用してクラスターをデプロイしている場合に、すべてのゾーンにおける自動スケーリングの制限を引数で定義し、その数は 3 の倍数である必要があります。
      3
      <key>=<value>,<key>=<value> は、キーと値のペアのコンマ区切りリストに置き換えます (例: --labels=key1=value1,key2=value2)。この一覧は、継続的にノードラベルに加えられるすべての変更を上書きします。

      以下の例では、ラベルを db-nodes-mp マシンプールに追加します。

      $ rosa edit machinepool --cluster=mycluster --min-replicas=2 --max-replicas=3 --labels=app=db,tier=backend db-nodes-mp

      出力例

      I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'

検証

  1. クラスターで利用可能なマシンプールを一覧表示します。

    $ rosa list machinepools --cluster=<cluster_name>

    出力例

    ID           AUTOSCALING  REPLICAS  INSTANCE TYPE  LABELS                  TAINTS    AVAILABILITY ZONES    SPOT INSTANCES
    Default      No           2         m5.xlarge                                        us-east-1a            N/A
    db-nodes-mp  No           2         m5.xlarge      app=db, tier=backend              us-east-1a            No

  2. 出力内のマシンプールにラベルが含まれていることを確認します。

2.2.4. マシンプールへのテイントの追加

マシンプールにコンピュート (ワーカーとも呼ばれる) ノードにテイントを追加して、そのノードにスケジュールされる Pod を制御できます。テイントをマシンプールに適用すると、Pod 仕様にテイントの容認が含まれない限り、スケジューラーは Pod をプールに配置できません。

前提条件

  • ワークステーションに最新の AWS (aws)、ROSA (rosa)、OpenShift (oc) の CLI をインストールして設定している。
  • rosa CLI を使用して Red Hat アカウントにログインしている。
  • Red Hat OpenShift Service on AWS (ROSA) クラスターを作成している。
  • 既存のマシンプールがある。

手順

  1. クラスターのマシンプールを一覧表示します。

    $ rosa list machinepools --cluster=<cluster_name>

    出力例

    ID           AUTOSCALING  REPLICAS  INSTANCE TYPE  LABELS    TAINTS    AVAILABILITY ZONES    SPOT INSTANCES
    Default      No           2         m5.xlarge                          us-east-1a            N/A
    db-nodes-mp  No           2         m5.xlarge                          us-east-1a            No

  2. マシンプールのテイントを追加または更新します。

    • 自動スケーリングを使用しないマシンプールのテイントを追加または更新するには、以下のコマンドを実行します。

      $ rosa edit machinepool --cluster=<cluster_name> \
                              --replicas=<replica_count> \ 1
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ 2
                              <machine_pool_id>
      1
      自動スケーリングを使用しないマシンプールの場合は、テイントの追加時にレプリカ数を指定する必要があります。--replicas 引数を指定しないと、コマンドが完了する前にレプリカ数の入力を求めるプロンプトが出されます。単一アベイラビリティーゾーンを使用して Red Hat OpenShift Service on AWS (ROSA) をデプロイしている場合、レプリカ数はゾーンのマシンプールにプロビジョニングするコンピュートノードの数を定義します。複数のアベイラビリティーゾーンを使用してクラスターをデプロイしている場合は、すべてのゾーンでマシンプール内のコンピュートノードの合計数を定義し、その数は 3 の倍数である必要があります。
      2
      <key>=<value>:<effect>,<key>=<value>:<effect> は、各テイントのキー、値、および影響に置き換えます (例: --taints=key1=value1:NoSchedule,key2=value2:NoExecute)。影響として NoSchedulePreferNoSchedule、および NoExecute が使用できます。このリストは、ノードテイントに加えられた変更を継続的に上書きします。

      以下の例では、テイントを db-nodes-mp マシンプールに追加します。

      $ rosa edit machinepool --cluster=mycluster --replicas 2 --taints=key1=value1:NoSchedule,key2=value2:NoExecute db-nodes-mp

      出力例

      I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'

    • 自動スケーリングを使用するマシンプールのテイントを追加または更新するには、以下のコマンドを実行します。

      $ rosa edit machinepool --cluster=<cluster_name> \
                              --min-replicas=<minimum_replica_count> \ 1
                              --max-replicas=<maximum_replica_count> \ 2
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ 3
                              <machine_pool_id>
      1 2
      自動スケーリングを使用するマシンプールの場合は、最小および最大のコンピュートノードレプリカ制限を指定する必要があります。引数を指定しないと、コマンドが完了する前に値の入力が求められます。Cluster Autoscaler は、指定する制限を超えてマシンプールノード数を減らしたり、増やしたりできません。単一アベイラビリティーゾーンを使用して ROSA をデプロイしている場合、--min-replicas 引数および --max-replicas 引数は、ゾーンのマシンプールに自動スケーリング制限を定義します。複数のアベイラビリティーゾーンを使用してクラスターをデプロイしている場合に、すべてのゾーンにおける自動スケーリングの制限を引数で定義し、その数は 3 の倍数である必要があります。
      3
      <key>=<value>:<effect>,<key>=<value>:<effect> は、各テイントのキー、値、および影響に置き換えます (例: --taints=key1=value1:NoSchedule,key2=value2:NoExecute)。影響として NoSchedulePreferNoSchedule、および NoExecute が使用できます。このリストは、ノードテイントに加えられた変更を継続的に上書きします。

      以下の例では、テイントを db-nodes-mp マシンプールに追加します。

      $ rosa edit machinepool --cluster=mycluster --min-replicas=2 --max-replicas=3 --taints=key1=value1:NoSchedule,key2=value2:NoExecute db-nodes-mp

      出力例

      I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'

検証

  1. クラスターで利用可能なマシンプールを一覧表示します。

    $ rosa list machinepools --cluster=<cluster_name>

    出力例

    ID           AUTOSCALING  REPLICAS  INSTANCE TYPE  LABELS    TAINTS                                           AVAILABILITY ZONES    SPOT INSTANCES
    Default      No           2         m5.xlarge                                                                 us-east-1a            N/A
    db-nodes-mp  No           2         m5.xlarge                key1=value1:NoSchedule, key2=value2:NoExecute    us-east-1a            No

  2. 出力にマシンプールのテイントが含まれていることを確認します。

2.2.5. 関連情報

2.3. クラスターでのノードの自動スケーリングについて

自動スケーリングオプションは、クラスター内のマシンの数を自動的にスケーリングするように設定できます。

Cluster Autoscaler は、リソース不足のために現在のノードのいずれにもスケジュールできない Pod がある場合、またはデプロイメントのニーズを満たすために別のノードが必要な場合に、クラスターのサイズを拡大します。Cluster Autoscaler は、指定される制限を超えてクラスターリソースを拡大することはありません。

さらに、Cluster Autoscaler は、リソースの使用量が少なく、重要な Pod すべてが他のノードに適合する場合など、一部のノードが長い期間にわたって不要な状態が続く場合にクラスターのサイズを縮小します。

自動スケーリングを有効にする場合は、ワーカーノードの最小数および最大数も設定する必要があります。

注記

クラスターの所有者と組織管理者のみがクラスターのスケーリングまたは削除が可能です。

2.3.1. クラスターでの自動スケーリングノードの有効化

ワーカーノードで自動スケーリングを有効にし、既存クラスターのマシンプール定義を編集して利用可能なノード数を増減できます。

Red Hat OpenShift Cluster Manager を使用して既存のクラスターで自動スケーリングノードを有効にする

OpenShift Cluster Manager コンソールからマシンプール定義でワーカーノードの自動スケーリングを有効にします。

手順

  1. OpenShift Cluster Manager Hybrid Cloud Console から、Clusters ページに移動し、自動スケーリングを有効にするクラスターを選択します。
  2. 選択したクラスターで、Machine pools タブを選択します。
  3. 自動スケーリングを有効にするマシンプールの最後にある Options メニュー kebab をクリックし、Scale を選択します。
  4. Edit node count ダイアログで、Enable autoscaling チェックボックスを選択します。
  5. Apply を選択してこれらの変更を保存し、クラスターの自動スケーリングを有効にします。
注記

さらに、対話モードでクラスターを作成する 場合に、デフォルトのマシンプールに自動スケーリングを設定できます。

rosa CLI を使用した既存クラスターでの自動スケーリングノードの有効化

負荷に基づいてワーカーノード数を動的にスケールアップまたはスケールダウンできるように自動スケーリングを設定します。

自動スケーリングが正常に実行されるかどうかは、AWS アカウントに正しい AWS リソースクォータがあることかどうかに依存します。AWS コンソール でリソースクォータおよび要求クォータの増加を確認します。

手順

  1. クラスター内のマシンプール ID を識別するには、以下のコマンドを実行します。

    $ rosa list machinepools --cluster=<cluster_name>

    出力例

    ID        AUTOSCALING   REPLICAS    INSTANCE TYPE  LABELS    TINTS   AVAILABILITY ZONES
    default   No            2           m5.xlarge                        us-east-1a
    mp1       No            2           m5.xlarge                        us-east-1a

  2. 設定する必要のあるマシンプールの ID を取得します。
  3. マシンプールで自動スケーリングを有効にするには、以下のコマンドを実行します。

    $ rosa edit machinepool --cluster=<cluster_name> <machinepool_ID> --enable-autoscaling --min-replicas=<number> --max-replicas=<number>

    mp1 という ID を mycluster という名前のクラスターに設定し、レプリカの数が 2 から 5 ワーカーノード間でスケーリングするように設定された状態でマシンプールで自動スケーリングを有効にします。

    $ rosa edit machinepool --cluster=mycluster mp1 --enable-autoscaling --min-replicas=2 --max-replicas=5

2.3.2. クラスターでの自動スケーリングノードの無効化

ワーカーノードで自動スケーリングを無効にし、既存クラスターのマシンプール定義を編集して利用可能なノード数を増減できます。

OpenShift Cluster Manager コンソールまたは Red Hat OpenShift Service on AWS CLI を使用して、クラスターでの自動スケーリングを無効にできます。

注記

さらに、対話モードでクラスターを作成する 場合に、デフォルトのマシンプールに自動スケーリングを設定できます。

Red Hat OpenShift Cluster Manager を使用して既存のクラスターで自動スケーリングノードを無効にする

OpenShift Cluster Manager コンソールからマシンプール定義でワーカーノードの自動スケーリングを無効にします。

手順

  1. OpenShift Cluster Manager Hybrid Cloud Console から Clusters ページに移動し、自動スケーリングを無効にする必要があるクラスターを選択します。
  2. 選択したクラスターで、Machine pools タブを選択します。
  3. 自動スケーリングのあるマシンプールの最後にある Options メニュー kebab をクリックし、Scale を選択します。
  4. ノード数の編集ダイアログで、Enable autoscaling チェックボックスの選択を解除します。
  5. Apply を選択してこれらの変更を保存し、クラスターから自動スケーリングを無効にします。
rosa CLI を使用した既存クラスターでの自動スケーリングノードの無効化

マシンプール定義のワーカーノードの自動スケーリングを無効にします。

手順

  1. 以下のコマンドを実行します。

    $ rosa edit machinepool --cluster=<cluster_name> <machinepool_ID> --enable-autoscaling=false --replicas=<number>

    mycluster という名前のクラスターで、default マシンプールの自動スケーリングを無効にします。

    $ rosa edit machinepool --cluster=mycluster default --enable-autoscaling=false --replicas=3

2.3.3. 関連情報