首页 > 解决方案 > GKE 中的执行探针

问题描述

我正在尝试使用 exec 探针在 GKE 中进行准备和活跃。这是因为它是 Kubernetes推荐的对 gRPC 后端进行健康检查的方法的一部分。但是,当我将 exec 探针配置放入我的部署 yaml 并应用它时,它在 GCP 中不起作用。这是我的容器 yaml:

  - name: rev79-uac-sandbox
    image: gcr.io/rev79-232812/uac:latest
    imagePullPolicy: Always
    ports:
    - containerPort: 3011
    readinessProbe:
      exec:
        command: ["bin/grpc_health_probe", "-addr=:3011"]
      initialDelaySeconds: 5
    livenessProbe:
      exec:
        command: ["bin/grpc_health_probe", "-addr=:3011"]
      initialDelaySeconds: 10

但是健康检查仍然失败,当我在 GCP 控制台中查看健康检查配置时,我看到一个简单的 HTTP 健康检查指向“/”

当我在 GCP 控制台中编辑运行状况检查时,似乎没有任何方法可以选择 exec 类型。此外,与就绪检查相比,我看不到任何提及活动检查的内容,即使它们是单独的 Kubernetes 事物。

谷歌云是否支持使用 exec 进行健康检查?如果是这样,我该怎么做?如果没有,我该如何检查 gRPC 服务器的运行状况?

标签: kubernetesgrpcgoogle-kubernetes-enginekubernetes-health-check

解决方案


当我们使用gRPC 服务而不是使用 HTTP 探针时, TCP 探针很有用。

    - containerPort: 3011
    readinessProbe:
      tcpSocket:
        port: 3011
      initialDelaySeconds: 5
      periodSeconds: 10
    livenessProbe:
      tcpSocket:
        port: 3011
      initialDelaySeconds: 15
      periodSeconds: 20

kubelet 将尝试在指定端口上为您的容器打开一个套接字。如果可以建立连接,则认为容器是健康的,如果不能,则认为是失败 define-a-tcp-liveness-probe


推荐阅读