扩缩 StatefulSet
不是所有 Stateful 应用都能很好地执行扩缩操作。 如果你不是很确定是否要扩缩你的 StatefulSet,可先参阅 StatefulSet 概念 或者 。
仅当你确定你的有状态应用的集群是完全健康的,才可执行扩缩操作.
首先,找到你要扩缩的 StatefulSet。
另外, 你可以就地更新 StatefulSet。
如果你的 StatefulSet 最初通过 kubectl apply
或 创建, 你可以更新 StatefulSet 清单中的 .spec.replicas
, 然后执行命令 kubectl apply
:
否则,可以使用 编辑副本字段:
或者使用 kubectl patch
:
缩容操作无法正常工作
如果 spec.replicas
大于 1,Kubernetes 无法判定 Pod 不健康的原因。 Pod 不健康可能是由于永久性故障造成也可能是瞬态故障。 瞬态故障可能是节点升级或维护而引起的节点重启造成的。
如果该 Pod 不健康是由于永久性故障导致, 则在不纠正该故障的情况下进行缩容可能会导致 StatefulSet 进入一种状态,其成员 Pod 数量低于应正常运行的副本数。 这种状态也许会导致 StatefulSet 不可用。
如果由于瞬态故障而导致 Pod 不健康并且 Pod 可能再次变为可用,那么瞬态错误可能会干扰 你对 StatefulSet 的扩容/缩容操作。 一些分布式数据库在同时有节点加入和离开时 会遇到问题。在这些情况下,最好是在应用级别进行分析扩缩操作的状态, 并且只有在确保 Stateful 应用的集群是完全健康时才执行扩缩操作。
- 进一步了解删除 StatefulSet
最后修改 August 10, 2020 at 11:40 AM PST: