GCP 内部负载均衡器全局访问(测试版)注释不起作用?
GCP internal load balancer Global access (Beta) annotation does not work?
-
load-balancing
-
google-cloud-platform
-
kubernetes
-
google-kubernetes-engine
-
google-cloud-internal-load-balancer
我尝试使用 this documentation 中提到的以下注释创建内部负载平衡器:
networking.gke.io/internal-load-balancer-allow-global-access: "true"
这是完整的清单:
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
我尝试从不同区域的 VM 访问负载均衡器,但 VM 无法访问端点。
但是根据 this documentation 我 运行 对创建的转发规则执行以下命令(GCP 为所有负载均衡器创建一个带有 运行dom 名称的转发规则可以使用 gcloud compute forwarding-rules list
命令检索)以更新全局访问权限:
gcloud beta compute forwarding-rules update abcrandomnamehehe --region [REGION-NAME] --allow-global-access
在 运行 执行上述命令并手动更新负载均衡器后,可以从所有区域访问端点。 运行 gcloud
命令的这个手动步骤是否必要?
如果是,那么注解有什么用呢?我也使用最新可用的 GKE 版本 (1.15.4-gke.22) 进行注释,但如果不使用 gcloud
命令进行更新则无法使用。是我遗漏了什么还是 GCP 中的错误?
编辑:我还打开了 GCP 的 this 问题,很快就得到了解决,他们更新了 public 文档(2020 年 1 月 15 日),特别提到 GKE 1.16 对全球访问功能的要求。
这是预料之中的,但 public 文档中根本没有解释这种行为的原因。事实上,'Global Access' 功能适用于 GKE 1.16 集群。
到目前为止,我可以与您分享以下要点:
- 关于全局访问有 2 个不同的功能:1 个用于 ILB,1 个专门用于 GKE。
- GKE 的全球访问功能已于 12 月 23 日推出。
- GKE 的全局访问功能从 GKE 1.16 开始工作,但似乎没有在文档中提及。
- 我们的测试是使用 GKE 1.13.11-gke.14 集群完成的。
- 需要创建GKE 1.16集群再测试
话虽这么说,我想通知您,public 信息中的这种不匹配已由正确的团队妥善解决,并且正在处理以更新 public 文档可用 here to prevent future confusion. You can keep track of this process by following updates here
您如何验证以上提供的信息?这里有一个您可以遵循的简短过程:
测试 1:
- 在 europe-west4 中创建 GKE 1.16 集群(这 region/zone 不是强制性的)。
- 创建部署。
- 通过编写服务配置文件创建带有注释“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 :您应该收到超时错误消息。
load-balancing
google-cloud-platform
kubernetes
google-kubernetes-engine
google-cloud-internal-load-balancer
我尝试使用 this documentation 中提到的以下注释创建内部负载平衡器:
networking.gke.io/internal-load-balancer-allow-global-access: "true"
这是完整的清单:
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
我尝试从不同区域的 VM 访问负载均衡器,但 VM 无法访问端点。
但是根据 this documentation 我 运行 对创建的转发规则执行以下命令(GCP 为所有负载均衡器创建一个带有 运行dom 名称的转发规则可以使用 gcloud compute forwarding-rules list
命令检索)以更新全局访问权限:
gcloud beta compute forwarding-rules update abcrandomnamehehe --region [REGION-NAME] --allow-global-access
在 运行 执行上述命令并手动更新负载均衡器后,可以从所有区域访问端点。 运行 gcloud
命令的这个手动步骤是否必要?
如果是,那么注解有什么用呢?我也使用最新可用的 GKE 版本 (1.15.4-gke.22) 进行注释,但如果不使用 gcloud
命令进行更新则无法使用。是我遗漏了什么还是 GCP 中的错误?
编辑:我还打开了 GCP 的 this 问题,很快就得到了解决,他们更新了 public 文档(2020 年 1 月 15 日),特别提到 GKE 1.16 对全球访问功能的要求。
这是预料之中的,但 public 文档中根本没有解释这种行为的原因。事实上,'Global Access' 功能适用于 GKE 1.16 集群。
到目前为止,我可以与您分享以下要点:
- 关于全局访问有 2 个不同的功能:1 个用于 ILB,1 个专门用于 GKE。
- GKE 的全球访问功能已于 12 月 23 日推出。
- GKE 的全局访问功能从 GKE 1.16 开始工作,但似乎没有在文档中提及。
- 我们的测试是使用 GKE 1.13.11-gke.14 集群完成的。
- 需要创建GKE 1.16集群再测试
话虽这么说,我想通知您,public 信息中的这种不匹配已由正确的团队妥善解决,并且正在处理以更新 public 文档可用 here to prevent future confusion. You can keep track of this process by following updates here
您如何验证以上提供的信息?这里有一个您可以遵循的简短过程:
测试 1:
- 在 europe-west4 中创建 GKE 1.16 集群(这 region/zone 不是强制性的)。
- 创建部署。
- 通过编写服务配置文件创建带有注释“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 :您应该收到超时错误消息。