Kubernetes 与状态集中的OrderedReadyPodManagementPolicy相比,并行podManagementPolicy有哪些优点和缺点?

Kubernetes 与状态集中的OrderedReadyPodManagementPolicy相比,并行podManagementPolicy有哪些优点和缺点?,kubernetes,cloud,microservices,kubernetes-pod,kubernetes-statefulset,Kubernetes,Cloud,Microservices,Kubernetes Pod,Kubernetes Statefulset,我最近将状态集中的podManagementPolicy字段从默认(OrderedReady)更新为并行 它大大缩短了放大和缩小时间 到目前为止,我还没有看到这一变化的任何负面影响,但我担心是否会出现任何可能给我带来问题的情况 我想知道是否有任何情况下我可以面对任何问题 与状态集中的OrderedReadyPodManagementPolicy相比,并行podManagementPolicy有哪些优点和缺点 这完全取决于您的应用程序。它是否需要按顺序放大和缩小实例 如果您共享正在使用的应用程

我最近将状态集中的podManagementPolicy字段从默认(OrderedReady)更新为并行

  • 它大大缩短了放大和缩小时间
  • 到目前为止,我还没有看到这一变化的任何负面影响,但我担心是否会出现任何可能给我带来问题的情况
我想知道是否有任何情况下我可以面对任何问题

与状态集中的OrderedReadyPodManagementPolicy相比,并行podManagementPolicy有哪些优点和缺点

这完全取决于您的应用程序。它是否需要按顺序放大和缩小实例

如果您共享正在使用的应用程序,则更容易判断它是否允许实例按特定顺序放大或缩小


例如,一个将数据复制到其实例的分布式数据库可能会运行3个实例,然后您希望扩展到5个实例,但将数据复制到这两个新实例需要时间,您可能会后悔扩展。在这种情况下,最好缩小尚未完全复制的两个实例的规模。

我想进一步介绍一下这个主题

其行为如下所示:

  • 对于具有N个副本的StatefulSet,当部署pod时,它们是按{0..N-1}顺序创建的

  • 删除POD时,POD将按相反顺序从{N-1..0}终止

  • 在对Pod应用缩放操作之前,其所有前置操作都必须运行并准备就绪

  • 在Pod终止之前,所有后续Pod必须完全关闭

通知StatefulSet控制器启动或终止中的所有POD 并行,而不是等待吊舱开始运行并准备就绪或 在发射或终止另一个吊舱之前完全终止。 此选项仅影响缩放操作的行为。更新 不受影响


从理论上讲,您在更新应用程序时不会面临任何停机时间,因为
parallel
策略只会影响扩展操作。正如Jonas已经说过的,如果不了解你的应用程序和架构,很难预见潜在的后果。但通常可以肯定地说,如果应用程序的实例彼此不依赖(因此不必等待每个pod运行并准备就绪),
并行
策略应该比
有序就绪
策略更安全、更快。但是,如果您将来可能会遇到有关
StatefulSet
的任何问题,并希望从Kubernetes方面对其进行分析,这些可能会对您有所帮助。

感谢您的回复。我的应用程序不是分布式数据库。它与数据库(redis)通信以获取配置,然后开始处理。由于您使用的是
StatefulSet
,因此您的应用程序可能包含一些for-of-state-如果实例相互通信-它取决于您的应用程序需要什么。但是,如果实例相对独立,那么并行就可以了。