2

我想從我的GKE羣集中公開一個認爲Ingress到外部世界的GRPC Java服務。通過谷歌雲上的Ingress公開GRPC服務器

問題是,GKE的默認實現會創建一個運行狀況檢查,期望捲曲「/」上有200個響應代碼。預計和記錄here

不幸的是,這似乎不適用於grpc-java實施,因爲它沒有處理「/​​」GET請求。

GRPC本身定義了一個health checking protocol。但它也不支持。

我不知道是否有類似「kubernetes.io/ingress.global-static-ip-name」的祕密註釋,但至少禁用健康檢查(理想上覆蓋它們)。

回答

1

似乎目前GCP HTTP負載平衡器doesn't support HTTP/2。所以我最終只是通過LoadBalancer而不是NodePort + Ingress公開我的服務。

注意:您在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檢查功能更強大,可以構建具有「EXEC」探測器,而不是「HTTPGET」。使用exec,您可以在容器中使用Linux命令或自定義CLI腳本來查詢您的API或以其他方式驗證系統狀態。如果命令/腳本返回0,則認爲吊艙健康。如果文件存在於/ tmp/healthy中,此示例將查看該活動目錄爲活動目錄:

livenessProbe: 
    exec: 
    command: 
    - cat 
    - /tmp/healthy 
    initialDelaySeconds: 5 
    periodSeconds: 5 
相關問題