从集群中移除静态 IP 地址

本文档介绍如何从 VMware (GKE On-Prem) 的 Anthos 集群中的集群移除静态 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 地址的所有 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
    
  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) 用户集群需要用户集群控制层面的三个节点作为用户集群。每个非 HA 用户集群需要用户集群控制层面的安全集群节点。

例如,假设您的管理员集群与一个高可用性用户集群和一个非高可用性用户集群相关联。然后,您必须在移除后保留八个 IP 地址以容纳以下节点:

  • 管理员集群控制层面节点
  • 两个插件节点
  • 三个节点用于高可用性用户集群的控制层面
  • 一个节点用于非 HA 用户集群的控制层面
  • 可在升级过程中使用的临时节点

请按照以下步骤操作:

  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
    

    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 地址的所有 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
    
  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