Как изящно удалить 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
работает, как вы описываете. Существует некоторое время простоя, как если бы машина разбилась.
Можете ли вы описать свою настройку? Сколько реплик у вас есть, и предоставляются ли вы таким образом, чтобы вы не могли обрабатывать время простоя одной реплики?