经典集群: 为什么我无法部署负载均衡器?

在集群中部署或更新网络负载均衡器(NLB)服务时,排查相关问题。

经典基础设施

在经典集群中描述 ibm-cloud-provider-vlan-ip-config ConfigMap 时,可能会看到与以下示例输出类似的错误信息。

oc describe cm ibm-cloud-provider-vlan-ip-config -n kube-system
Warning  CreatingLoadBalancerFailed ... ErrorSubnetLimitReached: There are already the maximum number of subnets permitted in this VLAN.

在标准集群中,首次在某个专区中创建集群时,会自动在 IBM Cloud 基础架构帐户中供应该专区中的公用 VLAN 和专用 VLAN。

在该专区中,会在指定的公用 VLAN 上请求 1 个公共可移植子网,并在指定的专用 VLAN 上请求 1 个专用可移植子网。 对于 Red Hat OpenShift on IBM Cloud,VLAN 限制为 40 个子网。 如果某个专区中集群的 VLAN 已达到该限制,那么您可能没有可用于创建网络负载均衡器 (NLB) 的可移植公共 IP 地址。

要查看 VLAN 的子网数,请执行以下操作:

  1. IBM Cloud 基础设施控制台中,选择 “网络” > “IP管理” > “VLAN”
  2. 单击用于创建集群的 VLAN 的 VLAN 编号。 查看子网部分以了解是否存在 40 个或更多子网。

如果需要新的 VLAN,请通过联系 IBM Cloud 支持进行订购。

然后,创建集群以使用这一新的 VLAN。

如果有其他 VLAN 可用,那么可以在现有集群中设置 VLAN 生成。 在此之后,即可将新的工作程序节点添加到集群,这些节点将使用具有可用子网的其他 VLAN。 要检查VLAN生成树功能是否已启用,请使用 ibmcloud oc vlan spanning get --region REGION 命令

如果并未使用 VLAN 中的所有子网,那么可以通过将 VLAN 上的子网添加到集群来复用这些子网。

  1. 检查要使用的子网是否可用。

    使用的基础架构帐户可能在多个 IBM Cloud 帐户之间共享。 在这种情况下,即使您运行 ibmcloud oc subnets 命令来查看具有已绑定集群的子网,也只能看到您自己集群的相关信息。 请与 Infrastructure 帐户所有者核实以确保这些子网可用,并且未由其他任何帐户或团队使用。

  2. 使用 ibmcloud oc cluster subnet add 命令, 将现有子网分配给您的集群。

  3. 验证子网已成功创建并添加到集群。 子网 CIDR 在 Subnet VLANs 部分中列出。

    ibmcloud oc cluster get --cluster CLUSTER_NAME --show-resources
    

    在此输出示例中,第二个子网已添加到 2234945 公用 VLAN:

    Subnet VLANs
    VLAN ID   Subnet CIDR          Public   User-managed
    2234947   10.xxx.xx.xxx/29     false    false
    2234945   169.xx.xxx.xxx/29    true     false
    2234945   169.xx.xxx.xxx/29    true     false
    
  4. 请确认您添加的子网中的可移植 IP 地址已被用作负载均衡器的 EXTERNAL-IP。 各项服务可能需要几分钟时间才能开始使用新子网中的可移植IP地址。

    oc get svc -n kube-system