Проблемы с 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), обычно не так просто масштабировать, как приложения без сохранения состояния, выполняемые как развертывания. Масштабирование вверх и вниз, как правило, довольно сложный процесс для приложений с отслеживанием состояния, которые вы не хотите делать только на основе автоматического масштабирования. Обычно это требует некоторой дополнительной логики поддержки в самом приложении. И особенно с уменьшением масштаба это также может означать риск для ваших данных. Автоматическое масштабирование более полезно для кратковременных изменений нагрузки. Масштабирование наборов состояний требует более долгосрочного мышления. Из-за сложности вы не хотите, чтобы ваша база данных увеличивалась и уменьшалась каждую минуту.

Другие вопросы по тегам