2.8.2. RHOSP 上の SR-IOV を使用するコンピュートマシンセットのカスタムリソースのサンプル YAML
高性能ネットワーク用のシングルルート I/O 仮想化 (SR-IOV) を使用してコンピュート仮想マシン (VM) をプロビジョニングするには、providerSpec で SR-IOV ポートを直接定義し、portSecurity を False に設定します。
クラスターをシングルルート SR-IOV 用に設定した場合、そのテクノロジーを使用するコンピュートマシンセットを作成できます。
このサンプル YAML は SR-IOV ネットワークを使用するコンピュートマシンセットを定義します。作成するノードには node-role.openshift.io/<node_role>: "" というラベルが付けられます。
このサンプルでは、infrastructure_id はクラスターのプロビジョニング時に設定したクラスター ID に基づくインフラストラクチャー ID ラベルであり、node_role は追加するノードラベルです。
この例では、"radio" と "uplink" という名前の 2 つの SR-IOV ネットワークを想定しています。これらのネットワークは、spec.template.spec.providerSpec.value.ports リストのポート定義で使用されます。
この例では、SR-IOV デプロイメント固有のパラメーターのみを説明します。より一般的なサンプルを確認するには、「RHOSP 上のコンピュートマシンセットのカスタムリソースのサンプル YAML」を参照してください。
SR-IOV ネットワークを使用するコンピュートマシンセットの例
apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <node_role>
machine.openshift.io/cluster-api-machine-type: <node_role>
name: <infrastructure_id>-<node_role>
namespace: openshift-machine-api
spec:
replicas: <number_of_replicas>
selector:
matchLabels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<node_role>
template:
metadata:
labels:
machine.openshift.io/cluster-api-cluster: <infrastructure_id>
machine.openshift.io/cluster-api-machine-role: <node_role>
machine.openshift.io/cluster-api-machine-type: <node_role>
machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<node_role>
spec:
metadata:
providerSpec:
value:
apiVersion: machine.openshift.io/v1alpha1
cloudName: openstack
cloudsSecret:
name: openstack-cloud-credentials
namespace: openshift-machine-api
flavor: <nova_flavor>
image: <glance_image_name_or_location>
serverGroupID: <optional_UUID_of_server_group>
kind: OpenstackProviderSpec
networks:
- subnets:
- UUID: <machines_subnet_UUID>
ports:
- networkID: <radio_network_UUID>
nameSuffix: radio
fixedIPs:
- subnetID: <radio_subnet_UUID>
tags:
- sriov
- radio
vnicType: direct
portSecurity: false
- networkID: <uplink_network_UUID>
nameSuffix: uplink
fixedIPs:
- subnetID: <uplink_subnet_UUID>
tags:
- sriov
- uplink
vnicType: direct
portSecurity: false
primarySubnet: <machines_subnet_UUID>
securityGroups:
- filter: {}
name: <infrastructure_id>-<node_role>
serverMetadata:
Name: <infrastructure_id>-<node_role>
openshiftClusterID: <infrastructure_id>
tags:
- openshiftClusterID=<infrastructure_id>
trunk: true
userDataSecret:
name: <node_role>-user-data
availabilityZone: <optional_openstack_availability_zone>
configDrive: true
ここでは、以下のようになります。
<radio_network_UUID>- 各ポートのネットワーク UUID を指定します。
<radio_subnet_UUID>- 各ポートのサブネット UUID を指定します。
spec.template.spec.providerSpec.value.ports.vnicType パラメーターの値は、各ポートに対して 直接指定する 必要があります。
spec.template.spec.providerSpec.value.ports.portSecurity パラメーターの値は、各ポートに対して false で ある必要があります。ポートセキュリティーが無効な場合は、ポートにセキュリティーグループと使用可能なアドレスペアを設定できません。インスタンスにセキュリティーグループを設定すると、グループが割り当てられているすべてのポートに適用されます。
< アップリンクネットワーク UUID>- 各ポートのネットワーク UUID を指定します。
<uplink_subnet_UUID>- 各ポートのサブネット UUID を指定します。
spec.template.spec.providerSpec.value.configDrive パラメーターの値は true でなければなりません。
SR-IOV 対応のコンピュートマシンをデプロイしたら、そのようにラベルを付ける必要があります。たとえば、コマンドラインから次のように入力します。
$ oc label node <NODE_NAME> feature.node.kubernetes.io/network-sriov.capable="true"
トランクは、ネットワークおよびサブネットの一覧のエントリーで作成されるポート向けに有効にされます。これらのリストから作成されたポートの名前は、<machine_name>-<nameSuffix> パターンを使用します。nameSuffix フィールドは、ポート定義に必要です。
それぞれのポートにトランキングを有効にすることができます。
オプションで、タグを タグ 一覧の一部としてポートに追加できます。