GCP 内部负载均衡器全局访问(Beta)注释不起作用?

Ami*_*dav 5 load-balancing google-cloud-platform kubernetes google-kubernetes-engine google-cloud-internal-load-balancer

我尝试使用本文档中提到的以下注释创建内部负载均衡器:

networking.gke.io/internal-load-balancer-allow-global-access: "true"
Run Code Online (Sandbox Code Playgroud)

这是完整的清单:

apiVersion: v1
kind: Service
metadata:
  name: ilb-global
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
    networking.gke.io/internal-load-balancer-allow-global-access: "true"
  labels:
    app: hello
spec:
  type: LoadBalancer
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
Run Code Online (Sandbox Code Playgroud)

我尝试从不同区域的 VM 访问负载均衡器,但该 VM 无法到达端点。

但是,根据本文档,我在创建的转发规则上运行了以下命令(GCP 为所有可以使用gcloud compute forwarding-rules list命令检索的负载均衡器创建了一个带有随机名称的转发规则)以更新全局访问:

gcloud beta compute forwarding-rules update abcrandomnamehehe --region [REGION-NAME] --allow-global-access
Run Code Online (Sandbox Code Playgroud)

运行上述命令并手动更新负载均衡器后,可以从所有区域访问端点。这个运行gcloud命令的手动步骤是必要的吗?

如果是,那么注释的用途是什么?我也使用最新的可用 GKE 版本 ( 1.15.4-gke.22 )进行注释,但如果不使用该gcloud命令进行更新,则该注释不起作用。是我遗漏了什么还是 GCP 中的错误?

编辑:我也用 GCP打开了这个问题,这个问题很快得到了解决,他们更新了公共文档(2020 年 1 月 15 日),特别提到了 GKE 1.16 对 Global Access 功能的要求。

小智 6

这是预料之中的,但公共文档中根本没有解释这种行为的原因。事实上,“全局访问”功能适用于 GKE 1.16 集群。

到目前为止,我可以与大家分享以下几点:

  • 关于全局访问有 2 个不同的功能:1 个用于 ILB,1 个专门用于 GKE。
  • GKE 的全球访问功能于 12 月 23 日推出。
  • GKE 的全局访问功能从 GKE 1.16 开始工作,但文档中似乎没有提及。
  • 我们的测试是使用 GKE 1.13.11-gke.14 集群完成的。
  • 需要创建一个GKE 1.16集群并再次测试。

话虽这么说,我想通知您,公共信息中的这种不匹配问题已由正确的团队妥善解决,并且正在进行处理,以更新此处提供的公共文档,以防止将来出现混乱。您可以通过关注此处的更新来跟踪此过程

您如何验证以上提供的信息?这里有一个简短的流程可供您遵循:

测试1:

  • 在 europe-west4 创建 GKE 1.16 集群(此区域/专区不是强制性的)。
  • 创建部署。
  • 通过编写服务配置文件,创建带有注释“networking.gke.io/internal-load-balancer-allow-global-access: "true" 的内部 TCP 负载均衡器。
  • 进入“网络服务”>“负载平衡”>“高级”菜单(位于底部)>:应启用“全局访问”。
  • Europe-west1 中的 SSH 虚拟机。
  • 运行命令 $curl -v :您应该收到 HTTP/1.1 200 OK。

测试2:

  • 删除服务配置文件中的注释“networking.gke.io/internal-load-balancer-allow-global-access: "true"。
  • 通过运行命令 $kubectl apply -f 更新我的服务
  • 进入“网络服务”>“负载平衡”>“高级”菜单(位于底部)>:应禁用全局访问。
  • Europe-west1 中的 SSH 虚拟机。
  • 运行命令 $curl -v :您应该收到超时错误消息。