Проблемы с Kubernetes PersistentVolumeClaim в AWS при использовании автомасштабирования Pod
Мы успешно создаем модули, службы и контроллеры репликации в соответствии с требованиями нашего проекта. Теперь мы планируем настроить постоянное хранилище в AWS с использованием Kubernetes. Я создал файл YAML для создания тома EBS в AWS, он работает нормально, как и ожидалось. Я могу требовать объем и успешно смонтировать на мой модуль (это только для одной реплики).
Я могу успешно создать файл. Объем также создается, но мои модули находятся в состоянии ожидания, объем по-прежнему показывает доступное состояние в aws. Я не могу видеть какие-либо журналы ошибок там.
Хранение файла:
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
name: mongo-ssd
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
Основной файл:
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: web2
spec:
selector:
matchLabels:
app: mongodb
serviceName: "mongodb"
replicas: 2
template:
metadata:
labels:
app: mongodb
annotations:
pod.alpha.kubernetes.io/initialized: "true"
spec:
containers:
- image: mongo
name: mongodb
ports:
- name: web2
containerPort: 27017
hostPort: 27017
volumeMounts:
- mountPath: "/opt/couchbase/var"
name: mypd1
volumeClaimTemplates:
- metadata:
name: mypd1
annotations:
volume.alpha.kubernetes.io/storage-class: mongo-ssd
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 10Gi
Сейчас я планирую настроить модуль автоматического масштабирования. Я видел автоматическое масштабирование pod для развертывания и ReplicationContoller. Могу ли я знать, можем ли мы также реализовать автоматическое масштабирование модуля pod для Stateful set?
1 ответ
Горизонтальный модуль автоматической масштабирования может масштабировать только развертывание, набор реплик или контроллер репликации. Вы не можете масштабировать Stateful Sets. (см. Kubernetes Docu для более подробной информации)
Основная причина заключается в том, что большинство приложений с сохранением состояния, запущенных в наборах с сохранением состояния (таких как MongoDB), обычно не так просто масштабировать, как приложения без сохранения состояния, выполняемые как развертывания. Масштабирование вверх и вниз, как правило, довольно сложный процесс для приложений с отслеживанием состояния, которые вы не хотите делать только на основе автоматического масштабирования. Обычно это требует некоторой дополнительной логики поддержки в самом приложении. И особенно с уменьшением масштаба это также может означать риск для ваших данных. Автоматическое масштабирование более полезно для кратковременных изменений нагрузки. Масштабирование наборов состояний требует более долгосрочного мышления. Из-за сложности вы не хотите, чтобы ваша база данных увеличивалась и уменьшалась каждую минуту.