Kubernetes如何阻止新流量到一个副本?

我有一个包含 10 个 pod 的应用程序,并且所有 pod 之间的流量都是负载平衡的。有一个问题会导致事务排队,并且一旦问题解决,很少有 Pod 无法正常恢复或需要很长时间来处理队列。对于某些 Pod 来说,新的流量仍然太多。

我想知道我是否可以阻止复制集中特定 pod 的新流量并让它们处理队列,一旦队列被处理,然后让新流量再次进入?

回答

为此,您可以使用探针来处理这种情况

一个准备探头是做这件事。

什么探头做的是,连续地在容器或POD内部检查的过程中向上或不上配置的时间间隔。

例子

readinessProbe:
  exec:
    command:
    - cat
    - /tmp/healthy
  initialDelaySeconds: 5
  periodSeconds: 5

您可以在应用程序中创建端点,该端点将由 K8s 自动检查,如果 K8s 为200,它将标记 POD 为准备处理流量。或者标记为未准备好不处理流量。

注意

就绪和活跃探测器可以并行用于同一个容器。使用两者可以确保流量不会到达尚未准备就绪的容器,并且容器在失败时会重新启动。

如果发生故障,Readiness 探针将不会重新启动您的 POD,而如果它发生故障并发送400,则 liveness 探针将重新启动您的 POD 或容器。

在您的场景中,最好使用Readiness探针,以便进程继续运行并且永远不会重新启动。一旦应用程序准备好处理流量,K8s 将在端点上获得200 个响应。

https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/

  • 使用上述这些探针,您还应该添加水平 pod 自动缩放,因为您之前的 pod 已经具有很高的资源利用率,并且您可以增加 pod 的数量来分散负载并缓解现有 pod 的压力,这将治愈整体问题一段时间后自动

以上是Kubernetes如何阻止新流量到一个副本?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>