ユーザー クラスタの更新

このトピックでは、既存のユーザー クラスタの構成を更新する方法について説明します。

概要

Kubernetes バージョン 1.20 以降を実行しているユーザー クラスタでは、次の属性を変更できます。

Kubernetes 1.22 以降では、EC2 インスタンス タイプを更新できます。

これらのリソースを更新するには、AWSCluster リソースと AWSNodePool リソースを編集します。

構成を更新すると、Anthos clusters on AWS によってクラスタまたはノードプールが Updating 状態になります。更新が完了すると、そのクラスタやノードプールは Provisioned 状態に戻ります。

始める前に

ユーザー クラスタを変更するには、クラスタとノードプールで Kubernetes バージョン 1.20 以降を実行する必要があります。クラスタで Kubernetes 1.20 が実行されていない場合は、まずユーザー クラスタをアップグレードします。

クラスタのセキュリティ グループを変更するには、Anthos clusters on AWS のユーザー クラスタを管理する AWS IAM ロール(anthos-gke.yamlspec.authentication.awsIAM.adminIdentityARNs に設定)に ec2:ModifyNetworkInterfaceAttribute 権限が必要です。

セキュリティ グループの更新

このセクションでは、クラスタとノードプールのセキュリティ グループを更新します。セキュリティ グループを更新するには、次の手順を行います。

  1. anthos-aws ディレクトリから anthos-gke を使用して、コンテキストを管理サービスに切り替えます。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. AWSCluster を作成した YAML ファイルをテキスト エディタで開きます。最初の YAML ファイルがない場合は、kubectl edit を使用できます。

    YAML の編集

    ユーザー クラスタの作成手順に従っている場合、YAML ファイルの名前は cluster-0.yaml です。このファイルをテキスト エディタで開きます。

    kubectl edit

    kubectl edit を使用して AWSCluster を編集するには、次のコマンドを実行します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-name
    

    cluster-name を AWSCluster に置き換えます。たとえば、デフォルトのクラスタ cluster-0 を編集するには、次のコマンドを実行します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-0
    
  3. AWSClusterspec.controlPlane.securityGroupIDs フィールドを編集します。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    ...
    spec:
      controlPlane:
        securityGroupIDs:
          - SECURITY_GROUP_ID
        ...
    

    SECURITY_GROUP_ID は、新しいセキュリティ グループの ID に置き換えます。複数のセキュリティ グループを追加するには、spec.controlPlane.securityGroupIDs の下の配列に値を追加します。

    次の例では、セキュリティ グループ sg-12345678absg-abcdef1234 が追加されています。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    spec:
      controlPlane:
        securityGroupIDs:
          - sg-12345678ab
          - sg-abcdef1234
        ...
    
  4. AWSNodePool リソースの spec.securityGroupIDs フィールドを編集します。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    spec:
      securityGroupIDs:
        - SECURITY_GROUP_ID
      ...
    
  5. ファイルを保存します。kubectl edit を使用している場合は、kubectl が変更を自動的に適用します。YAML ファイルを編集する場合は、次のコマンドを使用して管理サービスに適用します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    
  6. kubectl で更新ステータスを確認します。更新が終わると、オブジェクトの状態は Updating から Provisioned に変わります。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get AWSClusters,AWSNodePools
    

    たとえば、クラスタが更新状態にある間、出力は次のようになります。

    NAME        STATE       AGE      VERSION           ENDPOINT
    cluster-0   Updating    10m41s   1.24.6-gke.1300   gke-xyz.elb.us-east-1.amazonaws.com
    
    NAME               CLUSTER     STATE       AGE       VERSION
    cluster-0-pool-0   cluster-0   Updating    10m40s    1.24.6-gke.1300
    

インスタンス タイプの更新

このセクションでは、クラスタとノードプールのインスタンス タイプを更新します。インスタンス タイプを更新するには、次の手順を実行します。

  1. anthos-aws ディレクトリから anthos-gke を使用して、コンテキストを管理サービスに切り替えます。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. AWSCluster を作成した YAML ファイルをテキスト エディタで開きます。最初の YAML ファイルがない場合は、kubectl edit を使用できます。

    YAML の編集

    ユーザー クラスタの作成手順に従っている場合、YAML ファイルの名前は cluster-0.yaml です。このファイルをテキスト エディタで開きます。

    kubectl edit

    kubectl edit を使用して AWSCluster を編集するには、次のコマンドを実行します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-name
    

    cluster-name を AWSCluster に置き換えます。たとえば、デフォルトのクラスタ cluster-0 を編集するには、次のコマンドを実行します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-0
    
  3. AWSClusterspec.controlPlane.instanceType フィールドを編集します。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    ...
    spec:
      controlPlane:
        instanceType: AWS_INSTANCE_TYPE
        ...
    

    AWS_INSTANCE_TYPE は、新しいインスタンス タイプに置き換えます。詳細については、サポートされているインスタンス タイプをご覧ください。

  4. AWSNodePool リソースの spec.instanceType フィールドを編集します。

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    spec:
      instanceType: AWS_INSTANCE_TYPE
      ...
    
  5. ファイルを保存します。kubectl edit を使用している場合は、kubectl が変更を自動的に適用します。YAML ファイルを編集する場合は、次のコマンドを使用して管理サービスに適用します。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    
  6. kubectl で更新ステータスを確認します。更新が終わると、オブジェクトの状態は Updating から Provisioned に変わります。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get AWSClusters,AWSNodePools
    

    たとえば、クラスタが更新状態にある間、出力は次のようになります。

    NAME        STATE       AGE      VERSION           ENDPOINT
    cluster-0   Updating    10m41s   1.24.6-gke.1300   gke-xyz.elb.us-east-1.amazonaws.com
    
    NAME               CLUSTER     STATE       AGE       VERSION
    cluster-0-pool-0   cluster-0   Updating    10m40s    1.24.6-gke.1300
    

次のステップ