2

GPCクラスタから外部へのIngressを考えたGRPC Javaサービスを公開しようとしています。Google CloudのIngressからGRPCサーバーを公開する

GKEのデフォルトの実装では、「/」のカーリングで200応答コードが必要となるヘルスチェックが作成されるという問題があります。それは期待され、文書化されているhere

残念ながら、これは "/" GETリクエストを処理していないので、grpc-java実装では動作しないようです。

GRPC自体はhealth checking protocolを定義します。しかし、それもサポートされていません。

"kubernetes.io/ingress.global-static-ip-name"のような類似のシークレットアノテーションがありますが、ヘルスチェックを少なくとも無効にする(理想的にはそれをオーバーライドする)ことは難しいです。

答えて

1

現在、GCP HTTPロードバランサdoesn't support HTTP/2と思われます。だから私はNodePort + Ingressの代わりにLoadBalancerを通して私のサービスを公開するだけで終わった。

注:loadBalancerIPで提供する静的IPは、REGIONALである必要があります。マルチリージョンの静的IPの場合、サービスの外部IPは常に保留状態になっていました。

1

ヘルスチェックは、カスタムliveness/readiness probesを定義することによって変更できます。このようにして、ヘルスチェックのためにヒットするカスタムエンドポイントを定義することができます。ここではドキュメントからのサンプルです:

livenessProbe: 
    httpGet: 
    path: /healthz 
    port: 8080 
    httpHeaders: 
    - name: X-Custom-Header 
     value: Awesome 
    initialDelaySeconds: 3 
    periodSeconds: 3 

あなたは、単純なHTTPのチェックよりも強力なものが必要な場合は、代わりに「HTTPGET」の「幹部」でプローブを構築することができます。 execを使用すると、コンテナ内のLinuxコマンドまたはカスタムCLIスクリプトを使用してAPIを照会したり、システムの状態を確認することができます。コマンド/スクリプトが0を返した場合、ポッドは正常とみなされます。このサンプルでは、​​/ tmp/healthyにファイルが存在する場合、ポッドが有効であると表示されます。

livenessProbe: 
    exec: 
    command: 
    - cat 
    - /tmp/healthy 
    initialDelaySeconds: 5 
    periodSeconds: 5 
関連する問題