第2章 Machine API を使用したコンピュートマシンの管理


2.1. AWS でコンピュートマシンセットを作成する

Amazon Web Services (AWS) で OpenShift Container Platform クラスターの特定の目的を果たすように異なるコンピュートマシンセットを作成することができます。たとえば、インフラストラクチャーマシンセットおよび関連マシンを作成して、サポートするワークロードを新しいマシンに移動できます。

重要

高度なマシン管理およびスケーリング機能は、Machine API が動作しているクラスターでのみ使用できます。user-provisioned infrastructure を持つクラスターでは、Machine API を使用するために追加の検証と設定が必要です。

インフラストラクチャープラットフォームタイプが none のクラスターでは、Machine API を使用できません。この制限は、クラスターに接続されている計算マシンが、この機能をサポートするプラットフォームにインストールされている場合でも適用されます。このパラメーターは、インストール後に変更することはできません。

クラスターのプラットフォームタイプを表示するには、以下のコマンドを実行します。

$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
Copy to Clipboard Toggle word wrap

2.1.1. AWS 上のコンピュートマシンセットカスタムリソースのサンプル YAML

このサンプル YAML は、Amazon Web Services (AWS) Local Zone の us-east-1a で実行され、node-role.kubernetes.io/<role>: "" というラベルが付けられたノードを作成するコンピュートマシンセットを定義します。

このサンプルでは、<infrastructure_id> はクラスターのプロビジョニング時に設定したクラスター ID に基づくインフラストラクチャー ID であり、<role> は追加するノードラベルです。

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  labels:
    machine.openshift.io/cluster-api-cluster: <infrastructure_id> 
1

  name: <infrastructure_id>-<role>-<zone> 
2

  namespace: openshift-machine-api
spec:
  replicas: 1
  selector:
    matchLabels:
      machine.openshift.io/cluster-api-cluster: <infrastructure_id>
      machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone>
  template:
    metadata:
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id>
        machine.openshift.io/cluster-api-machine-role: <role> 
3

        machine.openshift.io/cluster-api-machine-type: <role>
        machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone>
    spec:
      metadata:
        labels:
          node-role.kubernetes.io/<role>: ""
      providerSpec:
        value:
          ami:
            id: ami-046fe691f52a953f9 
4

          apiVersion: machine.openshift.io/v1beta1
          blockDevices:
            - ebs:
                iops: 0
                volumeSize: 120
                volumeType: gp2
          credentialsSecret:
            name: aws-cloud-credentials
          deviceIndex: 0
          iamInstanceProfile:
            id: <infrastructure_id>-worker-profile
          instanceType: m6i.large
          kind: AWSMachineProviderConfig
          placement:
            availabilityZone: <zone> 
5

            region: <region> 
6

          securityGroups:
            - filters:
                - name: tag:Name
                  values:
                    - <infrastructure_id>-node
            - filters:
                - name: tag:Name
                  values:
                    - <infrastructure_id>-lb
          subnet:
            filters:
              - name: tag:Name
                values:
                  - <infrastructure_id>-private-<zone> 
7

          tags:
            - name: kubernetes.io/cluster/<infrastructure_id>
              value: owned
            - name: <custom_tag_name> 
8

              value: <custom_tag_value>
          userDataSecret:
            name: worker-user-data
Copy to Clipboard Toggle word wrap
1
クラスターのプロビジョニング時に設定したクラスター ID を基にするインフラストラクチャー ID を指定します。OpenShift CLI がインストールされている場合は、以下のコマンドを実行してインフラストラクチャー ID を取得できます。
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Toggle word wrap
2
インフラストラクチャー ID、ロールノードラベル、およびゾーンを指定します。
3
追加するロールノードラベルを指定します。
4
OpenShift Container Platform ノードの AWS ゾーンに有効な Red Hat Enterprise Linux CoreOS (RHCOS) Amazon Machine Image (AMI) を指定します。AWS Marketplace イメージを使用する場合は、AWS Marketplace から OpenShift Container Platform サブスクリプションを完了して、リージョンの AMI ID を取得する必要があります。
$ oc -n openshift-machine-api \
    -o jsonpath='{.spec.template.spec.providerSpec.value.ami.id}{"\n"}' \
    get machineset/<infrastructure_id>-<role>-<zone>
