python - kubernetes中grpc服务健康检查实现

这篇具有很好参考价值的文章主要介绍了python - kubernetes中grpc服务健康检查实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 概述
    kubernetes本身不支持gRPC健康检查,本文记录使用 ‘grpc-health-probe’ 实现grpc服务的健康检查
    ‘grpc-health-probe’,这是 Kubernetes 原生的健康检查 gRPC 应用程序的方法
    python - kubernetes中grpc服务健康检查实现

    官方参考文档:https://kubernetes.io/zh-cn/blog/2018/10/01/health-checking-grpc-servers-on-kubernetes/

  • 示例

    • 下载grpc-health-probe文件
      按需下载指定版本grpc-health-probe文件

      下载地址:https://github.com/grpc-ecosystem/grpc-health-probe/releases

    • 配置grpc-health-probe
      将静态编译的grpc_health_probe打在容器映像中
      Dockerfile:

      COPY ocr/data/grpc_health_probe_v0.4.1 /bin/grpc_health_probe
      
      RUN chmod +x /bin/grpc_health_probe
      
    • 健康检查接口实现

      • 创建health.proto文件
      syntax = "proto3";
      
      // 定义grpc请求消息体
      message HealthCheckRequest {
        string service = 1;
      }
      
      // 定义grpc返回消息体
      message HealthCheckResponse {
        enum ServingStatus {
          UNKNOWN = 0;
          SERVING = 1;
          NOT_SERVING = 2;
        }
        ServingStatus status = 1;
      }
      
      // 定义服务接口
      service Health {
        rpc Check(HealthCheckRequest) returns (HealthCheckResponse);
      }
      
      • 健康检查接口实现
       class HealthServer(health_pb2_grpc.HealthServicer):
          """
          定义类继承HealthServicer
          """
      
          def __init__(self):
              pass
      
          def Check(self, request, context):
              """
              健康检查接口,实现proto文件中的服务接口
              """
              return health_pb2.HealthCheckResponse(status=HealthCheckResponse.ServingStatus.SERVING)
      
      
          def run(host, port):
              """
              运行ocr服务
              :param host:
              :param port:
              :return:
              """
              server = grpc.server(futures.ThreadPoolExecutor(max_workers=5))
              health_pb2_grpc.add_HealthServicer_to_server(HealthServer(), server)
              server.add_insecure_port(f'{host}:{port}')
              server.start()
              print('Grpc server connect successful!')
              # 启动服务,等待退出
              try:
                  while True:
                      time.sleep(600)
              except KeyboardInterrupt:
                  server.stop(0)
      
      
          if __name__ == '__main__':
              run(host='0.0.0.0', port='8001')
      
      • 容器中测试
      \bin\grpc-health-probe -addr :8001
      返回 SERVING
      
      • kubernetes中配置
      spec:
        containers:
        - name: server
          image: "[YOUR-DOCKER-IMAGE]"
          ports:
          - containerPort: 8001
          readinessProbe:
            exec:
              command: ["/bin/grpc_health_probe", "-addr=:8001"]
            initialDelaySeconds: 5
          livenessProbe:
            exec:
              command: ["/bin/grpc_health_probe", "-addr=:8001"]
            initialDelaySeconds: 10
      


    参考文档:
    grpc_health_probe配置:https://github.com/grpc-ecosystem/grpc-health-probe/文章来源地址https://www.toymoban.com/news/detail-486434.html

