嗨,我尝试对GCP LoadBalancer使用自定义运行状况检查。
我已经这样添加了readinessProbe
和livenessProbe
:
readinessProbe:
httpGet:
path: /health
port: dash
initialDelaySeconds: 5
periodSeconds: 1
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 10
livenessProbe:
httpGet:
path: /health
port: dash
initialDelaySeconds: 5
periodSeconds: 1
timeoutSeconds: 1
successThreshold: 1
failureThreshold: 10
但是当我创建自己的入口时,我没有自定义健康检查
答案 0 :(得分:1)
我认为您对GCP中的资源感到困惑。
您发布的代码与负载均衡器资源无关,因为它是对pod状态的kubernetes健康检查。如果您想知道探针是否正常工作,请检查容器的状态,如果它没有运行,请描述您的容器并查看日志,这应该表明探针存在问题。
我将猜测您的kubernetes配置文件中的某个地方有一个入口资源,它会像运行状况检查一样创建lb及其周围的所有资源(仍然猜测您发布的图像与此相关)。
如果您使用的是GKE,则应按原样保留已部署的k8s配置中的google自动化资源配置,因为这可能会破坏google已经为您维护的某些功能。
答案 1 :(得分:1)
我最终确定一个答案。我试图做的事是不可能的。我的GCE Ingress在端口80
上使用了后端。但是在我的ReadinessProbe中,我告诉他在端口8080
和/health
路径上进行检查。 这是不可能的!
在Ingress后端声明的服务端口必须与在readinessProbe
中声明的端口相同。 只有路径可以不同。如果我们不遵守此模式,则是/
与运行状况检查GCP路径相关联。
从网络的角度来看,这是合乎逻辑的,如果我们告诉KCP集群在端口80
上路由,但我们的ReadinessProbe
在另一个端口上,则运行状况检查GCP不在Kube群集中,如何确保即使与ReadinessProbe关联的端口遇到端口80
(必须在其上路由流量的端口)也做出响应。
总而言之,在Ingress中声明的后端端口必须在同一端口上具有readinessProbe
。我们唯一可以自定义的就是路径。