Copy to Clipboard Toggle word wrap
5
ゾーン名を指定します (例: us-east-1a)。
6
リージョン (例: us-east-1) を指定します。
7
インフラストラクチャー ID とゾーンを指定します。
8
オプション: クラスターのカスタムタグデータを指定します。たとえば、name:value のペアである Email:admin-email@example.com を指定して、管理者の連絡先電子メールアドレスを追加できます。
注記

カスタムタグは、インストール中に install-config.yml ファイルで指定することもできます。install-config.yml ファイルとマシンセットに同じ 名前 のデータを持つタグが含まれている場合、マシンセットのタグの値が install-config.yml ファイルのタグの値よりも優先されます。

2.1.2. コンピュートマシンセットの作成

インストールプログラムによって作成されるコンピュートセットセットに加えて、独自のマシンセットを作成して、選択した特定のワークロードのマシンコンピューティングリソースを動的に管理できます。

前提条件

  • OpenShift Container Platform クラスターをデプロイしている。
  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin パーミッションを持つユーザーとして、oc にログインする。

手順

  1. コンピュートマシンセットのカスタムリソース (CR) サンプルを含む新しい YAML ファイルを作成し、<file_name>.yaml という名前を付けます。

    <clusterID> および <role> パラメーターの値を設定していることを確認します。

  2. オプション: 特定のフィールドに設定する値がわからない場合は、クラスターから既存のコンピュートマシンセットを確認できます。

    1. クラスター内のコンピュートマシンセットをリスト表示するには、次のコマンドを実行します。

      $ oc get machinesets -n openshift-machine-api
      Copy to Clipboard Toggle word wrap

      出力例

      NAME                                DESIRED   CURRENT   READY   AVAILABLE   AGE
      agl030519-vplxk-worker-us-east-1a   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1b   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1c   1         1         1       1           55m
      agl030519-vplxk-worker-us-east-1d   0         0                             55m
      agl030519-vplxk-worker-us-east-1e   0         0                             55m
      agl030519-vplxk-worker-us-east-1f   0         0                             55m
      Copy to Clipboard Toggle word wrap

    2. 特定のコンピュートマシンセットカスタムリソース (CR) 値を表示するには、以下のコマンドを実行します。

      $ oc get machineset <machineset_name> \
        -n openshift-machine-api -o yaml
      Copy to Clipboard Toggle word wrap

      出力例

      apiVersion: machine.openshift.io/v1beta1
      kind: MachineSet
      metadata:
        labels:
          machine.openshift.io/cluster-api-cluster: <infrastructure_id> 
      1
      
        name: <infrastructure_id>-<role> 
      2
      
        namespace: openshift-machine-api
      spec:
        replicas: 1
        selector:
          matchLabels:
            machine.openshift.io/cluster-api-cluster: <infrastructure_id>
            machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
        template:
          metadata:
            labels:
              machine.openshift.io/cluster-api-cluster: <infrastructure_id>
              machine.openshift.io/cluster-api-machine-role: <role>
              machine.openshift.io/cluster-api-machine-type: <role>
              machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>
          spec:
            providerSpec: 
      3
      
              ...
      Copy to Clipboard Toggle word wrap

      1
      クラスターインフラストラクチャー ID。
      2
      デフォルトのノードラベル。
      注記

      user-provisioned infrastructure を持つクラスターの場合、コンピュートマシンセットは worker および infra タイプのマシンのみを作成できます。

      3
      コンピュートマシンセット CR の <providerSpec> セクションの値は、プラットフォーム固有です。CR の <providerSpec> パラメーターの詳細は、プロバイダーのサンプルコンピュートマシンセット CR 設定を参照してください。
  3. 次のコマンドを実行して MachineSet CR を作成します。

    $ oc create -f <file_name>.yaml
    Copy to Clipboard Toggle word wrap
  4. 他のアベイラビリティーゾーンでコンピュートマシンセットが必要な場合、このプロセスを繰り返して追加のコンピュートマシンセットを作成します。

