kubernetes - Kubernetes 如何阻止新流量到一个副本?
问题描述
我有 10 个 pod 的应用程序,并且所有 pod 之间的流量都是负载平衡的。有一个问题导致事务排队,一旦问题得到修复,很少有 pod 无法正常恢复或需要很长时间来处理队列。对于一些 pod 来说,新的流量仍然太多。
我想知道我是否可以阻止到副本集中特定 pod 的新流量并让他们处理队列,一旦队列被处理,然后让新流量再次进入?
解决方案
为此,您可以使用探针来处理这种情况
就绪探测是一种方法。
探测要做的是,不断检查容器或 POD 内部的进程是否在配置的时间间隔内启动。
例子
readinessProbe:
exec:
command:
- cat
- /tmp/healthy
initialDelaySeconds: 5
periodSeconds: 5
您可以在应用程序中创建端点,该端点将由 K8s 自动检查,如果 K8s为200,它将标记 POD 为准备好处理流量。或者标记为未准备好不处理流量。
注意:
Readiness 和 liveness 探针可以并行用于同一个容器。使用两者可以确保流量不会到达尚未准备好的容器,并且容器在失败时会重新启动。
如果 POD 失败,Readiness 探针不会重新启动您的 POD,而 liveness 探针会在失败并发送400时重新启动您的 POD 或容器。
在您的场景中,最好使用Readiness探针,以便进程继续运行并且永远不会重新启动。一旦应用程序准备好处理流量,K8s 将在端点上获得200 个响应。
推荐阅读
- pytorch - 仅获取偶数(+奇数)位作为数据加载器的输出
- php - .htaccess FANCY URLS 在文件夹中不起作用
- r - 在R中循环数据框删除过程
- image - 在 GEE 中导出图像集合
- node.js - 安装 netlify CLI 时出错
- jquery - 如果在 jQuery 中执行 $('.myclass').show() 时选择器返回 null 怎么办?
- ios - 如何在 DragGesture 上的 SwiftUI 中显示带有部分视图的黑色背景?
- apache-kafka - NestJs/microservices Kafka - 每批消费消息
- java - Android:如何启动 com.android.documentsui.files.FilesActivity?
- php - 由于自定义命令,php artisan 命令不起作用