13.3. Cluster API によるマシンの管理


重要

Cluster API を使用したマシン管理は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

13.3.1. Cluster API のマシンテンプレートの変更

YAML マニフェストファイルを変更し、OpenShift CLI (oc) を使用して適用することで、クラスターのマシンテンプレートリソースを更新できます。

前提条件

  • Cluster API を使用する OpenShift Container Platform クラスターをデプロイした。
  • cluster-admin 権限を持つアカウントを使用してクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. 次のコマンドを実行して、クラスターのマシンテンプレートリソースをリスト表示します。

    $ oc get <machine_template_kind> 1
    1
    お使いのプラットフォームに応じた値を指定します。次の値が有効です。
    • AWSMachineTemplate: クラスターが Amazon Web Services (AWS) 上で実行されている場合。
    • GCPMachineTemplate: クラスターが Google Cloud Platform (GCP) 上で実行されている場合。
    • VSphereMachineTemplate: クラスターが VMware vSphere で実行されている場合。

    出力例

    NAME              AGE
    <template_name>   77m

  2. 次のコマンドを実行して、クラスターのマシンテンプレートリソースを編集可能なファイルに書き込みます。

    $ oc get <template_name> -o yaml > <template_name>.yaml

    <template_name> は、クラスターのマシンテンプレートリソースの名前です。

  3. <template_name>.yaml ファイルのコピーを作成し、別の名前を付けます。この手順では、ファイル名の例として <modified_template_name>.yaml を使用します。
  4. テキストエディターを使用し、<modified_template_name>.yaml ファイルに変更を加えて、クラスターの更新されたマシンテンプレートリソースを定義します。マシンテンプレートリソースを編集するときは、次の点に注意してください。

    • spec スタンザ内のパラメーターはプロバイダー固有です。詳細は、各プロバイダーの Cluster API マシンテンプレートのサンプル YAML を参照してください。
    • metadata.name パラメーターには、既存の値とは異なる値を使用する必要があります。

      重要

      このテンプレートを参照する Cluster API コンピュートマシンセットがある場合、spec.template.spec.infrastructureRef.name パラメーターを、新しいマシンテンプレートリソースの metadata.name 値と一致するように更新する必要があります。

  5. 次のコマンドを実行して、マシンテンプレート CR を適用します。

    $ oc apply -f <modified_template_name>.yaml 1
    1
    新しい名前を付けた編集済み YAML ファイルを使用します。

次のステップ

  • このテンプレートを参照する Cluster API コンピュートマシンセットがある場合、spec.template.spec.infrastructureRef.name パラメーターを、新しいマシンテンプレートリソースの metadata.name 値と一致するように更新します。詳細は、「CLI を使用してコンピュートマシンセットを変更する」を参照してください。

13.3.2. CLI を使用してコンピュートマシンセットを変更する

CLI を使用してコンピュートマシンセットの設定を変更し、その変更をクラスター内のマシンに伝播することができます。

コンピュートマシンセットの設定を更新することで、機能を有効にしたり、その設定によって作成されるマシンのプロパティーを変更したりできます。コンピュートマシンセットを変更すると、その変更は、更新された MachineSet カスタムリソース (CR) を保存した後に作成されたコンピュートマシンにのみ適用されます。この変更は既存のマシンには影響しません。

注記

基盤となるクラウドプロバイダーで行われた変更は、Machine または MachineSet CR には反映されません。クラスターによって管理されるインフラストラクチャーのインスタンス設定を調整するには、クラスター側のリソースを使用してください。

コンピュートマシンセットをスケーリングしてレプリカの数を 2 倍にし、その後、元のレプリカの数までスケールダウンすることで、更新した設定を反映した新しいマシンに既存のマシンを置き換えることができます。

他の変更を加えずに、コンピュートマシンセットをスケーリングする必要がある場合、マシンを削除する必要はありません。

注記

デフォルトでは、OpenShift Container Platform ルーター Pod はコンピュートマシンにデプロイされます。ルーターは Web コンソールなどの一部のクラスターリソースにアクセスすることが必要であるため、ルーター Pod をまず再配置しない限り、コンピュートマシンセットを 0 にスケーリングできません。

この手順の出力例では、AWS クラスターの値を使用します。

前提条件

  • OpenShift Container Platform クラスターが Cluster API を使用している。
  • OpenShift CLI (oc) を使用して、管理者としてクラスターにログインしている。

