3.2. AWS 上でマルチアーキテクチャーのコンピュートマシンを含むクラスターを作成する
Amazon Web Services (AWS) 上にマルチアーキテクチャーのコンピュートマシンを含むクラスターをデプロイするには、まずマルチアーキテクチャーインストーラーバイナリーを使用するシングルアーキテクチャーのインストーラープロビジョニング済みクラスターを作成する必要があります。
シングルアーキテクチャーのコンピュートマシンを含む現在のクラスターを、マルチアーキテクチャーのコンピュートマシンを含むクラスターに移行することもできます。マルチアーキテクチャークラスターを作成した後、異なるアーキテクチャーのノードをクラスターに追加できます。
3.2.1. AWS クラスターにマルチアーキテクチャーコンピュートマシンセットを追加する リンクのコピーリンクがクリップボードにコピーされました!
マルチアーキテクチャークラスターを作成した後、異なるアーキテクチャーのノードを追加できます。
マルチアーキテクチャーコンピュートマシンをマルチアーキテクチャークラスターに追加する方法には、次のものがあります。
- 64 ビット ARM コントロールプレーンマシンを使用し、すでに 64 ビット ARM コンピュートマシンが含まれているクラスターに 64 ビット x86 コンピュートマシンを追加します。この場合、64 ビット x86 がセカンダリーアーキテクチャーと見なされます。
- 64 ビット x86 コントロールプレーンマシンを使用し、すでに 64 ビット x86 コンピュートマシンが含まれているクラスターに 64 ビット ARM コンピュートマシンを追加します。この場合、64 ビット ARM がセカンダリーアーキテクチャーと見なされます。
セカンダリーアーキテクチャーノードをクラスターに追加する前に、Multiarch Tuning Operator をインストールし、ClusterPodPlacementConfig カスタムリソースをデプロイすることを推奨します。詳細は、「Multiarch Tuning Operator を使用してマルチアーキテクチャークラスター上のワークロードを管理する」を参照してください。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - インストールプログラムを使用して、マルチアーキテクチャーインストーラーバイナリーを含む 64 ビット ARM または 64 ビット x86 シングルアーキテクチャークラスターを作成しました。
手順
-
OpenShift CLI (
oc) にログインします。 YAML ファイルを作成し、設定を追加して、クラスター内の 64 ビット ARM または 64 ビット x86 コンピュートノードを制御するコンピュートマシンセットを作成します。
AWS の 64 ビット ARM または x86 コンピュートノードの
MachineSetオブジェクトの例apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> name: <infrastructure_id>-aws-machine-set-0 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-02a574449d4f4d280 apiVersion: awsproviderconfig.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: m6g.xlarge kind: AWSMachineProviderConfig placement: availabilityZone: us-east-1a region: <region> securityGroups: - filters: - name: tag:Name values: - <infrastructure_id>-node subnet: filters: - name: tag:Name values: - <infrastructure_id>-subnet-private-<zone> tags: - name: kubernetes.io/cluster/<infrastructure_id> value: owned - name: <custom_tag_name> value: <custom_tag_value> userDataSecret: name: worker-user-dataここでは、以下のようになります。
<infrastructure_id>クラスターのプロビジョニング時に設定したクラスター ID を基にするインフラストラクチャー ID を指定します。OpenShift CLI (
oc) がインストールされている場合は、以下のコマンドを実行してインフラストラクチャー ID を取得できます。$ oc get -o jsonpath="{.status.infrastructureName}{'\n'}" infrastructure cluster< ロール >-< ゾーン >- インフラストラクチャー ID、ロールノードラベル、およびゾーンを指定します。
<role>- 追加するロールノードラベルを指定します。
ami.idノード用に、AWS リージョンに対応した Red Hat Enterprise Linux CoreOS(RHCOS)Amazon Machine Image (AMI) を指定します。RHCOS AMI はマシンのアーキテクチャーと互換性がある必要があります。
$ oc get configmap/coreos-bootimages \ -n openshift-machine-config-operator \ -o jsonpath='{.data.stream}' | jq \ -r '.architectures.<arch>.images.aws.regions."<region>".image'インスタンスタイプ- 選択した AMI の CPU アーキテクチャーに適合するマシンタイプを指定します。詳細は、AWS 64 ビット ARM でテスト済みのインスタンスタイプを参照してください。
availabilityZone-
ゾーンを指定します。たとえば、
us-east-1aです。選択したゾーンに必要なアーキテクチャーを備えたマシンがあることを確認してください。 region-
リージョンを指定します。たとえば、
us-east-1などです。選択したゾーンに必要なアーキテクチャーを備えたマシンがあることを確認してください。
次のコマンドを実行してコンピュートマシンセットを作成します。
$ oc create -f <file_name>-
<file_name>は、コンピュートマシン設定を含む YAML ファイルの名前に置き換えます。たとえば、aws-arm64-machine-set-0.yaml、またはaws-amd64-machine-set-0.yamlです。
-
検証
次のコマンドを実行して、新しいマシンが実行中であることを確認します。
$ oc get machineset -n openshift-machine-api出力に、作成したマシンセットが含まれている必要があります。
出力例
NAME DESIRED CURRENT READY AVAILABLE AGE <infrastructure_id>-aws-machine-set-0 2 2 2 2 10m次のコマンドを実行すると、ノードが準備完了状態でスケジュール可能かどうかを確認できます。
$ oc get nodes