検証

  • 次のコマンドを実行して、コンピュートマシンセットのリストを表示します。

    $ oc get machineset -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                DESIRED   CURRENT   READY   AVAILABLE   AGE
    agl030519-vplxk-infra-us-east-1a    1         1         1       1           11m
    agl030519-vplxk-worker-us-east-1a   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1b   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1c   1         1         1       1           55m
    agl030519-vplxk-worker-us-east-1d   0         0                             55m
    agl030519-vplxk-worker-us-east-1e   0         0                             55m
    agl030519-vplxk-worker-us-east-1f   0         0                             55m
    Copy to Clipboard Toggle word wrap

    新しいコンピュートマシンセットが利用可能になると、DESIREDCURRENT の値が一致します。コンピュートマシンセットが使用できない場合は、数分待ってからコマンドを再実行してください。

2.1.3. Cluster Autoscaler 用の GPU マシンセットのラベル付け

マシンセットラベルを使用すると、Cluster Autoscaler が GPU 対応ノードのデプロイに使用できるマシンを指定できます。

前提条件

  • クラスターが Cluster Autoscaler を使用している。

手順

  • Cluster Autoscaler が GPU 対応ノードのデプロイに使用するマシンを作成するのに必要なマシンセットに、cluster-api/accelerator ラベルを追加します。

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      name: machine-set-name
    spec:
      template:
        spec:
          metadata:
            labels:
              cluster-api/accelerator: nvidia-t4 
    1
    Copy to Clipboard Toggle word wrap
    1
    英数字、-_. で構成され、先頭と末尾が英数字であるラベルを指定します。たとえば、Nvidia T4 GPU を表すには nvidia-t4 を使用し、A10G GPU を表すには nvidia-a10g を使用します。
    注記

    ClusterAutoscaler CR の spec.resourceLimits.gpus.type パラメーターにこのラベルの値を指定する必要があります。詳細は、「Cluster Autoscaler リソース定義」を参照してください。

既存の AWS プレースメントグループ内の Elastic Fabric Adapter (EFA) インスタンスにマシンをデプロイするようにマシンセットを設定できます。

EFA インスタンスにはプレースメントグループは必要なく、EFA の設定以外の目的にもプレースメントグループを使用できます。この例では、両方を使用して、指定されたプレースメントグループ内のマシンのネットワークパフォーマンスを向上できる設定を示します。

前提条件

  • AWS コンソールでプレースメントグループを作成しました。

    注記

    作成するプレースメントグループのタイプの ルールと制限 が、意図した使用例と互換性があることを確認してください。

手順

  1. テキストエディターで、既存のマシンセットの YAML ファイルを開くか、新しいマシンセットを作成します。
  2. providerSpec フィールドの下に次の行を編集します。

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              instanceType: <supported_instance_type> 
    1
    
              networkInterfaceType: EFA 
    2
    
              placement:
                availabilityZone: <zone> 
    3
    
                region: <region> 
    4
    
              placementGroupName: <placement_group> 
    5
    
              placementGroupPartition: <placement_group_partition_number> 
    6
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    EFA をサポートする インスタンスタイプを指定します。
    2
    EFA ネットワークインターフェイスのタイプを指定します。
    3
    ゾーン (例: us-east-1a) を指定します。
    4
    リージョン (例: us-east-1) を指定します。
    5
    マシンをデプロイする既存の AWS プレースメントグループの名前を指定します。
    6
    オプション: マシンをデプロイする既存の AWS プレースメントグループのパーティション番号を指定します。

