在扩容或缩容之前停止 StatefulSet 中的所有 Pod

Ped*_*ssi 6 docker kubernetes discord

我的团队目前正致力于将 Discord 聊天机器人迁移到 Kubernetes。我们计划使用StatefulSet主机器人的服务,为每个碎片(POD)应该只需要在一个单一的连接网关。每当一个分片连接到所述网关时,它会告诉它它的 ID(在我们的例子中是 pod 的序数索引)以及我们总共运行了多少个分片(StatefulSet 中的副本数量)。

必须告诉网关分片的总数意味着为了扩大或缩小我们的StatefulSet,我们必须在使用更新的 value 开始新的 pod 之前停止该 StatefulSet 中的所有 pod

我怎样才能做到这一点?最好通过配置,这样我就不必每次都运行一个特殊的命令。

har*_*riK 8

试试kubectl rollout restart sts <sts name>命令。它将以 RollingUpdate 的方式一个一个地重新启动 pod。

缩小 sts kubectl scale --replicas=0 sts <sts name>

扩大 sts kubectl scale --replicas=<number of replicas> sts <sts name>


nis*_*yal 3

一种方法是,首先通过运行以下命令获取 StatefulSets 的 YAML 配置并将其保存在文件中:

kubectl get statefulset NAME -o yaml > sts.yaml
Run Code Online (Sandbox Code Playgroud)

然后通过运行以下命令删除 StatefulSet:

kubectl delete -f sts.yaml
Run Code Online (Sandbox Code Playgroud)

最后,再次使用第一步中获得的相同配置文件创建 StatefulSet。

kubectl apply -f sts.yaml
Run Code Online (Sandbox Code Playgroud)

我希望这能回答您的查询,即仅删除 StatefulSet 并创建新的 StatefulSet。