Как изящно удалить node из Kubernetes?

Я хочу увеличить/уменьшить количество машин, чтобы увеличить/уменьшить количество узлов в моем кластере Kubernetes. Когда я добавляю одну машину, я могу успешно зарегистрировать ее с помощью Kubernetes; поэтому создается новый node, как и ожидалось. Однако мне непонятно, как плавно выключить машину позже. Хорошим рабочим процессом будет:

  • Отметьте node, связанный с машиной, которую я собираюсь закрыть как незапланированный;
  • Запустите pod (s), который запущен в node в других node (s);
  • Изящно удалите pod (s), который запущен в node;
  • Удалить node.

Если я правильно понял, даже kubectl drain (обсуждение) не делает того, что я ожидаю, так как он не запускает контейнеры перед их удалением (он полагается на контроллер репликации, чтобы запускать стручки впоследствии, что может привести к простою). Я что-то пропустил?

Как правильно закрыть компьютер?

Ответ 1

Перечислите узлы и получите <node-name>, который вы хотите использовать или (удалить из кластера)

kubectl get nodes

1) Сначала слить узел

kubectl drain <node-name>

Возможно, вам придется игнорировать наборы демонов и локальные данные на компьютере

kubectl drain <node-name> --ignore-daemonsets --delete-local-data

2) Изменить группу экземпляров для узлов (только если вы используете копы)

kops edit ig nodes

Установите размер MIX и MAX равным -1  Просто сохраните файл (ничего лишнего сделать)

Вы по-прежнему можете видеть некоторые стручки в опустошенном узле, которые связаны с наборами демонов, например сетевой плагин, fluentd для журналов, kubedns/coredns и т.д.

3) Наконец, удалите узел

kubectl delete node <node-name>

4) Зафиксируйте состояние для KOPS в s3:

kops update cluster --yes

Ответ 2

Рафаэль. kubectl drain работает, как вы описываете. Существует некоторое время простоя, как если бы машина разбилась.

Можете ли вы описать свою настройку? Сколько реплик у вас есть, и предоставляются ли вы таким образом, чтобы вы не могли обрабатывать время простоя одной реплики?