從叢集移除靜態 IP 位址

本文說明如何從 Google Distributed Cloud 的叢集中移除靜態 IP 位址。

建立使用靜態 IP 位址的節點叢集時,您會在IP 位址區塊檔案中指定一組 IP 位址。如果之後發現指定的 IP 位址超出必要數量,可以從叢集中移除部分 IP 位址。

從使用者叢集中移除 IP 位址

請確認移除後仍有足夠的 IP 位址。您需要為每個叢集節點預留一個 IP 位址,並額外預留一個 IP 位址,供升級期間的暫時節點使用。舉例來說,如果您有三個叢集節點,移除後就必須有四個剩餘 IP 位址。

步驟如下:

  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. 從「ipBlocks」部分移除所選 IP 位址:

    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 位址的所有機器物件。 舉例來說,假設您移除了地址 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 Machine 物件。

    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 位址。您需要一個 IP 位址做為管理員叢集控制層節點,兩個位址做為附加元件節點,以及一個額外 IP 位址,供升級期間的暫時節點使用。此外,每個相關聯的使用者叢集都需要一或三個使用者叢集控制層的位址。每個高可用性 (HA) 使用者叢集都需要管理員叢集中的三個節點,做為使用者叢集的控制層。每個非高可用性使用者叢集都需要管理員叢集中的一個節點,做為使用者叢集的控制層。

舉例來說,假設您的管理員叢集與一個高可用性使用者叢集和一個非高可用性使用者叢集相關聯。移除後,您必須保留八個 IP 位址,以容納下列節點:

  • 管理員叢集控制層節點
  • 兩個加購節點
  • 高可用性使用者叢集控制層的三個節點
  • 非高可用性使用者叢集的控制層節點
  • 升級期間使用的暫時節點

步驟如下:

  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. 從「ipBlocks」部分移除所選 IP 位址。請務必不要移除用於管理員叢集控制層節點的 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 位址的所有機器物件。 舉例來說,假設您移除了 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 Machine 物件。

    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