クラスタから静的 IP アドレスを削除する

このドキュメントでは、Google Distributed Cloud のクラスタから静的 IP アドレスを削除する方法について説明します。

ノードに静的 IP アドレスを使用するクラスタを作成する場合は、IP ブロック ファイルで IP アドレスのセットを指定します。後で必要以上の IP アドレスを指定したことが判明した場合は、クラスタから一部の IP アドレスを削除できます。

ユーザー クラスタから IP アドレスを削除する

削除後に十分な IP アドレスがある状態にしてください。アップグレード中に、クラスタノードごとに 1 つの IP アドレスと、一時ノードに使用される追加の IP アドレスが必要です。たとえば、3 つのクラスタノードがある場合は、削除後に残りの IP アドレスが 4 つ必要です。

手順は次のとおりです。

  1. 管理クラスタには、関連するユーザー クラスタごとに OnPremUserCluster カスタム リソースがあります。管理クラスタで、ユーザー クラスタの OnPremUserCluster カスタム リソースを編集します。

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG edit onpremusercluster USER_CLUSTER_NAME \
        --namespace USER_CLUSTER_NAME-gke-onprem-mgmt
    

    次のように置き換えます。

    • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス
    • USER_CLUSTER_NAME: ユーザー クラスタの名前
  2. 選択した IP アドレスを ipBlocks セクションから削除します。

    network:
      ...
      ipMode:
        ipBlocks:
        - gateway: 198.51.100.254
          ips:
          - hostname: user-host1
            ip: 198.51.100.1
          - hostname: user-host2
            ip: 198.51.100.2
          - hostname: user-host3
            ip: 198.51.100.3
          - hostname: user-host4
            ip: 198.51.100.4
          - hostname: user-host5
            ip: 198.51.100.5
          netmask: 255.255.255.0
        type: static
    
  3. 編集セッションを閉じます。

  4. ユーザー クラスタで、デフォルトの名前空間内のすべての Machine オブジェクトを表示します。

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get machines --output yaml
    
  5. 削除した IP アドレスの一つを使用するすべての Machine オブジェクトを削除します。たとえば、アドレス 198.51.100.1 を削除し、my-node-pool-1234 Machine オブジェクトがそのアドレスを使用していることが判明したとします。

    Name:         my-node-pool-1234
    Namespace:    default
    Labels:       kubernetes.googleapis.com/cluster-name=my-cluster
                  kubernetes.googleapis.com/cluster-namespace=default
                  ...
    Annotations:  ...
                  vm-ip-address: 198.51.100.1
    

    次に、my-node-pool-1234 マシン オブジェクトを削除する必要があります。

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG delete machine my-node-pool-1234
    
  6. 数分後、クラスタノードのアドレスを表示します。

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes --output wide
    
  7. 削除された IP アドレスが出力に表示されないことを確認します。次に例を示します。

    myhost2   Ready ... 198.51.100.2
    myhost3   Ready ... 198.51.100.3
    myhost4   Ready ... 198.51.100.4
    

管理クラスタから IP アドレスを削除する

削除後に十分な IP アドレスがある状態にしてください。管理クラスタ コントロール プレーン ノードには 1 つの IP アドレス、アドオンノードには 2 つのアドレス、アップグレード中の一時的なノードには使用できる追加の IP アドレスが必要です。また、関連するユーザー クラスタごとに、ユーザー クラスタ コントロール プレーンに 1 つまたは 3 つのアドレスが必要です。各高可用性(HA)ユーザー クラスタには、ユーザー クラスタのコントロール プレーン用に管理クラスタに 3 つのノードが必要です。HA 以外の各ユーザー クラスタには、ユーザー クラスタのコントロール プレーンの管理ノードが 1 つ必要です。

たとえば、管理クラスタが、1 つの HA ユーザー クラスタと 1 つの HA 以外のユーザー クラスタに関連付けられているとします。削除後、次のノードに対応するには、8 つの IP アドレスが必要です。

  • 管理クラスタのコントロール プレーン ノード
  • 2 つのアドオンノード
  • HA ユーザー クラスタのコントロール プレーン用の 3 つのノード
  • HA 以外のユーザー クラスタのコントロール プレーン用の 1 つのノード
  • アップグレード中に使用される一時ノード

手順は次のとおりです。

  1. 管理クラスタのコントロール プレーン ノードで使用されている IP アドレスを確認します。

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes --output wide
    

    出力で、コントロール プレーンとして表示されているノードを見つけます。その IP アドレスをメモしておきます。

    gke-admin-master-hdn4z   Ready   control-plane,master … 198.51.100.101
    ...
    
  2. 管理クラスタで、OnPremAdminCluster カスタム リソースを編集します。

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG edit onpremadmincluster --namespace kube-system
    

    ADMIN_CLUSTER_KUBECONFIG は、管理クラスタの kubeconfig ファイルへのパスに置き換えます。

  3. 選択した IP アドレスを ipBlocks セクションから削除します。管理クラスタのコントロール プレーン ノードに使用されている IP アドレスは削除しないでください。

    network:
      ...
      ipMode:
        ipBlocks:
        - gateway: 198.51.100.254
          ips:
          - hostname: admin-host1
            ip: 198.51.100.101
          - hostname: admin-host2
            ip: 198.51.100.102
          - hostname: admin-host3
            ip: 198.51.100.103
          - hostname: admin-host4
            ip: 198.51.100.104
          - hostname: admin-host5
            ip: 198.51.100.105
          - hostname: admin-host6
            ip: 198.51.100.106
          - hostname: admin-host7
            ip: 198.51.100.107
          - hostname: admin-host8
            ip: 198.51.100.108
          - hostname: admin-host9
            ip: 198.51.100.109
          netmask: 255.255.255.0
        type: static
    
  4. 編集セッションを閉じます。

  5. 管理者クラスタで、デフォルトの名前空間内のすべての Machine オブジェクトを表示します。

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get machines --output yaml
    
  6. 削除した IP アドレスの一つを使用するすべての Machine オブジェクトを削除します。たとえば、アドレス 198.51.100.102 を削除し、gke-admin-node- Machine オブジェクトがそのアドレスを使用していることが判明したとします。

    Name:         gke-admin-node-5678
    Namespace:    default
    ...
    Status:
    Addresses:
    Address:       198.51.100.102
    Type:          ExternalIP
    ...
    

    次に、gke-admin-node-5678 マシン オブジェクトを削除する必要があります。

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG delete machine gke-admin-node-5678
    
  7. クラスタノード アドレスを表示します。

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes --output wide
    
  8. 削除された IP アドレスが出力に表示されないことを確認します。次に例を示します。

    gke-admin-master-hdn4z  Ready  control-plane,master  198.51.100.101
    gke-admin-node-abcd   Ready ... 198.51.100.103
    gke-admin-node-efgh   Ready ... 198.51.100.104
    my-user-cluster-ijkl  Ready ... 198.51.100.105
    my-user-cluster-mnop  Ready ... 198.51.100.106
    my-user-cluster-qrst  Ready ... 198.51.100.107
    my-user-cluster-uvwx  Ready ... 198.51.100.108