Google cloud platform 后端是否';是否需要在端点openapi.yaml文件中声明s readinessProbe路径?
我正在部署一个项目,它是一个GKE容器后端,前端有一个CloudEndpoints API。它通过入口和节点端口服务。我已在ESP容器上声明准备就绪探测:Google cloud platform 后端是否';是否需要在端点openapi.yaml文件中声明s readinessProbe路径?,google-cloud-platform,google-kubernetes-engine,google-cloud-endpoints,google-cloud-networking,Google Cloud Platform,Google Kubernetes Engine,Google Cloud Endpoints,Google Cloud Networking,我正在部署一个项目,它是一个GKE容器后端,前端有一个CloudEndpoints API。它通过入口和节点端口服务。我已在ESP容器上声明准备就绪探测: readinessProbe: httpGet: path: /ping port: 8080 但是我注意到/ping路径必须在openapi.yaml中声明,而不使用任何安全性,否则它将返回404,如果使用某种安全性定义声明,则返回401 这是预期的吗?我
readinessProbe:
httpGet:
path: /ping
port: 8080
但是我注意到/ping路径必须在openapi.yaml中声明,而不使用任何安全性,否则它将返回404,如果使用某种安全性定义声明,则返回401
这是预期的吗?我在端点示例repo中没有看到任何相关内容:
在仔细检查文档和代码示例后,我发现ESP有一个
healthz
参数:
spec:
containers:
- name: esp
image: gcr.io/endpoints-release/endpoints-runtime:1
args: [
"-p", "8080",
"-a", "127.0.0.1:8081",
"-s", "SERVICE_NAME",
"--rollout_strategy", "managed",
"-z", "healthz",
]
readinessProbe:
httpGet:
path: /healthz
port: 8080
ports:
- containerPort: 8080
()
为ESP指定healthz参数时,它将nginx配置为仅为该路径返回200:
% if healthz:
location = /${healthz} {
return 200;
access_log off;
}
% endif
()
因此,谷歌似乎希望您只对ESP容器进行运行状况检查,而不是后端
这回答了我最初的问题,尽管它仍然引出了第二个问题,那就是:为什么不检查后端的运行状况?在更仔细地检查文档和代码示例后,我发现ESP有一个
healthz
参数:
spec:
containers:
- name: esp
image: gcr.io/endpoints-release/endpoints-runtime:1
args: [
"-p", "8080",
"-a", "127.0.0.1:8081",
"-s", "SERVICE_NAME",
"--rollout_strategy", "managed",
"-z", "healthz",
]
readinessProbe:
httpGet:
path: /healthz
port: 8080
ports:
- containerPort: 8080
()
为ESP指定healthz参数时,它将nginx配置为仅为该路径返回200:
% if healthz:
location = /${healthz} {
return 200;
access_log off;
}
% endif
()
因此,谷歌似乎希望您只对ESP容器进行运行状况检查,而不是后端
这回答了我最初的问题,尽管它仍然引出了第二个问题,那就是:为什么不对后端进行健康检查?我假设术语“后端”指的是集群的节点或GKE运行的POD。对于这两种情况,GKE都是自我管理的,节点和POD的健康状况由主节点监控,以便它们始终可用。有关这方面的更多信息,请参阅和
在此上下文中,用于GKE入口的健康检查不检查后端,而是检查集群中运行的服务。为了检查这些服务是否正常,如本文所述使用就绪性和活动性探测。我假设术语“后端”是指集群的节点或GKE运行的POD。对于这两种情况,GKE都是自我管理的,节点和POD的健康状况由主节点监控,以便它们始终可用。有关这方面的更多信息,请参阅和
在此上下文中,用于GKE入口的健康检查不检查后端,而是检查集群中运行的服务。要检查这些服务是否正常,请使用准备就绪和活动性探测,如本文所述。如果要对后端进行运行状况检查,需要在openapi配置中列出运行状况检查路径,以便ESP转发。如果要对后端进行运行状况检查,您需要在openapi配置中列出运行状况检查路径,以便ESP转发它。我也遇到了同样的问题,但似乎可以在GCE侧车和最终后端(例如,您实际构建的api)上进行运行状况检查 诀窍是,必须将api的healthcheck配置为云端点容器(而不是api容器)上的readinessprobe。您检查的端点也必须没有针对它的安全性,因此它是可公开访问的(尽管您似乎还可以使用api密钥配置健康检查) 我遵循前面的建议,还向esp容器添加了“healthz”参数。My API正在端口80上运行,未受保护的状态终结点位于
/API/status
spec:
containers:
- name: esp
image: gcr.io/endpoints-release/endpoints-runtime:1
args: [
"--http_port=8081",
"--backend=127.0.0.1:80",
"--service=MY SERVICE",
"--rollout_strategy=managed",
"-z", "healthz",
]
ports:
- containerPort: 8081
readinessProbe:
httpGet:
path: /api/status/
port: 8081
- name: api
image: MY IMAGE
ports:
- containerPort: 80
这起作用了,所以check现在正在验证两个容器是否都使用一个
readinessProbe
运行。有趣的是,当我检查LoadBalancer时,它还根据/healthz
配置了一个负载平衡器,而这是以前没有的。这将有助于诊断端点容器正常工作的情况,但该api不是我遇到了相同的问题,但似乎可以对GCE侧车和最终后端(例如,您实际构建的api)进行健康检查
诀窍是,必须将api的healthcheck配置为云端点容器(而不是api容器)上的readinessprobe。您检查的端点也必须没有针对它的安全性,因此它是可公开访问的(尽管您似乎还可以使用api密钥配置健康检查)
我遵循前面的建议,还向esp容器添加了“healthz”参数。My API正在端口80上运行,未受保护的状态终结点位于/API/status
spec:
containers:
- name: esp
image: gcr.io/endpoints-release/endpoints-runtime:1
args: [
"--http_port=8081",
"--backend=127.0.0.1:80",
"--service=MY SERVICE",
"--rollout_strategy=managed",
"-z", "healthz",
]
ports:
- containerPort: 8081
readinessProbe:
httpGet:
path: /api/status/
port: 8081
- name: api
image: MY IMAGE
ports:
- containerPort: 80
这起作用了,所以check现在正在验证两个容器是否都使用一个
readinessProbe
运行。有趣的是,当我检查LoadBalancer时,它还根据/healthz
配置了一个负载平衡器,而这是以前没有的。这将有助于诊断端点容器工作的情况,但api不是“后端”是云端点文档用来指为api后端提供服务的容器的术语。ESP容器是其侧车。关于让readinessProbe只检查ESP容器的运行状况,我担心的是,如果后端容器不正常,ESP容器将继续尝试向其发送请求,而不是立即失败。GKE中的API后端依赖于一个不正常的。这些都是谷歌管理的服务,用户不应该关心其健康状况。“后端”是云端点文档用来指为api后端服务的容器的术语。ESP容器是其侧车。关于让readinessProbe只检查ESP容器的健康状况,我担心的是,如果后端容器不健康,ESP容器将继续尝试向其发送请求,而不是立即失败。GKE中的API后端依赖于whic