GKE中的exec探针

时间:2019-04-25 15:15:14

标签: kubernetes grpc google-kubernetes-engine kubernetes-health-check

我正在尝试使用exec探针来确保GKE的就绪性和活跃性。这是因为它是gRPC后端Kubernetes的recommended way to do health checks的一部分。但是,当我将exec probe config放入部署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事情,我也看不到与准备检查形成鲜明对比的活动检查。

Google云是否支持使用exec进行健康检查? 如果是这样,我该怎么办? 如果没有,如何检查gRPC服务器?

4 个答案:

答案 0 :(得分:1)

当我们使用 gRPC Services 而不是HTTP探针时,

TCP探针非常有用。

@Html.HiddenForExt(model => model.Question, new Dictionary<string, object> { { "required", "required" } })
  

kubelet将尝试在指定端口上打开容器的套接字。如果可以建立连接,则认为该容器运行状况良好;如果不能建立连接,则被认为是故障容器   define-a-tcp-liveness-probe

答案 1 :(得分:0)

Exec探针在GKE中的工作原理与在任何地方都一样。您可以在“ kubectl describe pod”中查看活动性探测结果。或者,您可以简单地登录到pod,执行命令并查看其返回代码。

答案 2 :(得分:0)

Vasily AngapovSuresh Vishnoi的两个答案在理论上都是可行的,但实际上却不行(至少在我的实践中如此)。

因此,我的解决方案是在后端容器上启动另一台服务器-这是一台HTTP服务器,仅负责在收到请求时执行运行状况检查,如果通过则返回200状态,如果失败则返回503。 / p>

我还必须在容器上打开第二个端口,以便该服务器侦听。

答案 3 :(得分:0)

服务器必须按照here所示执行this article所示的grpc探测协议