GKE Ingress 在拾取 pod 就绪/活动方面进展缓慢



我成功地使用 gce 入口使用 GKE 创建了一个集群。但是,Ingress 需要很长时间才能检测到服务已准备就绪(我已经设置了 livenessProbe 和 readyinessProbe(。 我的窗格已设置

Containers:
...
gateway:
Liveness:   http-get http://:5100/api/v1/gateway/healthz delay=0s timeout=1s period=10s #success=1 #failure=3
Readiness:  http-get http://:5100/api/v1/gateway/healthz delay=0s timeout=1s period=10s #success=1 #failure=3
...

和入口

...
Name:             main-ingress
Host                              Path  Backends
----                              ----  --------
<host>
/api/v1/gateway/    gateway:5100 (<ip:5100>)
/api/v1/gateway/*   gateway:5100 (<ip:5100>)
web:80 (<ip>)
Annotations:
ingress.kubernetes.io/backends:               {"k8s-be-***":"HEALTHY","k8s-be-***":"HEALTHY","k8s-be-***":"HEALTHY"}
kubernetes.io/ingress.allow-http:             false

我注意到的是,如果我杀死了所有服务并重新部署,即使 Kubernetes 本身设法拾取 pod/服务都在运行,后端也会在UNHEALTHY上停留相当长的一段时间

。我还注意到,设置livenessProbereadinessProbe时,入口 gce 生成的后端运行状况检查如下

Backend
Timeout: 30 seconds
Backend Health check
Interval: 70 seconds
Timeout: 1 second
Unhealthy threshold: 10 consecutive failures
Healthy threshold: 1 success

而如果我只是部署一个简单的nginx pod而不指定livenessProbereadinessProbe,生成的后端如下

Backend
Timeout: 30 seconds
Backend Health Check
Interval: 60 seconds
Timeout: 60 seconds
Unhealthy threshold: 10 consecutive failures
Healthy threshold: 1 success

后端运行状况检查是拾取缓慢的根本原因吗?如果是这样,知道如何加快速度吗?


更新阅读下面的@yyyyahir答案后想澄清

我知道在创建新的入口时,这将花费更长的时间,因为入口控制器需要配置新的负载均衡器、后端和所有其他相关内容。

但是,我还注意到,当我发布服务的新版本(通过 Helm - 部署设置为重新创建而不是滚动升级(或如果 pod 死亡(内存不足(并重新启动时,尽管 Pod 已经处于运行/健康状态(这是 GCP 中现有的入口和负载均衡器(,但后端状态需要相当长的时间才能再次正常。有没有办法加快速度?

使用 GCE 入口时,您需要等待负载均衡器预配时间,然后后端服务才会被视为运行状况良好。

请注意,当您使用此入口类时,您依赖于 GCE 基础架构,该基础架构必须在将请求发送到集群之前自动预配 HTTP(S( 负载均衡器及其所有组件。

当您设置不带readinessProbe的部署时,默认值将应用于负载均衡器运行状况检查:

Backend Health Check
Interval: 60 seconds
Timeout: 60 seconds
Unhealthy threshold: 10 consecutive failures
Healthy threshold: 1 success

但是,使用该readinessProbe会将periodSeconds值添加到默认运行状况检查配置中。因此,在您的情况下,默认情况下您有10秒 +60=70.

Backend Health check
Interval: 70 seconds
Timeout: 1 second
Unhealthy threshold: 10 consecutive failures
Healthy threshold: 1 success

请注意,GKE 将仅使用readinessProbe在负载均衡器中设置运行状况检查。活泼从不被挑选。

这意味着,最低值将始终为默认负载均衡器运行状况检查的值,60。由于这些值是在从 GKE 调用负载均衡器时自动设置的,因此无法更改它们。

总结起来,您必须等待负载均衡器提供周期(大约 ~1-3 分钟(加上readinessProbe中设置的periodSeconds值。

相关内容

  • 没有找到相关文章

最新更新