本文档介绍如何从 GKE on VMware 集群中移除静态 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 地址的所有 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
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) 用户集群需要管理员集群中的三个节点作为用户集群的控制平面。每个非 HA 用户集群需要管理员集群中的一个节点作为用户集群的控制平面。
例如,假设您的管理员集群与一个 HA 用户集群和一个非 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 ...
在管理员集群中,修改 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 地址的所有 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
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