通过Google Cloud上的Ingress公开GRPC服务器

时间:2017-08-04 22:48:55

标签: java kubernetes google-cloud-platform google-kubernetes-engine grpc

我试图公开一个GRPC Java服务,认为Ingress是从我的GKE集群到外部世界的。

问题是GKE的默认实现会创建一个运行状况检查,在卷曲" /"上需要200个响应代码。预计并记录here

不幸的是,这似乎与grpc-java实施无关,因为它没有处理" /" GET请求。

GRPC本身定义了health checking protocol。但它也不受支持。

我想知道是否有类似的秘密注释,例如" kubernetes.io/ingress.global-static-ip-name"但至少要禁用健康检查(最好是覆盖它们)。

2 个答案:

答案 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+/, ?-)