#docker #kubernetes
#docker #kubernetes
Вопрос:
Я новичок в Kubernetes, и мне было интересно, возможно ли запускать реплики контейнеров по одной за раз? Другими словами, если я развертываю файл compose, содержащий конфигурацию контейнера или модуля pod с N репликами, возможно ли (и если да, то как) гарантировать, что каждая реплика ожидает готовности предыдущей перед запуском?
Я читал о тестах готовности, но, если я правильно их понял, они обеспечивают упорядочение модулей вместо реплик, или я неправильно понял?
Спасибо
Ответ №1:
Набор состояний обладает следующим свойством: при наличии трех реплик вторая не запустится, пока первая не будет запущена и готова.
(Обычно «реплика» и «pod» означают одно и то же. Если вы создаете развертывание или StatefulSet с 3 репликами и запускаете kubectl get pods
, как только это будет сделано, вы должны увидеть 3 модуля.)
Если вы используете Kompose для развертывания, есть хотя бы намек на то, что он не поддерживает StatefulSets; для этого вам нужно написать собственный Kubernetes YAML.
Ответ №2:
В Kubernetes есть объект StatefulSet для управления набором реплик модуля. StatefulSet отличается от развертывания по умолчанию в том смысле, что он предоставляет гарантии упорядоченности и уникальности этих модулей. Из документации:
Для StatefulSet с N репликами, когда модули развертываются, они создаются последовательно, в порядке от {0..N-1}.
В качестве примера смотрите этот блог о том, как настроить StatefulSet для ElasticSearch.
Комментарии:
1. Привет @Blokje5 спасибо за ответ, но я не вижу, как это отвечает на мой вопрос. Можете ли вы быть более конкретными? Спасибо
2. Вы говорили о непрерывном обновлении ваших модулей, правильно, т. Е. вы хотите обновлять набор контейнеров репликами x по одному за раз? Или я неправильно понимаю ваш вопрос?
3. простое развертывание
4. Вы хотите гарантировать упорядоченность при развертывании ваших реплик? т. е. реплика 2 должна начать выполняться, как только реплика 1 будет завершена? Это ваш вопрос?
5. Просто для ясности: i) файл compose определяет приложение с полем replicas, равным, например, 3; ii) я развертываю свой файл compose; iii) реплика 2 ожидает, пока реплика 1 будет запущена перед запуском; iv) реплика 3 ожидает, пока реплика 2 будет запущена перед запуском.