gpt4 book ai didi

google-cloud-platform - 用于 HTTP 负载平衡的 Google 云后端服务忽略自定义端口

转载 作者:行者123 更新时间:2023-12-02 04:14:43 25 4
gpt4 key购买 nike

我有一个应用程序在通过 Kubernetes 集群的 nodePorts 公开的端口 31280 上运行。相同的端口通过集群使用的实例组上的命名端口公开,以实现负载平衡。使用 HTTP 协议(protocol)创建后端服务时,即使我指定了自定义命名端口,该服务也会在默认 http 端口 (80) 处创建。

实例组的公开命名端口是:

gcloud preview instance-groups --zone='asia-east1-a' list-services gke-dropwizard-service-31ccc162-group

[
{
"endpoints": [
{
"name": "dropwizard-example-service-http",
"port": 31280
}
],
"fingerprint": "XXXXXXXXXXXXXXXX"
}
]

健康检查是:

gcloud compute http-health-checks describe dropwizard-example-service

checkIntervalSec: 5
creationTimestamp: '2015-08-11T12:08:16.245-07:00'
description: Dropwizard Example Sevice health check ping
healthyThreshold: 2
host: ''
id: 'XXXXXXX'
kind: compute#httpHealthCheck
name: dropwizard-example-service
port: 31318
requestPath: /ping
selfLink: https://www.googleapis.com/compute/v1/projects/XXX/global/httpHealthChecks/dropwizard-example-service
timeoutSec: 3
unhealthyThreshold: 2

运行状况端口 (31318) 也通过实例组中的命名端口公开。

用于创建后端服务的命令是:

gcloud compute backend-services create "dropwizard-example-external-service" --description "Dropwizard Example Service via Nodeports from Kubernetes cluster" --http-health-check "dropwizard-example-service" --port-name "dropwizard-example-service-http" --timeout "30"

用于将实例组添加到后端服务的命令是:

gcloud compute backend-services add-backend "dropwizard-example-external-service" --group "gke-dropwizard-service-31ccc162-group" --zone "asia-east1-a" --balancing-mode "UTILIZATION" --capacity-scaler "1" --max-utilization "0.8"

最终创建的backend-service描述为:

gcloud compute backend-services describe dropwizard-example-external-service

backends:
- balancingMode: UTILIZATION
capacityScaler: 1.0
description: ''
group: https://www.googleapis.com/resourceviews/v1beta2/projects/XXX/zones/asia-east1-a/resourceViews/gke-dropwizard-service-31ccc162-group
maxUtilization: 0.8
creationTimestamp: '2015-08-11T13:10:46.608-07:00'
description: Dropwizard Example Service via Nodeport from Kubernetes cluster
fingerprint: XXXXXXXXXXXX
healthChecks:
- https://www.googleapis.com/compute/v1/projects/XXX/global/httpHealthChecks/dropwizard-example-service
id: 'XXXX'
kind: compute#backendService
name: dropwizard-example-external-service
port: 80
portName: dropwizard-example-service-http
protocol: HTTP
selfLink: https://www.googleapis.com/compute/v1/projects/XXXX/global/backendServices/dropwizard-example-external-service
timeoutSec: 30

我不明白哪一部分是错误的。为什么后端服务使用端口 80?

最佳答案

编辑:我错了。它似乎确实有效。我的脚本中有一个拼写错误。

我的脚本在这里 - 我实际上只是运行了这个并且它运行正常。

https://gist.github.com/thockin/36fea15cc0deb08a768a

后代的原始回复:

我还不是 GCE L7 API 方面的专家,但我已经让它在 Kubernetes 中工作。我认为 --port-name 逻辑中有一个错误。如果您直接指定 --port 它似乎对我有用。我正在内部提交问题。

关于google-cloud-platform - 用于 HTTP 负载平衡的 Google 云后端服务忽略自定义端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31952166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com