我在一些吊舱前有一个k8s负载平衡器。当我部署更新后的豆荚--在豆荚中有一定数量的流量会超时和失败--基本上看来k8s会按预期处理荚的更新/部署,但是负载平衡器将不知道这一点,只会继续向所有的荚发送流量,直到活性监视器出现故障,然后停止向吊舱发送流量。
我想看到的是以下场景:
这样我就不会有任何暂停。那么,如何实现这一点呢?还是只是我的配置不好,因为它不起作用?
编辑:
我准备好了,也准备好了。它们的配置:
readinessProbe:
httpGet:
path: /ready
port: 8080
periodSeconds: 1
initialDelaySeconds: 5
livenessProbe:
httpGet:
path: /alive
port: 8080
periodSeconds: 1
failureThreshold: 2
initialDelaySeconds: 40但是,在表面上,这并不能解决问题:如果负载均衡器只在探测失败后才停止发送流量,而k8s在没有通知负载平衡器的情况下开始拆除吊舱,那么就会出现失败的请求。不管我如何调整上面的值- periodSeconds的最小值是1秒。
不过,我正在考虑尝试准备好的探测器--在开始部署之前,看看我是否可以在不重新启动的情况下将吊舱离线。不完全是最优的,但也许是前进的路。
发布于 2020-11-09 14:13:52
@Daniel Lee在评论中提到
为了实现您想要的结果,您应该在部署中配置健康检查。
那么,让我们从健康检查开始吧?
正如前面提到的,这里。
健康检查的类型
Kubernetes为您提供两种类型的健康检查,了解两者之间的差异及其用途是非常重要的。 Readiness 准备探测器的设计是为了让Kubernetes知道您的应用程序何时准备好为流量服务。库伯奈特斯确保准备好的探测器通过,然后允许服务发送交通到吊舱。如果准备好的探测器开始失效,库伯奈特斯就会停止向太空舱发送车辆,直到它经过。 活性 活性探针让Kubernetes知道你的应用程序是活的还是死的。如果你的应用程序还活着,那么Kubernetes就别管它了。如果你的应用程序死了,Kubernetes就会删除Pod并启动一个新的程序来替换它。
此外,在上面的网站上,你会发现一个详细的描述如何两者,活力和准备好的探测工作。
如果要以零停机时间更新部署,则应检查滚动更新。
追加资源:
https://stackoverflow.com/questions/64752318
复制相似问题