検証

  • AWS コンソールで、マシンセットが作成したマシンを見つけて、マシンのプロパティーで次のことを確認します。

    • プレースメントグループフィールドには、マシンセットの placementGroupName パラメーターに指定した値が含まれます。
    • パーティション番号フィールドには、マシンセットの placementGroupPartition パラメーターに指定した値が設定されます。
    • インターフェイスタイプフィールドは、EFA を使用することを示します。

2.1.5. Amazon EC2 インスタンスメタデータサービスのマシンセットオプション

マシンセットを使用して、Amazon EC2 インスタンスメタデータサービス (IMDS) の特定のバージョンを使用するマシンを作成できます。マシンセットは、IMDSv1 と IMDSv2 の両方を使用できるマシン、または IMDSv2 の使用を必要とするマシンを作成できます。

注記

OpenShift Container Platform バージョン 4.6 以前で作成された AWS クラスターで IMDSv2 を使用するには、ブートイメージを更新する必要があります。詳細は、「ブートイメージ更新」を参照してください。

好みの IMDS 設定で新しいコンピュートマシンを展開するには、適切な値を使用してマコンピュートシンセット YAML ファイルを作成します。マシンセットの拡張時に、既存のマシンセットを編集して、希望する IMDS 設定で新しいマシンを作成することもできます。

重要

IMDSv2 を必要とするマシンを作成するようにマシンセットを設定する前に、AWS メタデータサービスと相互作用するすべてのワークロードが IMDSv2 をサポートしていることを確認してください。

2.1.5.1. マシンセットを使用した IMDS の設定

マシンのマシンセット YAML ファイルで metadataServiceOptions.authentication の値を追加または編集することで、IMDSv2 の使用を要求するかどうかを指定できます。

前提条件

  • IMDSv2 を使用するには、AWS クラスターが OpenShift Container Platform バージョン 4.7 以降で作成されている必要があります。

手順

  • providerSpec フィールドの下に次の行を追加または編集します。

    providerSpec:
      value:
        metadataServiceOptions:
          authentication: Required 
    1
    Copy to Clipboard Toggle word wrap
    1
    IMDSv2 を要求するには、パラメーター値を Required に設定します。IMDSv1 と IMDSv2 の両方の使用を許可するには、パラメーター値を Optional に設定します。値が指定されていない場合、IMDSv1 と IMDSv2 の両方が許可されます。

2.1.6. マシンを専有インスタンス (Dedicated Instance) としてデプロイするマシンセット

マシンを専有インスタンスとしてデプロイする AWS で実行されるマシンセットを作成できます。専有インスタンスは、単一のお客様専用のハードウェア上の仮想プライベートクラウド (VPC) で実行されます。これらの Amazon EC2 インスタンスは、ホストのハードウェアレベルで物理的に分離されます。インスタンスが単一つの有料アカウントにリンクされている別の AWS アカウントに属する場合でも、専有インスタンスの分離が生じます。ただし、専有ではない他のインスタンスは、それらが同じ AWS アカウントに属する場合は、ハードウェアを専有インスタンスと共有できます。

パブリックテナンシーまたは専用テナンシーのいずれかを持つインスタンスが、Machine API によってサポートされます。パブリックテナンシーを持つインスタンスは、共有ハードウェア上で実行されます。パブリックテナンシーはデフォルトのテナンシーです。専用のテナンシーを持つインスタンスは、単一テナントのハードウェアで実行されます。

2.1.6.1. マシンセットの使用による専有インスタンスの作成

Machine API 統合を使用して、専有インスタンスによってサポートされるマシンを実行できます。マシンセット YAML ファイルの tenancy フィールドを設定し、AWS で専有インスタンスを起動します。

手順

  • providerSpec フィールドに専用テナンシーを指定します。

    providerSpec:
      placement:
        tenancy: dedicated
    Copy to Clipboard Toggle word wrap

2.1.7. マシンをスポットインスタンスとしてデプロイするマシンセット

