将Kubernetes statefulset pod移至另一个节点

时间:2020-06-17 03:33:57

标签: kubernetes kubernetes-pod kubernetes-statefulset kubernetes-pvc

我的k8s群集最初有2个节点和1个主节点,我使用3pods部署了statefulset,因此带PVC的3pods在2个节点上运行。现在我将节点数从2增加到3。所以现在k8s是3nodes和1master。我想将有状态容器之一移到新添加的节点上,而不删除PVC,这样3个容器将分别散布在3个节点上。我尝试删除pod,但是它在同一节点上创建,而不是在新节点上创建(这是预期的)。有人可以让我知道是否可以在不删除PVC的情况下将一个吊舱移动到另一个节点吗?这可以实现吗?或其他替代解决方案,因为我不想删除PVC。

3 个答案:

答案 0 :(得分:1)

不建议删除有状态集的容器。您可以将有状态集按比例缩小到2个副本,然后按比例放大到3。

kubectl get statefulsets <stateful-set-name>

kubectl scale statefulsets <stateful-set-name> --replicas=<new-replicas>

答案 1 :(得分:1)

您将需要affinity

并重新启动所有状态集

kubectl rollout restart statefulset <stateful-set-name>

答案 2 :(得分:0)

您可以通过封锁运行 Pod 的节点然后重新部署 Pod 来强制在不同的节点上启动 Pod。这样 kubernetes 就必须把它放到一个不同的节点上。之后你可以解开节点。