VPC 集群: 为什么我的应用程序无法通过负载均衡器进行连接?

当无法通过 VPC 负载均衡器服务访问您的应用时,请排查 VPC 负载均衡器的连接问题。

基础架构提供者:VPC

您通过在 VPC 集群中创建一个 Kubernetes LoadBalancer 服务,将您的应用对外公开。 尝试使用分配给 Kubernetes LoadBalancer 的主机名来连接到应用程序时,连接失败或超时。

运行 oc describe svc <kubernetes_lb_service_name> 时,您可能会在 “事件” 部分看到类似以下内容的警告消息:

The VPC load balancer that routes requests to this Kubernetes `LoadBalancer` service is offline.
The VPC load balancer that routes requests to this Kubernetes `LoadBalancer` service was deleted from your VPC.

在集群中创建 Kubernetes LoadBalancer 服务时,将在 VPC 中自动创建 VPC 负载均衡器。 VPC 负载均衡器仅将请求路由到 Kubernetes LoadBalancer 服务公开的应用程序。

在以下情况下,请求无法路由到您的应用:

  • VPC 安全组正在阻止到工作程序节点的入局流量,包括到应用程序的入局请求。
  • VPC 负载均衡器处于脱机状态,例如由于负载均衡器供应错误或 VSI 连接错误。
  • VPC 负载均衡器已通过 VPC 控制台或 CLI 删除。
  • VPC 负载均衡器的 DNS 条目仍在注册。
  • 您已达到每个帐户允许的最大 VPC 负载均衡器数。 请查看 VPC 配额文档,以了解 VPC 中所有 VPC 集群的 VPC 资源配额。

请验证是否没有 VPC 安全组阻止流向集群的流量,以及 VPC 负载均衡器是否可用。

  1. 验证 Kubernetes LoadBalancer 服务的 VPC 负载均衡器是否存在。 在输出结果中,查找格式为 kube-<cluster_ID>-<kubernetes_lb_service_UID> 的VPC负载均衡器。 您可以通过运行 oc get svc <service_name> -o yaml 来获取 Kubernetes LoadBalancer 服务的UID。

    ibmcloud is load-balancers
    
    • 如果未列出 VPC 负载均衡器,那么由于下列其中一个原因,该负载均衡器不存在:
    • 您已达到每个帐户允许的最大 VPC 负载均衡器数。 在您的 VPC 中的所有 VPC 集群中,最多可创建 20 个 VPC 负载均衡器。 将为创建的每个 Kubernetes LoadBalancer 服务创建一个 VPC 负载均衡器,VPC 负载均衡器仅将请求路由到对应的 Kubernetes LoadBalancer 服务。
    • 该 VPC 负载均衡器已通过 VPC 控制台或 CLI 被删除。 要为您的 Kubernetes LoadBalancer 服务重新创建 VPC 负载均衡器,请通过运行 ibmcloud oc cluster master refresh --cluster <cluster_name_or_id> 来重启 Kubernetes 主节点。

    如果您想删除 VPC 集群中某个应用的负载均衡配置,请运行 oc delete svc <kubernetes_lb_service_name> 命令,删除 Kubernetes LoadBalancer 服务。 与 Kubernetes LoadBalancer 服务关联的 VPC 负载均衡器会自动从 VPC 中删除。

  2. 如果存在负载均衡器,请 查看附加到它的 VPC 安全组。 如果对自动附加到负载均衡器的 kube-lbaas-<cluster-id> 安全组进行了任何修改,请在安全组中重新设置原始规则。

    • 如果列出了 VPC 负载均衡器,并且您尚未修改任何已连接的安全组,那么可能由于以下原因而无法响应:
      • 其 DNS 条目可能仍在注册。 创建 VPC 负载均衡器时,将通过公共 DNS 注册主机名。 有时,该 DNS 条目需要几分钟才能同步到您的客户端所使用的特定 DNS 服务器上。 您可以等待主机名在 DNS 中完成注册,也可以使用 VPC 负载均衡器的其中一个 IP 地址直接访问 VPC 负载均衡器。 要查找 VPC 负载均衡器 IP 地址,请运行 ibmcloud is lb <LB_ID> 并查找 公共 IP 字段。
      • 如果几分钟后仍无法连接到负载均衡器,可能是由于配置或连接问题导致其处于离线状态。 打开 IBM Cloud 支持案例。 对于“类型”,选择技术。 对于“类别”,请在 VPC 部分中选择网络。 在“描述”中,包含集群标识和 VPC 负载均衡器标识。