マシンを保証されていないスポットインスタンスとしてデプロイする AWS で実行されるコンピュートマシンセットを作成して、コストを節約できます。Spot インスタンスは未使用の AWS EC2 容量を使用し、オンデマンドインスタンスよりもコストが低くなります。Spot インスタンスは、バッチやステートレス、水平的に拡張可能なワークロードなどの割り込みを許容できるワークロードに使用することができます。

AWS EC2 はスポットインスタンスをいつでも終了できます。AWS は、中断の発生時にユーザーに警告を 2 分間表示します。OpenShift Container Platform は、AWS が終了に関する警告を発行する際に影響を受けるインスタンスからワークロードを削除し始めます。

以下の理由により、Spot インスタンスを使用すると中断が生じる可能性があります。

  • インスタンス価格は最大価格を超えます。
  • Spot インスタンスの需要は増大します。
  • Spot インスタンスの供給は減少します。

AWS がインスタンスを終了すると、Spot インスタンスノードで実行される終了ハンドラーによりマシンリソースが削除されます。コンピュートマシンセットの replicas の量を満たすために、コンピュートマシンセットはスポットインスタンスを要求するマシンを作成します。

2.1.7.1. コンピュートマシンセットの使用によるスポットインスタンスの作成

spotMarketOptions をコンピュートマシンセットの YAML ファイルに追加して、AWS でスポットインスタンスを起動できます。

手順

  • providerSpec フィールドの下に以下の行を追加します。

    providerSpec:
      value:
        spotMarketOptions: {}
    Copy to Clipboard Toggle word wrap

    オプションで、Spot インスタンスのコストを制限するために、spotMarketOptions.maxPrice フィールドを設定できます。たとえば、maxPrice: '2.50' を設定できます。

    maxPrice が設定されている場合、この値は毎時の最大 Spot 価格として使用されます。これを設定しないと、デフォルトで最大価格としてオンデマンドインスタンス価格までチャージされます。

    注記

    デフォルトの On-Demand 価格を maxPrice 値として使用し、Spot インスタンスの最大価格を設定しないことが強く推奨されます。

2.1.8. 既存の OpenShift Container Platform クラスターへの GPU ノードの追加

デフォルトのコンピュートマシンセット設定をコピーおよび変更して、AWS EC2 クラウドプロバイダー用の GPU 対応マシンセットとマシンを作成できます。

サポートされているインスタンスタイプの詳細は、以下の NVIDIA ドキュメントを参照してください。

