VPA
- Вертикальный автомасштабирование модулей может работать двумя способами:
- Режим рекомендаций - он будет рекомендовать запросы и ограничения для модулей в зависимости от используемых ресурсов
- Автоматический режим - он автоматически проанализирует использование и установит запрос и ограничения для модулей. Это приведет к завершению работы модуля для его воссоздания с новой спецификацией, как указано здесь:
Из-за ограничений Kubernetes единственный способ изменить запросы ресурсов запущенного модуля - это воссоздать модуль. . Если вы создаете VerticalPodAutoscaler
с updateMode
из «Авто», VerticalPodAutoscaler
удаляет Pod, если ему нужно изменить запросы ресурсов Pod.
Cloud.google. com: Kubernetes Engine: Документы: Концепции: Вертикальный автомасштабирование модулей
Подробнее о концепциях VPA
.
см. ссылку выше. То, что для этого нужно как минимум 2 реплики, скорее всего, связано с фактом высокой доступности. Поскольку модули выселяются для поддержки новых лимитов, они не могут обработать запрос. Если бы дело дошло до ситуации, когда в то время есть только 1 реплика, эта реплика не могла бы отвечать на запросы в состоянии завершения / восстановления.
Существует официальное руководство по запуску VPA на GKE
:
VPA
поддерживает: Deployments
, а также StatefulSets
.
StatefulSet
Как и развертывание, StatefulSet управляет подами, основанными на идентичном контейнере spe c. В отличие от развертывания, StatefulSet поддерживает закрепленную идентичность для каждого из своих модулей. Эти поды созданы из одного и того же spe c, но не являются взаимозаменяемыми: каждый из них имеет постоянный идентификатор, который он поддерживает при любом изменении расписания.
Если вы хотите использовать тома хранения для обеспечения постоянства вашего рабочей нагрузки, вы можете использовать StatefulSet как часть решения.
Kubernetes.io: StatefulSet
Настройка StatefulSet
с PersistentVolumes
гарантирует, что данные, хранящиеся в PV
, не будут удалены в случае завершения модуля.
Чтобы иметь возможность использовать вашу базу данных с replicas
> 1
, вам потребуется иметь репликацию , реализованную в среде вашей базы данных.
Существуют руководства / ресурсы / решения по запуску баз данных в среде Kubernetes. Выберите решение, наиболее подходящее для вашего случая использования. Вот некоторые из них:
После развертывания базы данных вы сможете запустить команду ниже, чтобы извлечь имя StatefulSet
:
Затем вы можете применить имя от StatefulSet
до VPA
, как показано ниже:
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: DB-VPA
spec:
targetRef:
apiVersion: "apps/v1"
kind: StatefulSet
name: <INSERT_DB_STS_HERE>
updatePolicy:
updateMode: "Auto"
Я призываю вас также прочитать эту статью: