У меня есть кластер Kubernetes, то есть «Cluster1» с автоматическим масштабированием до максимум 2 узлов и минимум 1 узел. Я пытаюсь понять поведение цифрового океана для автоматического понижения уровня узлов в следующем сценарии.
- Кластер «Cluster1» имеет Nginx в качестве входящего контроллера, который был добавлен как часть "Настройка в 1 щелчок" во время подготовки кластера.
- В этом кластере автоматическое масштабирование настроено как 1 минимальный узел и 2 максимальных узла. Назовем их Node1 и Node2.
- Этот кластер находится за цифровым балансировщиком нагрузки океана, то есть LB1, который взаимодействует с контроллером входящего трафика, то есть с запущенным модулем Nginx.
- Допустим, есть одна реплика ( реплика: 1) контроллер развертывания образа «1», который требует 80% ЦП.
- Первоначально развертывается образ 1, и, поскольку ресурсы доступны, образ 1 запускается на Узле 1.
- Считайте, что image1 обновляется до image2 в восходящем направлении. Контроллер развертывания увидит, что узел недоступен, и подготовит узел 2, и создаст еще один модуль, на котором запущен образ 2 на узле 2, модуль, работающий с образом 1, начнет завершать свою работу, как только образ 2 будет запущен и запущен.
- LB1 обновляет маршрутизацию на Node1, Node2.
- Теперь после завершения работы модуля (на Node1) для образа 1, поскольку реплика: 1 установлена в контроллере развертывания, Node1 ничего не запускает с точки зрения пользователя.
- В идеале должно быть автоматическое c деинициализация узла, т.е. Node1.
- Я попытался вручную удалить Node1 из кластера с помощью панели управления DO.
- Обновления LB1 и показывает доступность одного узла, но показывает состояние как неработающее.
- После исследования я обнаружил, что «nginx -controller» работал только на Node1. Когда Node1 завершается, «nginx -controller» требует времени, чтобы подготовить новый модуль на тогда доступном Node2. Однако все это время случаются простои.
Мой вопрос в том, как лучше всего использовать автоматическое масштабирование для перехода на более раннюю версию. У меня есть несколько решений, которые я подумал.
- Можно ли запустить «nginx -controller» на всех узлах?
или
- Если я сливаю узел из "kubectl", то есть слива kubectl, а затем удаляю вручную, удаляю узел с панели инструментов, простоя не должно быть ?. или просто выполните слив с помощью kubectl, DigitalOcean автоматически откатится к предыдущей версии.