Kubernetes: Как удалить конкретный модуль c, управляемый StatefulSet, без его повторного создания? - PullRequest
0 голосов
/ 23 января 2020

У меня есть StatefulSet с 2 пакетами. У него есть автономный сервис, и у каждого модуля есть сервис LoadBalancer, который делает его доступным для всего мира.

Допустим, имена pod - это pod-0 и pod-1.

Если я хочу удалить pod-0, но оставить pod-1 активным, я не могу этого сделать.

Я пытался

kubectl delete pod pod-0

Это удаляет его, но затем перезапускает, потому что для реплики StatefulSet установлено значение 2.

Поэтому я попытался

kubectl delete pod pod-0
kubectl scale statefulset some-name --replicas=1

Это удаляет pod-0, удаляет pod-1 и затем перезапускает pod-0. Я предполагаю, потому что, когда реплика установлена ​​в 1, StatefulSet хочет поддерживать активность pod-0, но не pod-1.

Но как мне сохранить активность pod-1 и удалить pod-0?

Ответы [ 2 ]

1 голос
/ 23 января 2020

Это не поддерживается контроллером StatefulSet. Вероятно, лучшее, что вы могли бы сделать, это попытаться создать эту капсулу самостоятельно, и, возможно, вы могли бы быть быстрее. Но тогда контроллер sts навсегда останется несчастным.

0 голосов
/ 23 января 2020
  • Statefulset всегда создает модули с индексами 0 .. (replica-1).
  • Если вы действительно хотите иметь более точный контроль над отдельными модулями, я думаю, вам нужно создать отдельные STS объекты (с репликой = 1)
...