第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}'
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>
name: <infrastructure_id>-<role>-<zone>
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>
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
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>
region: <region>
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>
tags:
- name: kubernetes.io/cluster/<infrastructure_id>
value: owned
- name: <custom_tag_name>
value: <custom_tag_value>
userDataSecret:
name: worker-user-data
- 1
- クラスターのプロビジョニング時に設定したクラスター ID を基にするインフラストラクチャー ID を指定します。OpenShift CLI がインストールされている場合は、以下のコマンドを実行してインフラストラクチャー ID を取得できます。
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster - 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> - 5
- ゾーン名を指定します (例:
us-east-1a)。 - 6
- リージョン (例:
us-east-1) を指定します。 - 7
- インフラストラクチャー ID とゾーンを指定します。
- 8
- オプション: クラスターのカスタムタグデータを指定します。たとえば、
name:valueのペアであるEmail:admin-email@example.comを指定して、管理者の連絡先電子メールアドレスを追加できます。注記カスタムタグは、インストール中に
install-config.ymlファイルで指定することもできます。install-config.ymlファイルとマシンセットに同じnameのデータを持つタグが含まれている場合、マシンセットのタグの値がinstall-config.ymlファイルのタグの値よりも優先されます。
2.1.2. コンピュートマシンセットの作成 リンクのコピーリンクがクリップボードにコピーされました!
インストールプログラムによって作成されるコンピュートセットセットに加えて、独自のマシンセットを作成して、選択した特定のワークロードのマシンコンピューティングリソースを動的に管理できます。
前提条件
- OpenShift Container Platform クラスターをデプロイしている。
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminパーミッションを持つユーザーとして、ocにログインする。
手順
コンピュートマシンセットのカスタムリソース (CR) サンプルを含む新しい YAML ファイルを作成し、
<file_name>.yamlという名前を付けます。<clusterID>および<role>パラメーターの値を設定していることを確認します。オプション: 特定のフィールドに設定する値がわからない場合は、クラスターから既存のコンピュートマシンセットを確認できます。
クラスター内のコンピュートマシンセットをリスト表示するには、次のコマンドを実行します。
$ oc get machinesets -n openshift-machine-api出力例
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特定のコンピュートマシンセットカスタムリソース (CR) 値を表示するには、以下のコマンドを実行します。
$ oc get machineset <machineset_name> \ -n openshift-machine-api -o yaml出力例
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 ...
次のコマンドを実行して
MachineSetCR を作成します。$ oc create -f <file_name>.yaml- 他のアベイラビリティーゾーンでコンピュートマシンセットが必要な場合、このプロセスを繰り返して追加のコンピュートマシンセットを作成します。
検証
次のコマンドを実行して、コンピュートマシンセットのリストを表示します。
$ oc get machineset -n openshift-machine-api出力例
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新しいコンピュートマシンセットが利用可能になると、
DESIREDとCURRENTの値が一致します。コンピュートマシンセットが使用できない場合は、数分待ってからコマンドを再実行してください。
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: <accelerator_name>ここでは、以下のようになります。
- <accelerator_name>
英数字、
-、_、または.で構成され、英数字で開始および終了する任意のラベルを指定します。たとえば、Nvidia T4 GPU を表すにはnvidia-t4を使用し、A10G GPU を表すにはnvidia-a10gを使用します。注記ClusterAutoscalerCR のspec.resourceLimits.gpus.typeパラメーターにこのラベルの値を指定する必要があります。詳細は、「Cluster Autoscaler リソース定義」を参照してください。
2.1.4. マシンセットを使用した Elastic Fabric Adapter インスタンスのプレースメントグループへのマシンの割り当て リンクのコピーリンクがクリップボードにコピーされました!
既存の AWS プレースメントグループ内の Elastic Fabric Adapter (EFA) インスタンスにマシンをデプロイするようにマシンセットを設定できます。
EFA インスタンスにはプレースメントグループは必要なく、EFA の設定以外の目的にもプレースメントグループを使用できます。この例では、両方を使用して、指定されたプレースメントグループ内のマシンのネットワークパフォーマンスを向上できる設定を示します。
前提条件
AWS コンソールでプレースメントグループを作成しました。
注記作成するプレースメントグループのタイプの ルールと制限 が、意図した使用例と互換性があることを確認してください。
手順
- テキストエディターで、既存のマシンセットの YAML ファイルを開くか、新しいマシンセットを作成します。
providerSpecフィールドの下に次の行を編集します。apiVersion: machine.openshift.io/v1beta1 kind: MachineSet # ... spec: template: spec: providerSpec: value: instanceType: <supported_instance_type>1 networkInterfaceType: EFA2 placement: availabilityZone: <zone>3 region: <region>4 placementGroupName: <placement_group>5 placementGroupPartition: <placement_group_partition_number>6 # ...
検証
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: Required1 - 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
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: {}オプションで、Spot インスタンスのコストを制限するために、
spotMarketOptions.maxPriceフィールドを設定できます。たとえば、maxPrice: '2.50'を設定できます。maxPriceが設定されている場合、この値は毎時の最大 Spot 価格として使用されます。これを設定しないと、デフォルトで最大価格としてオンデマンドインスタンス価格までチャージされます。注記デフォルトの On-Demand 価格を
maxPrice値として使用し、Spot インスタンスの最大価格を設定しないことが強く推奨されます。
2.1.8. 既存の OpenShift Container Platform クラスターへの GPU ノードの追加 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトのコンピュートマシンセット設定をコピーおよび変更して、AWS EC2 クラウドプロバイダー用の GPU 対応マシンセットとマシンを作成できます。
サポートされているインスタンスタイプの詳細は、以下の NVIDIA ドキュメントを参照してください。
手順
次のコマンドを実行して、既存のノード、マシン、およびマシンセットを表示します。各ノードは、特定の AWS リージョンと OpenShift Container Platform ロールを持つマシン定義のインスタンスであることに注意してください。
$ oc get nodes出力例
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次のコマンドを実行して、
openshift-machine-apinamespace に存在するマシンとマシンセットを表示します。各コンピュートマシンセットは、AWS リージョン内の異なるアベイラビリティーゾーンに関連付けられています。インストーラーは、アベイラビリティゾーン全体でコンピュートマシンの負荷を自動的に分散します。$ oc get machinesets -n openshift-machine-api出力例
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次のコマンドを実行して、
openshift-machine-apinamespace に存在するマシンを表示します。現時点では、マシンセットごとに 1 つのコンピュートマシンしかありませんが、特定のリージョンとゾーンにノードを追加するようにコンピュートマシンセットをスケーリングすることができます。$ oc get machines -n openshift-machine-api | grep worker出力例
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次のコマンドを実行して、既存のコンピュート
MachineSet定義のいずれかのコピーを作成し、結果を JSON ファイルに出力します。これは、GPU 対応のコンピュートマシンセット定義の基礎となります。$ oc get machineset preserve-dsoc12r4-ktjfc-worker-us-east-2a -n openshift-machine-api -o json > <output_file.json>JSON ファイルを編集し、新しい
MachineSet定義に次の変更を加えます。-
workerをgpuに置き換えます。これが新しいマシンセットの名前になります。 新しい
MachineSet定義のインスタンスタイプを、NVIDIA Tesla T4 GPU を含むg4dnに変更します。AWSg4dnインスタンスタイプの詳細は、Accelerated Computing を参照してください。$ jq .spec.template.spec.providerSpec.value.instanceType preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json "g4dn.xlarge"<output_file.json>ファイルはpreserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.jsonとして保存されます。
-
preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.jsonの次のフィールドを更新します。-
.metadata.nameをgpuを含む名前に変更します。 -
.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.instanceTypetog4dn.xlarge.
-
変更を確認するには、次のコマンドを実行して、元のコンピュート定義と新しい 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 -出力例
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",次のコマンドを実行して、定義から GPU 対応のコンピュートマシンセットを作成します。
$ oc create -f preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json出力例
machineset.machine.openshift.io/preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a created
検証
次のコマンドを実行して、作成したマシンセットを表示します。
$ oc -n openshift-machine-api get machinesets | grep gpuMachineSet レプリカ数は
1に設定されているため、新しいMachineオブジェクトが自動的に作成されます。出力例
preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a 1 1 1 1 4m21s次のコマンドを実行して、マシンセットが作成した
Machineオブジェクトを表示します。$ oc -n openshift-machine-api get machines | grep gpu出力例
preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a running g4dn.xlarge us-east-2 us-east-2a 4m36s
ノードの namespace を指定する必要がないことに注意してください。ノード定義はクラスタースコープ指定されています。
2.1.9. Node Feature Discovery Operator のデプロイ リンクのコピーリンクがクリップボードにコピーされました!
GPU 対応ノードを作成したら、スケジュールできるように GPU 対応ノードを検出する必要があります。これを行うには、Node Feature Discovery (NFD) Operator をインストールします。NFD Operator は、ノード内のハードウェアデバイス機能を識別します。OpenShift Container Platform で使用できるようにインフラストラクチャーノードのハードウェアリソースを識別してカタログ化するという一般的な問題を解決します。
手順
- OpenShift Container Platform コンソールの OperatorHub から Node Feature Discovery Operator をインストールします。
-
NFD Operator を OperatorHub にインストールした後、インストールされた Operator リストから Node Feature Discovery を選択し、Create instance を選択します。これにより、
openshift-nfdnamespace に、nfd-masterPod とnfd-workerPod (各コンピュートノードに 1 つのnfd-workerPod) がインストールされます。 次のコマンドを実行して、Operator がインストールされ、実行されていることを確認します。
$ oc get pods -n openshift-nfd出力例
NAME READY STATUS RESTARTS AGE nfd-controller-manager-8646fcbb65-x5qgk 2/2 Running 7 (8h ago) 1d- コンソールでインストール済みの Operator へ移動し、Create Node Feature Discovery を選択します。
-
Create を選択して、NFD カスタムリソースをビルドします。これにより、OpenShift Container Platform ノードのハードウェアリソースをポーリングしてカタログ化する NFD Pod が
openshift-nfdnamespace に作成されます。
検証
ビルドが成功したら、次のコマンドを実行して、各ノードで NFD Pod が実行されていることを確認します。
$ oc get pods -n openshift-nfd出力例
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) 12dNFD Operator は、ベンダー PCI ID を使用してノード内のハードウェアを識別します。NVIDIA は PCI ID
10deを使用します。次のコマンドを実行して、NFD Operator によって検出された NVIDIA GPU を表示します。
$ oc describe node ip-10-0-132-138.us-east-2.compute.internal | egrep 'Roles|pci'出力例
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=trueGPU 対応ノードのノード機能リストに
10deが表示されます。これは、NFD Operator が GPU 対応の MachineSet からノードを正しく識別したことを意味します。