我正在尝试使用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服务器?
答案 0 :(得分:1)
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 Angapov和Suresh Vishnoi的两个答案在理论上都是可行的,但实际上却不行(至少在我的实践中如此)。
因此,我的解决方案是在后端容器上启动另一台服务器-这是一台HTTP服务器,仅负责在收到请求时执行运行状况检查,如果通过则返回200状态,如果失败则返回503。 / p>
我还必须在容器上打开第二个端口,以便该服务器侦听。
答案 3 :(得分:0)
服务器必须按照here所示执行this article所示的grpc探测协议