手順

  1. 次のコマンドを実行して、既存のノード、マシン、およびマシンセットを表示します。各ノードは、特定の AWS リージョンと OpenShift Container Platform ロールを持つマシン定義のインスタンスであることに注意してください。

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                        STATUS   ROLES                  AGE     VERSION
    ip-10-0-52-50.us-east-2.compute.internal    Ready    worker                 3d17h   v1.31.3
    ip-10-0-58-24.us-east-2.compute.internal    Ready    control-plane,master   3d17h   v1.31.3
    ip-10-0-68-148.us-east-2.compute.internal   Ready    worker                 3d17h   v1.31.3
    ip-10-0-68-68.us-east-2.compute.internal    Ready    control-plane,master   3d17h   v1.31.3
    ip-10-0-72-170.us-east-2.compute.internal   Ready    control-plane,master   3d17h   v1.31.3
    ip-10-0-74-50.us-east-2.compute.internal    Ready    worker                 3d17h   v1.31.3
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、openshift-machine-api namespace に存在するマシンとマシンセットを表示します。各コンピュートマシンセットは、AWS リージョン内の異なるアベイラビリティーゾーンに関連付けられています。インストーラーは、アベイラビリティゾーン全体でコンピュートマシンの負荷を自動的に分散します。

    $ oc get machinesets -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                        DESIRED   CURRENT   READY   AVAILABLE   AGE
    preserve-dsoc12r4-ktjfc-worker-us-east-2a   1         1         1       1           3d11h
    preserve-dsoc12r4-ktjfc-worker-us-east-2b   2         2         2       2           3d11h
    Copy to Clipboard Toggle word wrap

  3. 次のコマンドを実行して、openshift-machine-api namespace に存在するマシンを表示します。現時点では、マシンセットごとに 1 つのコンピュートマシンしかありませんが、特定のリージョンとゾーンにノードを追加するようにコンピュートマシンセットをスケーリングすることができます。

    $ oc get machines -n openshift-machine-api | grep worker
    Copy to Clipboard Toggle word wrap

    出力例

    preserve-dsoc12r4-ktjfc-worker-us-east-2a-dts8r      Running   m5.xlarge   us-east-2   us-east-2a   3d11h
    preserve-dsoc12r4-ktjfc-worker-us-east-2b-dkv7w      Running   m5.xlarge   us-east-2   us-east-2b   3d11h
    preserve-dsoc12r4-ktjfc-worker-us-east-2b-k58cw      Running   m5.xlarge   us-east-2   us-east-2b   3d11h
    Copy to Clipboard Toggle word wrap

  4. 次のコマンドを実行して、既存のコンピュート MachineSet 定義のいずれかのコピーを作成し、結果を JSON ファイルに出力します。これは、GPU 対応のコンピュートマシンセット定義の基礎となります。

    $ oc get machineset preserve-dsoc12r4-ktjfc-worker-us-east-2a -n openshift-machine-api -o json > <output_file.json>
    Copy to Clipboard Toggle word wrap
  5. JSON ファイルを編集し、新しい MachineSet 定義に次の変更を加えます。

    • workergpu に置き換えます。これが新しいマシンセットの名前になります。
    • 新しい MachineSet 定義のインスタンスタイプを、NVIDIA Tesla T4 GPU を含む g4dn に変更します。AWS g4dn インスタンスタイプの詳細は、Accelerated Computing を参照してください。

      $ jq .spec.template.spec.providerSpec.value.instanceType preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json
      
      "g4dn.xlarge"
      Copy to Clipboard Toggle word wrap

      <output_file.json> ファイルは preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json として保存されます。

  6. preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json の次のフィールドを更新します。

    • .metadata.namegpu を含む名前に変更します。
    • .spec.selector.matchLabels["machine.openshift.io/cluster-api-machineset"] を新しい .metadata.name に一致させます。
    • .spec.template.metadata.labels["machine.openshift.io/cluster-api-machineset"] を新しい .metadata.name に一致させます。
    • .spec.template.spec.providerSpec.value.instanceType to g4dn.xlarge.
  7. 変更を確認するには、次のコマンドを実行して、元のコンピュート定義と新しい GPU 対応ノード定義の diff を実行します。

    $ oc -n openshift-machine-api get preserve-dsoc12r4-ktjfc-worker-us-east-2a -o json | diff preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json -
    Copy to Clipboard Toggle word wrap

    出力例

    10c10
    
    < "name": "preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a",
    ---
    > "name": "preserve-dsoc12r4-ktjfc-worker-us-east-2a",
    
    21c21
    
    < "machine.openshift.io/cluster-api-machineset": "preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a"
    ---
    > "machine.openshift.io/cluster-api-machineset": "preserve-dsoc12r4-ktjfc-worker-us-east-2a"
    
    31c31
    
    < "machine.openshift.io/cluster-api-machineset": "preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a"
    ---
    > "machine.openshift.io/cluster-api-machineset": "preserve-dsoc12r4-ktjfc-worker-us-east-2a"
    
    60c60
    
    < "instanceType": "g4dn.xlarge",
    ---
    > "instanceType": "m5.xlarge",
    Copy to Clipboard Toggle word wrap

  8. 次のコマンドを実行して、定義から GPU 対応のコンピュートマシンセットを作成します。

    $ oc create -f preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json
    Copy to Clipboard Toggle word wrap

    出力例

    machineset.machine.openshift.io/preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a created
    Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを実行して、作成したマシンセットを表示します。

    $ oc -n openshift-machine-api get machinesets | grep gpu
    Copy to Clipboard Toggle word wrap

    MachineSet レプリカ数は 1 に設定されているため、新しい Machine オブジェクトが自動的に作成されます。

    出力例

    preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a   1         1         1       1           4m21s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、マシンセットが作成した Machine オブジェクトを表示します。

    $ oc -n openshift-machine-api get machines | grep gpu
    Copy to Clipboard Toggle word wrap

    出力例

    preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a    running    g4dn.xlarge   us-east-2   us-east-2a  4m36s
    Copy to Clipboard Toggle word wrap

