本文档介绍如何从 VMware (GKE On-Prem) 的 Anthos 集群中的集群移除静态 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 用户集群需要用户集群控制层面的安全集群节点。
例如,假设您的管理员集群与一个高可用性用户集群和一个非高可用性用户集群相关联。然后,您必须在移除后保留八个 IP 地址以容纳以下节点:
- 管理员集群控制层面节点
- 两个插件节点
- 三个节点用于高可用性用户集群的控制层面
- 一个节点用于非 HA 用户集群的控制层面
- 可在升级过程中使用的临时节点
请按照以下步骤操作:
确定用于管理员集群的控制层面节点的 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
将 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