我试图公开一个GRPC Java服务,认为Ingress是从我的GKE集群到外部世界的。
问题是GKE的默认实现会创建一个运行状况检查,在卷曲" /"上需要200个响应代码。预计并记录here。
不幸的是,这似乎与grpc-java实施无关,因为它没有处理" /" GET请求。
GRPC本身定义了health checking protocol。但它也不受支持。
我想知道是否有类似的秘密注释,例如" kubernetes.io/ingress.global-static-ip-name"但至少要禁用健康检查(最好是覆盖它们)。
答案 0 :(得分:2)
目前似乎是GCP HTTP负载均衡器doesn't support HTTP/2。所以我最终只是通过LoadBalancer而不是NodePort + Ingress公开我的服务。
注意:您在loadBalancerIP
中提供的静态IP应为 REGIONAL 。对于多区域静态IP,我的服务的外部IP始终处于挂起状态。
答案 1 :(得分:1)
可以通过定义自定义How to add validation attributes to md-autocomplete angular material directive来更改运行状况检查。通过这种方式,您可以定义要访问运行状况检查的自定义端点。以下是文档中的示例:
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
如果您需要比简单HTTP检查更强大的功能,您可以使用' exec'来构建探针。而不是httpGet'。使用exec,您可以在容器中使用Linux命令或自定义CLI脚本来查询API或以其他方式验证系统的状态。如果命令/脚本返回0,则该pod被视为健康。如果文件存在于/ tmp / healthy:
,此示例将将pod视为活动require 'uri'
URI.escape(string.gsub(/\s+/, ?-)