ノードの namespace を指定する必要がないことに注意してください。ノード定義はクラスタースコープ指定されています。

2.1.9. Node Feature Discovery Operator のデプロイ

GPU 対応ノードを作成したら、スケジュールできるように GPU 対応ノードを検出する必要があります。これを行うには、Node Feature Discovery (NFD) Operator をインストールします。NFD Operator は、ノード内のハードウェアデバイス機能を識別します。OpenShift Container Platform で使用できるようにインフラストラクチャーノードのハードウェアリソースを識別してカタログ化するという一般的な問題を解決します。

手順

  1. OpenShift Container Platform コンソールの OperatorHub から Node Feature Discovery Operator をインストールします。
  2. NFD Operator を OperatorHub にインストールした後、インストールされた Operator リストから Node Feature Discovery を選択し、Create instance を選択します。これにより、openshift-nfd namespace に、nfd-master Pod と nfd-worker Pod (各コンピュートノードに 1 つの nfd-worker Pod) がインストールされます。
  3. 次のコマンドを実行して、Operator がインストールされ、実行されていることを確認します。

    $ oc get pods -n openshift-nfd
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                       READY    STATUS     RESTARTS   AGE
    
    nfd-controller-manager-8646fcbb65-x5qgk    2/2      Running 7  (8h ago)   1d
    Copy to Clipboard Toggle word wrap

  4. コンソールでインストール済みの Operator へ移動し、Create Node Feature Discovery を選択します。
  5. Create を選択して、NFD カスタムリソースをビルドします。これにより、OpenShift Container Platform ノードのハードウェアリソースをポーリングしてカタログ化する NFD Pod が openshift-nfd namespace に作成されます。

検証

  1. ビルドが成功したら、次のコマンドを実行して、各ノードで NFD Pod が実行されていることを確認します。

    $ oc get pods -n openshift-nfd
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                       READY   STATUS      RESTARTS        AGE
    nfd-controller-manager-8646fcbb65-x5qgk    2/2     Running     7 (8h ago)      12d
    nfd-master-769656c4cb-w9vrv                1/1     Running     0               12d
    nfd-worker-qjxb2                           1/1     Running     3 (3d14h ago)   12d
    nfd-worker-xtz9b                           1/1     Running     5 (3d14h ago)   12d
    Copy to Clipboard Toggle word wrap

    NFD Operator は、ベンダー PCI ID を使用してノード内のハードウェアを識別します。NVIDIA は PCI ID 10de を使用します。

  2. 次のコマンドを実行して、NFD Operator によって検出された NVIDIA GPU を表示します。

    $ oc describe node ip-10-0-132-138.us-east-2.compute.internal | egrep 'Roles|pci'
    Copy to Clipboard Toggle word wrap

    出力例

    Roles: worker
    
    feature.node.kubernetes.io/pci-1013.present=true
    
    feature.node.kubernetes.io/pci-10de.present=true
    
    feature.node.kubernetes.io/pci-1d0f.present=true
    Copy to Clipboard Toggle word wrap

    GPU 対応ノードのノード機能リストに 10de が表示されます。これは、NFD Operator が GPU 対応の MachineSet からノードを正しく識別したことを意味します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat