首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gRPC健康探针(对Kubernetes的gRPC健康检查)如何区分活性探针和准备探针

gRPC健康探针(对Kubernetes的gRPC健康检查)如何区分活性探针和准备探针
EN

Stack Overflow用户
提问于 2019-10-07 17:21:30
回答 1查看 5K关注 0票数 4

我正在编写一个grpc服务,并在Kubernetes (https://github.com/grpc-ecosystem/grpc-health-probe)上使用https://github.com/grpc-ecosystem/grpc-health-probe健康检查。在我的服务器中,我添加了端点的不同实现(一个用于活动,另一个用于就绪)。我想知道这个探测工具二进制如何区分活性检查和准备状态检查?在yaml中应该有其他方法来定义它,而不仅仅是“bin/grpc_health_探针”、"-addr=:8801“

代码语言:javascript
复制
server = ServerBuilder.forPort(port)
  .addService(new GrpcModuleHealthCheck())
  .addService(new GrpcModuleReadinessCheck())
  .addService(ProtoReflectionService.newInstance())
  .build.start

在kubernetes部署yaml中,我使用以下配置

代码语言:javascript
复制
    livenessProbe:
      failureThreshold: 3
      exec:
        command: ["bin/grpc_health_probe", "-addr=:8801"]
      initialDelaySeconds: 240
      periodSeconds: 20
      successThreshold: 1
      timeoutSeconds: 15
    readinessProbe:
      failureThreshold: 3
      exec:
        command: ["bin/grpc_health_probe", "-addr=:8801"]
      initialDelaySeconds: 20
      periodSeconds: 20
      successThreshold: 1
      timeoutSeconds: 15

我刚刚测试并发现"GrpcModuleReadinessCheck“(我上一次添加的健康类)实现正在生效,而我只是执行我的kubernetes

代码语言:javascript
复制
kubectl exec -it <MY_POD_NAME> -- /bin/bash

bash-4.4$ ./grpc_health_probe -addr=localhost:8801
status: SERVING
EN

回答 1

Stack Overflow用户

发布于 2019-10-10 12:38:52

我想知道这个探测工具二进制如何区分活性检查和准备状态检查?

总之,事实并非如此。

Kubernetes定义了两个不同的检查:活性检查程序是否仍然正常工作(即没有挂起)和准备就绪检查程序是否愿意接受更多请求。

然而,gRPC只定义了一个健康检查协议,并且没有本机的“就绪检查”的概念。

如何将gRPC响应映射到Kubernetes检查取决于您。一种合理的方法是将SERVING响应解释为服务处于活动状态并准备好接受更多请求,将NOT SERVING响应解释为服务活动但不接受请求,以及将UNKNOWN或失败响应解释为服务未活动。

下面是实现以下功能的探测配置:

代码语言:javascript
复制
    livenessProbe:
      failureThreshold: 3
      exec:
        # considers both SERVING and NOT SERVING to be a success
        command: ["/bin/sh", "-c", "bin/grpc_health_probe -addr=:8801 2>&1 | grep -q SERVING"]
      initialDelaySeconds: 240
      periodSeconds: 20
      successThreshold: 1
      timeoutSeconds: 15
    readinessProbe:
      failureThreshold: 3
      exec:
        # fails on any response except SERVING
        command: ["bin/grpc_health_probe", "-addr=:8801"]
      initialDelaySeconds: 20
      periodSeconds: 20
      successThreshold: 1
      timeoutSeconds: 15
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58274364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档