在Kubernetes上对gRPC服务器进行健康检查

作者: 艾哈迈德·阿尔卑斯巴尔干 (谷歌)

gRPC 即将成为通用的通用语言 云原生微服务之间的通信。如果要部署gRPC 当今Kubernetes的应用程序,您可能想知道最好的方法 配置运行状况检查。在本文中,我们将讨论 grpc-健康探针, 一种 Kubernetes原生方法来检查gRPC应用程序。

如果您不熟悉Kubernetes 健康 checks (活动性和就绪性探针)是使您的应用程序可用的原因 在你睡觉的时候他们检测到反应迟钝的豆荚,将其标记为不健康,并且 使这些Pod重新启动或重新安排。

Kubernetes 才不是 support gRPC运行状况 本机检查。这使gRPC开发人员拥有以下三个 他们部署到Kubernetes时的方法:

今天在kubernetes上进行grpc健康检查的选项

  1. httpGet探针: 不能与gRPC一起使用。您需要重构 您的应用程序可同时支持gRPC和HTTP / 1.1协议(在其他端口上) numbers).
  2. tcpSocket探针: 打开gRPC服务器的套接字没有意义, 因为它无法读取响应正文。
  3. exec探针: 这将调用容器生态系统中的程序 定期地。对于gRPC,这意味着您将实现运行状况RPC 自己,然后编写容器附带的客户端工具并交付。

我们可以做得更好吗?绝对。

介绍“ grpc-健康探针”

为了使上述“执行探针”方法标准化,我们需要:

  • a 标准 可以在任何gRPC中实施的运行状况检查“协议” server easily.
  • a 标准 运行状况检查“工具”,可以轻松查询运行状况协议。

幸运的是,gRPC有一个 标准健康检查 protocol。它 可以从任何语言轻松使用。生成的代码和实用程序 几乎所有语言版本都提供了设置健康状态的功能 gRPC.

如果你 实行 在您的gRPC应用程序中使用此运行状况检查协议,然后可以使用标准/通用 tool to invoke this Check() method to determine server status.

接下来您需要的是“标准工具”,它是 grpc-健康探针.

使用此工具,您可以在所有gRPC中使用相同的运行状况检查配置 应用程序。这种方法要求您:

  1. 用您喜欢的语言找到gRPC“运行状况”模块并开始使用 (example 去图书馆)。
  2. 运送 grpc_health_probe 容器中的二进制文件。
  3. 配置Kubernetes的“ exec”探针可在工具栏中调用“ grpc_health_probe”工具 container.

在这种情况下,执行“ grpc_health_probe”将通过 localhost,因为它们在同一个广告连播中。

下一步是什么

grpc-健康探针 该项目仍处于初期阶段,需要您 反馈。它支持多种功能,例如与TLS服务器通信 和可配置的连接/ RPC超时。

如果您今天在Kubernetes上运行gRPC服务器,请尝试使用gRPC运行状况 在您的部署中进行协议并尝试使用grpc-health-probe,并且 给 feedback.

进一步阅读