Rom*_*cea 6 kubernetes google-kubernetes-engine kubernetes-health-check
我有一个在 kubernetes (GKE) 上运行的非常简单的 Flask 应用程序。Pod 获得了相当多的流量 (60req/s +-),并且它们在至少 4 个活动和 10 个最大的自动缩放组下运行。
每隔 4-5 小时,活性探测就会开始失败,所有 pod 都会重新启动。我有时会发现我的 Pod 在一个晚上会重启 11-12 次。当我描述豆荚时,我得到了同样的错误:
Liveness probe failed: Get http://10.12.5.23:5000/_status/healthz/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
所有 pod 都具有相同的重启次数,因此这不是负载问题(而且我也有自动缩放功能)。
该_status/healthz/
端点很简单,因为它得到:
@app.route('/')
@app.route('/_status/healthz/')
def healthz():
return jsonify({
"success": True
})
Run Code Online (Sandbox Code Playgroud)
我在此应用程序上还有另一条路由,它连接到 mysql 并验证一些数据。我将相同的应用程序分布在 digitalocean droplets 上,并在更高的负载下运行数月而没有出现问题。
我似乎无法找出为什么活性检查开始失败一次并且我的 pod 重新启动。
分配的资源也不错,与我在 digitalocean droplets 上的资源非常接近:
"resources": {
"requests": {
"cpu": "500m",
"memory": "1024Mi"
},
"limits": {
"cpu": "800m",
"memory": "1024Mi"
}
}
Run Code Online (Sandbox Code Playgroud)
我有相同的 pod 运行100m
cpu 限制和900m
. 同样的结果,每隔几个小时,所有 pod 都会重新启动。
活跃度设置:
"livenessProbe": {
"initialDelaySeconds": 30,
"httpGet": {
"path": "/_status/healthz/",
"port": 5000
},
"timeoutSeconds": 5
},
Run Code Online (Sandbox Code Playgroud)
更新:添加了Readiness
探测器,增加了 CPU = 相同的结果,4 个 pod 中的每一个都重新启动了 7 次。
归档时间: |
|
查看次数: |
1610 次 |
最近记录: |