到了这里,关于python - kubernetes中grpc服务健康检查实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【k8s】:如何进行 Kubernetes 集群健康检查?

    💖The Begin💖点点关注,收藏不迷路💖 在使用 Kubernetes(k8s)部署应用程序时,保证集群的健康状态至关重要。通过定期的健康检查,可以及时发现并解决可能导致应用程序中断或故障的问题,确保集群的稳定性和可靠性。 将列出所有节点的状态,包括节点的名称、状态、版

    2024年04月16日
    浏览(42)
  • Asp .Net Core 系列: 集成 Consul 实现 服务注册与健康检查

    官网:https://www.consul.io/ Consul 是一款开源的服务发现和配置管理工具,它能够监控应用程序和服务之间的通信,并提供了一组 API 和 Web UI,用于管理服务和配置。 Consul 是分布式的、高可用的、可横向扩展的,具备以下特性: 服务发现:Consul 通过 DNS 或者 HTTP 接口使服务注册

    2024年01月21日
    浏览(46)
  • 【探索 Kubernetes|作业管理篇 系列 10】Pod 健康检查和恢复机制

    大家好,我是秋意零。 上一篇中介绍了,Pod 的服务对象,从而对 Pod 有了更深的理解; 今天的主题是 Pod 健康检查和恢复机制,我们将结束 Pod 的内容。 最近搞了一个扣扣群,旨在技术交流、博客互助,希望各位大佬多多支持!在我主页推广区域,如图: 文章底部推广区域

    2024年02月09日
    浏览(41)
  • Kubernetes(k8s)健康性检查:livenessprobe探测和readinessprobe探测

    目录 一.系统环境 二.前言 三.Kubernetes健康性检查简介 四.创建没有探测机制的pod 五.添加livenessprobe探测 5.1 使用command的方式进行livenessprobe探测 5.2 使用httpGet的方式进行livenessprobe探测 5.3 使用tcpSocket的方式进行livenessprobe探测 六.readinessprobe探测 七.总结 本文主要基于Kubernetes1.

    2024年02月07日
    浏览(49)
  • 献给Nacos小白的一篇好文:服务的健康检查

    服务的健康检查 几乎所有提供服务注册与发现的组件都支持对服务进行健康状态的检测,以便于及时发现和解决服务问题。常见的健康检查策略分两种方式,一种是客户端主动上报自身健康状态,另一种则是服务端主动探测客户端的健康状态。在nacos中,临时服务对应主动上

    2024年02月15日
    浏览(36)
  • Nacos实战(19)-Nacos健康检查机制:保障你的服务稳定运行!

    注册中心不应仅提供服务注册和发现功能,还应保证对服务可用性监测,对不健康的服务和过期的进行标识或剔除,维护实例的生命周期,以保证客户端尽可能的查询到可用的服务列表。 因此本文介绍Nacos注册中心的健康检查机制。 知道⼀个服务是否还健康的方式: 客户端

    2024年02月09日
    浏览(45)
  • 解决pod健康检查问题

    引自:Solving the mystery of pods health checks failures in Kubernetes。原文中的某些描述并不清晰,本文作了调整。 很早以前,环境中的pod有时候会遇到健康检查失败的问题,但并没有什么明显表征,且几乎是立马就会恢复。由于这种情况很少发生,且不会对业务造成影响,因此起初并

    2024年02月03日
    浏览(40)
  • 【微服务部署】03-健康检查

    Liveness Readiness Startup 1.1 LivenessProbe 判断服务是否存活 结束“非存活”状态服务 根据重启策略决定是否重启服务 1.2 ReadinessProbe 判断服务是否“就绪” “就绪”状态的服务可以接收请求 非“就绪”状态的服务将会被从流量负载中摘除 1.3 StartupProbe 检测应用程序是否启动成功

    2024年02月11日
    浏览(41)
  • 17、Health Check 健康检查

    强大的自愈能力是kubernetes容器编排引擎的重要特性。 自愈的默认实现方式是自动重启发生故障的容器 。除此之外,还可通过 Liveness和Readiness探测机制 设置更精细的健康检查,进而实现如下要求: 零停机部署 避免部署无效的镜像 更加安全的滚动升级 Liveness探测和Readiness探测

    2024年02月07日
    浏览(49)
  • docker中设置容器健康检查

    在 HEALTHCHECK [选项] CMD 后面的命令,格式和 ENTRYPOINT 一样,分为 shell 格式,和 exec 格式。命令的返回值决定了该次健康检查的成功与否: 0 :成功; 1 :失败; 2 :保留值,不要使用 容器启动之后,初始状态会为 starting (启动中)。Docker Engine会等待 interval 时间,开始执行健康

    2024年02月15日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包