2.8. OpenStack でコンピュートマシンセットを作成する
コンピュートワークロード向けに Red Hat OpenStack Platform (RHOSP) 上のノード仮想マシン (VM) のプロビジョニングとスケーリングを自動化するには、RHOSP 固有のイメージやネットワークなどの詳細を定義する MachineSet YAML ファイルを作成します。
RHOSP 上の OpenShift Container Platform クラスターでは、特定の目的に合わせて異なるコンピュートマシンセットを作成できます。たとえば、インフラストラクチャーマシンセットおよび関連マシンを作成して、サポートするワークロードを新しいマシンに移動できます。
高度なマシン管理およびスケーリング機能は、Machine API が動作しているクラスターでのみ使用できます。user-provisioned infrastructure を持つクラスターでは、Machine API を使用するために追加の検証と設定が必要です。
インフラストラクチャープラットフォームタイプが none のクラスターでは、Machine API を使用できません。この制限は、クラスターに接続されている計算マシンが、この機能をサポートするプラットフォームにインストールされている場合でも適用されます。このパラメーターは、インストール後に変更することはできません。
クラスターのプラットフォームタイプを表示するには、以下のコマンドを実行します。
$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
2.8.1. RHOSP 上のコンピュートマシンセットカスタムリソースのサンプル YAML リンクのコピーリンクがクリップボードにコピーされました!
Machine API を使用してコンピュートノードのスケーリングと管理を自動化するには、イメージ ID やネットワーク ID などの Red Hat OpenStack Platform (RHOSP) パラメーターを使用して MachineSet リソースを定義します。
サンプル YAML は Red Hat OpenStack Platform (RHOSP) 上で実行されるコンピュートマシンセットを定義し、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>
machine.openshift.io/cluster-api-machine-role: <role>
machine.openshift.io/cluster-api-machine-type: <role>
name: <infrastructure_id>-<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>-<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:
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:
- filter: {}
subnets:
- filter:
name: <subnet_name>
tags: openshiftClusterID=<infrastructure_id>
primarySubnet: <rhosp_subnet_UUID>
securityGroups:
- filter: {}
name: <infrastructure_id>-worker
serverMetadata:
Name: <infrastructure_id>-worker
openshiftClusterID: <infrastructure_id>
tags:
- openshiftClusterID=<infrastructure_id>
trunk: true
userDataSecret:
name: worker-user-data
availabilityZone: <optional_openstack_availability_zone>
ここでは、以下のようになります。
<infrastructure_id>クラスターのプロビジョニング時に設定したクラスター ID を基にするインフラストラクチャー ID を指定します。OpenShift Container Platform CLI がインストールされている場合は、次のコマンドを実行することでインフラストラクチャー ID を取得できます。
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster<role>- 追加するノードラベルを指定します。
<infrastructure_id>-<role>- インフラストラクチャー ID とノードラベルを指定します。
< サーバーグループのオプションの UUID>-
サーバーグループの作成 時に返される値を入力することにより、
MachineSetYAML のサーバーグループポリシーを設定します。ほとんどのデプロイメントでは、anti-affinityまたはsoft-anti-affinityが推奨されます。 < サブネット名 >使用するサブネットを指定します。
注記複数のネットワークへのデプロイメントには、
spec.template.spec.providerSpec.value.networksスタンザが必要です。複数のネットワークにデプロイする場合、primarySubnet値として使用されるネットワークをこのリストに含める必要があります。<rhosp_subnet_UUID>-
ノードのエンドポイントを公開する RHOSP サブネットを指定します。通常、これは
install-config.yamlファイルのmachinesSubnetの値として使用される同じサブネットです。