摘要:在本文中,我們將討論,一種本地健康檢查應用程序的方法。標準的健康檢查工具,可以輕松查詢健康協議。選擇二進制版本并將其下載到中在你的中指定容器的。服務器健康檢查的代碼實現,主要部分如下完整代碼,請查看倉庫。
前言
GRPC正在成為云原生微服務之間通信的通用語言。如果您今天要將gRPC應用程序部署到Kubernetes,您可能想知道配置運行狀況檢查的最佳方法。在本文中,我們將討論grpc-health-probe,一種Kubernetes本地健康檢查gRPC應用程序的方法。
果您不熟悉,Kubernetes健康檢查(liveness and readiness probes)就是讓您的應用程序在您睡覺時保持可用的原因。他們檢測到沒有響應的pod,將它們標記為不健康,并導致這些pod重新啟動或重新調度。
kubernetes本身不支持gRPC健康檢查。這使得gRPC開發人員在部署到Kubernetes時有以下三種方法:
httpGet probe: 不能與gRPC原生使用。您需要重構您的應用程序以同時提供gRPC和HTTP / 1.1協議(在不同的端口號上)。
tcpSocket probe: 打開套接字到gRPC服務器是沒有意義的,因為它無法讀取響應正文。
exec probe: 這會定期調用容器生態系統中的程序。對于gRPC,這意味著您自己實現健康RPC,然后使用編寫客戶端工具,并將客戶端工具與容器打包到一起。
grpc-health-probe 解決方案為了標準化上面提到的“exec探針”方法,我們需要:
標準的健康檢查“協議”,可以輕松地在任何gRPC服務器中實現。
標準的健康檢查“工具”,可以輕松查詢健康協議。
得慶幸的是,gRPC有一個標準的健康檢查協議。它可以從任何語言輕松使用。生成的代碼和用于設置運行狀況的實用程序幾乎都在gRPC的所有語言實現中提供。
如果在gRPC應用程序中實現此運行狀況檢查協議,則可以使用標準/通用工具調用此Check()方法來確定服務器狀態。
下來你需要的是“標準工具”,它是grpc-health-probe。
使用此工具,您可以在所有gRPC應用程序中使用相同的運行狀況檢查配置。這種方法需要你:
選擇您喜歡的語言找到gRPC“health”模塊并開始使用它(例如Go庫)。
將grpc_health_probe二進制文件打到容器中。
配置Kubernetes“exec”探針以調用容器中的“grpc_health_probe”工具。
示例您可以將靜態編譯的grpc_health_probe打在容器映像中。選擇二進制版本并將其下載到Dockerfile中:
RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && chmod +x /bin/grpc_health_probe
在你的 Kubernetes Pod manifest中,指定容器的 livenessProbe and/or readinessProbe 。
spec: containers: - name: server image: "[YOUR-DOCKER-IMAGE]" ports: - containerPort: 5000 readinessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:5000"] initialDelaySeconds: 5 livenessProbe: exec: command: ["/bin/grpc_health_probe", "-addr=:5000"] initialDelaySeconds: 10
服務器健康檢查的代碼實現,主要部分如下:
hsrv := health.NewServer() hsrv.SetServingStatus("", healthpb.HealthCheckResponse_SERVING) healthpb.RegisterHealthServer(s, hsrv)
完整代碼,請查看git倉庫。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/33135.html
摘要:在本文中,我們將討論,一種本地健康檢查應用程序的方法。標準的健康檢查工具,可以輕松查詢健康協議。選擇二進制版本并將其下載到中在你的中指定容器的。服務器健康檢查的代碼實現,主要部分如下完整代碼,請查看倉庫。 前言 GRPC正在成為云原生微服務之間通信的通用語言。如果您今天要將gRPC應用程序部署到Kubernetes,您可能想知道配置運行狀況檢查的最佳方法。在本文中,我們將討論grpc-...
摘要:在本文中,我們將討論,一種本地健康檢查應用程序的方法。標準的健康檢查工具,可以輕松查詢健康協議。選擇二進制版本并將其下載到中在你的中指定容器的。服務器健康檢查的代碼實現,主要部分如下完整代碼,請查看倉庫。 前言 GRPC正在成為云原生微服務之間通信的通用語言。如果您今天要將gRPC應用程序部署到Kubernetes,您可能想知道配置運行狀況檢查的最佳方法。在本文中,我們將討論grpc-...
摘要:谷歌思科華為等等均是的貢獻成員。其中谷歌云平臺和等大型云提供商成功在生產環境中使用了。它為良好穩定的生產部署提供了一個良好的起點。預先準備在繼續之前,我們需要準備一個谷歌云平臺的賬號免費的應該足夠了。我們將為部署配置。 本文將帶你充分了解Etcd的工作原理,演示如何用Kubernetes建立并運行etcd集群,如何與Etcd交互,如何在Etcd中設置和檢索值,如何配置高可用等等。 sh...
摘要:如果上的資源耗盡,這類將無法成功調度。將這個資源及其對應的設備個數記錄到更新到。 extended-resources extended-resources在k8s1.9中是一個stable的特性。可以用一句話來概括這個特性: 通過向apiserver發送一個patch node 的請求,為這個node增加一個自定義的資源類型,用于以該資源的配額統計和相應的QoS的配置。 patch ...
摘要:以下內容根據魏巍分享整編,希望對大家了解有所幫助。數據平面由一組智能代理組成,代理部署為,其控制微服務之間所有的網絡通信。 7月7日,時速云企業級容器 PaaS 技術沙龍第 10 期在上海成功舉辦,時速云容器架構負責人魏巍為大家詳細講解了 Service Mesh 中代表性的實踐方案、并以 Istio 為例詳細講解了 Service Mesh 中的技術關鍵點,包括 Istio 控制平面...
閱讀 1246·2021-09-04 16:41
閱讀 2403·2021-09-02 10:18
閱讀 917·2019-08-29 16:40
閱讀 2614·2019-08-29 16:14
閱讀 898·2019-08-26 13:41
閱讀 1299·2019-08-26 12:24
閱讀 731·2019-08-26 10:24
閱讀 2869·2019-08-23 17:54