Kubernetes 与状态集中的OrderedReadyPodManagementPolicy相比,并行podManagementPolicy有哪些优点和缺点?
我最近将状态集中的podManagementPolicy字段从默认(OrderedReady)更新为并行Kubernetes 与状态集中的OrderedReadyPodManagementPolicy相比,并行podManagementPolicy有哪些优点和缺点?,kubernetes,cloud,microservices,kubernetes-pod,kubernetes-statefulset,Kubernetes,Cloud,Microservices,Kubernetes Pod,Kubernetes Statefulset,我最近将状态集中的podManagementPolicy字段从默认(OrderedReady)更新为并行 它大大缩短了放大和缩小时间 到目前为止,我还没有看到这一变化的任何负面影响,但我担心是否会出现任何可能给我带来问题的情况 我想知道是否有任何情况下我可以面对任何问题 与状态集中的OrderedReadyPodManagementPolicy相比,并行podManagementPolicy有哪些优点和缺点 这完全取决于您的应用程序。它是否需要按顺序放大和缩小实例 如果您共享正在使用的应用程
- 它大大缩短了放大和缩小时间
- 到目前为止,我还没有看到这一变化的任何负面影响,但我担心是否会出现任何可能给我带来问题的情况
例如,一个将数据复制到其实例的分布式数据库可能会运行3个实例,然后您希望扩展到5个实例,但将数据复制到这两个新实例需要时间,您可能会后悔扩展。在这种情况下,最好缩小尚未完全复制的两个实例的规模。我想进一步介绍一下这个主题 其行为如下所示:
- 对于具有N个副本的StatefulSet,当部署pod时,它们是按{0..N-1}顺序创建的
- 删除POD时,POD将按相反顺序从{N-1..0}终止
- 在对Pod应用缩放操作之前,其所有前置操作都必须运行并准备就绪
- 在Pod终止之前,所有后续Pod必须完全关闭
从理论上讲,您在更新应用程序时不会面临任何停机时间,因为
parallel
策略只会影响扩展操作。正如Jonas已经说过的,如果不了解你的应用程序和架构,很难预见潜在的后果。但通常可以肯定地说,如果应用程序的实例彼此不依赖(因此不必等待每个pod运行并准备就绪),并行
策略应该比有序就绪
策略更安全、更快。但是,如果您将来可能会遇到有关StatefulSet
的任何问题,并希望从Kubernetes方面对其进行分析,这些可能会对您有所帮助。感谢您的回复。我的应用程序不是分布式数据库。它与数据库(redis)通信以获取配置,然后开始处理。由于您使用的是StatefulSet
,因此您的应用程序可能包含一些for-of-state-如果实例相互通信-它取决于您的应用程序需要什么。但是,如果实例相对独立,那么并行就可以了。