如何在 GCE Kubernetes 中为 loadBalancer 指定区域

How to specify region for loadBalancer in GCE Kubernetes

当尝试使用 kubectl expose --type="loadBalancer" 公开负载均衡器时,尽管为 GCE 集群指定了所需的区域和地区(在本例中为 us-central),IP 仍默认为全局区域。因此,当我在 us-centralIN_USE_ADDRESSES exceeded 错误)

中有大量免费 IP 时,我 运行 进入了全球配额限制

如何指定我希望负载平衡器使用 us-central1 范围内的 IP 地址。

此外,我找不到列出当前使用的全球 IP 地址以及正在使用它们的服务的方法。我只能看到我正在使用全局中所有可用的。

如果你只是公开,你会得到一个分配给你的转发规则的临时 ip,它显示在:

gcloud compute forwarding-rules list

如果你想要一个静态 ip,你可以在 相同区域 分配一个作为集群:

gcloud compute addresses create test-us-central --region us-central1

并公开给它 ip 的负载均衡器:

kubectl expose $RC-NAME --type=LoadBalancer --load-balancer-ip=$IP

您不能在其他区域使用 type=LoadBalancer 的服务分配 ip。含义:

gcloud compute forwarding-rules create $NAME --address $ADDRESS --target-pool $TARGET-POOL --region $REGION

$REGION 需要与 $TARGET-POOL 中的虚拟机所在的区域匹配,并且 $ADDRESS 也必须来自该区域。

如果你想使用来自另一个区域的ip,你需要在那个区域设置一个新的集群,或者使用多区域联邦集群(1.4中的alpha)。请注意,您可以联合 多区域 集群,并且存在于单个区域 (http://kubernetes.io/docs/admin/federation/) 中。

看起来负载平衡器必须是全局的才能跨 regions/zones 进行通信。问题是在拆除集群时,负载均衡器似乎保留在云控制台的网络部分。您必须进入并分别删除它们,以防止创建越来越多未使用的负载均衡器。