ユーザー クラスタの更新

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

概要

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

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

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

構成を更新すると、GKE on AWS はクラスタまたはノードプールを Updating 状態にします。更新が完了すると、クラスタまたはノードプールは Provisioned 状態に戻ります。

始める前に

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

クラスタのセキュリティ グループを変更するには、GKE 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.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com
    
    NAME               CLUSTER     STATE       AGE       VERSION
    cluster-0-pool-0   cluster-0   Updating    10m40s    1.25.5-gke.2100
    

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

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

  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.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com
    
    NAME               CLUSTER     STATE       AGE       VERSION
    cluster-0-pool-0   cluster-0   Updating    10m40s    1.25.5-gke.2100
    

次のステップ