手順

  1. 以下のコマンドを実行して、クラスター内のコンピュートマシンセットを一覧表示します。

    $ oc get machinesets.cluster.x-k8s.io -n openshift-cluster-api

    出力例

    NAME                          CLUSTER             REPLICAS   READY   AVAILABLE   AGE   VERSION
    <compute_machine_set_name_1>  <cluster_name>      1          1       1           26m
    <compute_machine_set_name_2>  <cluster_name>      1          1       1           26m

  2. 次のコマンドを実行して、コンピュートマシンセットを編集します。

    $ oc edit machinesets.cluster.x-k8s.io <machine_set_name> \
      -n openshift-cluster-api
  3. spec.replicas フィールドの値をメモします。この値は、変更を適用するためにコンピュートマシンセットをスケーリングする際に必要になるためです。

    apiVersion: cluster.x-k8s.io/v1beta1
    kind: MachineSet
    metadata:
      name: <machine_set_name>
      namespace: openshift-cluster-api
    spec:
      replicas: 2 1
    # ...
    1
    この手順例では、replicas 値が 2 のコンピュートマシンセットを示しています。
  4. 必要な設定オプションを使用してコンピュートマシンセット CR を更新し、変更を保存します。
  5. 次のコマンドを実行して、更新されたコンピュートマシンセットによって管理されているマシンをリスト表示します。

    $ oc get machines.cluster.x-k8s.io \
      -n openshift-cluster-api \
      -l cluster.x-k8s.io/set-name=<machine_set_name>

    AWS クラスターの出力例

    NAME                        CLUSTER          NODENAME                                    PROVIDERID                              PHASE           AGE     VERSION
    <machine_name_original_1>   <cluster_name>   <original_1_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running         4h
    <machine_name_original_2>   <cluster_name>   <original_2_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running         4h

  6. 次のコマンドを実行して、更新されたコンピュートマシンセットで管理されるマシンごとに delete アノテーションを設定します。

    $ oc annotate machines.cluster.x-k8s.io/<machine_name_original_1> \
      -n openshift-cluster-api \
      cluster.x-k8s.io/delete-machine="true"
  7. 代わりとなるマシンを新しい設定で作成するために、次のコマンドを実行して、コンピュートマシンセットをレプリカ数の 2 倍にスケーリングします。

    $ oc scale --replicas=4 \1
      machinesets.cluster.x-k8s.io <machine_set_name> \
      -n openshift-cluster-api
    1
    元の例の値 2 は 2 倍の 4 になります。
  8. 次のコマンドを実行して、更新されたコンピュートマシンセットによって管理されているマシンをリスト表示します。

    $ oc get machines.cluster.x-k8s.io \
      -n openshift-cluster-api \
      -l cluster.x-k8s.io/set-name=<machine_set_name>

    AWS クラスターの出力例

    NAME                        CLUSTER          NODENAME                                    PROVIDERID                              PHASE           AGE     VERSION
    <machine_name_original_1>   <cluster_name>   <original_1_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running         4h
    <machine_name_original_2>   <cluster_name>   <original_2_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running         4h
    <machine_name_updated_1>    <cluster_name>   <updated_1_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Provisioned     55s
    <machine_name_updated_2>    <cluster_name>   <updated_2_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Provisioning    55s

    新しいマシンが Running フェーズにある場合、コンピュートマシンセットを元のレプリカ数にスケーリングできます。

  9. 古い設定で作成されたマシンを削除するために、次のコマンドを実行して、コンピュートマシンセットを元のレプリカ数にスケーリングします。

    $ oc scale --replicas=2 \1
      machinesets.cluster.x-k8s.io <machine_set_name> \
      -n openshift-cluster-api
    1
    元の例の値は 2 です。

検証

  • 更新されたマシンセットによって作成されたマシンの設定が正しいことを確認するには、次のコマンドを実行して、新しいマシンの 1 つで CR の関連フィールドを調べます。

    $ oc describe machines.cluster.x-k8s.io <machine_name_updated_1> \
      -n openshift-cluster-api
  • 設定が更新されていないコンピュートマシンが削除されたことを確認するには、次のコマンドを実行して、更新されたコンピュートマシンセットによって管理されているマシンをリスト表示します。

    $ oc get machines.cluster.x-k8s.io \
      -n openshift-cluster-api \
      cluster.x-k8s.io/set-name=<machine_set_name>

    AWS クラスターの削除進行中の出力例

    NAME                        CLUSTER          NODENAME                                    PROVIDERID                              PHASE      AGE     VERSION
    <machine_name_original_1>   <cluster_name>   <original_1_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m
    <machine_name_original_2>   <cluster_name>   <original_2_ip>.<region>.compute.internal   aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m
    <machine_name_updated_1>    <cluster_name>   <updated_1_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m
    <machine_name_updated_2>    <cluster_name>   <updated_2_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m

    AWS クラスターの削除完了時の出力例

    NAME                        CLUSTER          NODENAME                                    PROVIDERID                              PHASE      AGE     VERSION
    <machine_name_updated_1>    <cluster_name>   <updated_1_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m
    <machine_name_updated_2>    <cluster_name>   <updated_2_ip>.<region>.compute.internal    aws:///us-east-2a/i-04e7b2cbd61fd2075   Running    18m

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.