Как перенести Kubernetes podы на другую ноду (машину)?
есть задача перевести работающие pods на другую машину, все равно какую... как бы вы к ней подошли самым простым и легким способом. При этом желательно, чтобы количество pods в каждом deplyment в любой момент времени не было бы меньше чем N, как указано в replicas: N
Оба pods в составе deployment... при удалении система новые pods ставит на этот же сервер.
Здравствуйте.
Поды не переносятся, они пересоздаются.
Старый - убивается, новый создаётся.
Запускайте деплойменты через replicaset, там указываете минимальное minReplicas и максимальной maxReplicas число реплик и кластер будет их поддерживать.
Или настройте у деплоймента стратегию: обновление: RollingUpdate
и настроить параметра maxSurge и maxUnavailable.
А чтоб поды не лежали на одной ноде прикрутите podAntiAffinity с лейблами.
1) Запускайте деплойменты через replicaset, там указываете минимальное minReplicas и максимальной maxReplicas - извиняюсь, а это где? В deployment yaml их разве можно указать? Толькo через новый обьект -
HorizontalPodAutoscaler
2) Добавил в deployment
strategy:
rollingUpdate:
maxSurge: 2
maxUnavailable: 1 (пробовал и 0 ставить)
не совсем работает - делаю kubectl drain node01 - под работающий на ноде - удаляется и только потом начинает создаваться новый - не есть хорошо!
В этом деплойменте 4 реплики, при этом максимально недоступны (maxUnavailable) могут быть 2 пода, и превышать число заданных реплик (maxSurge) могут на 1.
У дрейна перед деплойментами приоритет выше, поэтому он сначало убивате, потом создает.
Есть полиси специальное PodDisruptionBudget, задает количество сбоев для объектов.
В нем и указывают, что во время дрейна "сначало создай,потом убивай".