本文說明如何從 Google Distributed Cloud 的叢集中移除靜態 IP 位址。
建立使用靜態 IP 位址的節點叢集時,您會在IP 位址區塊檔案中指定一組 IP 位址。如果之後發現指定的 IP 位址超出必要數量,可以從叢集中移除部分 IP 位址。
從使用者叢集中移除 IP 位址
請確認移除後仍有足夠的 IP 位址。您需要為每個叢集節點預留一個 IP 位址,並額外預留一個 IP 位址,供升級期間的暫時節點使用。舉例來說,如果您有三個叢集節點,移除後就必須有四個剩餘 IP 位址。
步驟如下:
管理員叢集會為每個相關聯的使用者叢集,提供一個 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:使用者叢集名稱
從「
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
關閉編輯工作階段。
在使用者叢集中,查看預設命名空間中的所有 Machine 物件:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get machines --output yaml
刪除使用其中一個已移除 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
幾分鐘後,查看叢集節點位址:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes --output wide
確認輸出內容中未顯示已移除的 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 位址,以容納下列節點:
- 管理員叢集控制層節點
- 兩個加購節點
- 高可用性使用者叢集控制層的三個節點
- 非高可用性使用者叢集的控制層節點
- 升級期間使用的暫時節點
步驟如下:
判斷管理員叢集控制層節點使用的 IP 位址:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes --output wide
在輸出內容中,找出列為控制層的節點。並記下 IP 位址。
gke-admin-master-hdn4z Ready control-plane,master … 198.51.100.101 ...
在管理員叢集中,編輯 OnPremAdminCluster 自訂資源:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG edit onpremadmincluster --namespace kube-system
將 ADMIN_CLUSTER_KUBECONFIG 替換為管理員叢集 kubeconfig 檔案的路徑。
從「
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
關閉編輯工作階段。
在管理叢集中,查看預設命名空間中的所有 Machine 物件:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get machines --output yaml
刪除使用其中一個已移除 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
查看叢集節點位址:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes --output wide
確認輸出內容中未顯示已移除的 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