Установка MongoDB в кластер Kubernetes

    Команда Simple-Server
    03.06.2026
    10 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    Установка MongoDB в Kubernetes требует наличия настроенного сервера с правами суперюзера и кластера Kubernetes, о создании которого будет рассказано далее. Добавим, что ОС сервера не имеет значения, но использование Linux гарантирует, что проблемы при установке будут минимальны.

    Создаем кластер Kubernetes

    Развернуть кластер Kubernetes можно прямо из панели управления Simple-Server в соответствующем разделе. Этот процесс не быстрый, поэтому будьте готовы подождать некоторое время. По окончании развертывания вы сможете просмотреть параметры кластера, а также станет доступным для скачивания файл конфигурации. Теперь переходим к процедуре MongoDB install.

    Пошаговая установка MongoDB

    Установка СУБД выполняется в несколько этапов, поэтому для удобства мы подготовили пошаговую инструкцию.

    • Шаг 1. Подключитесь к серверу с правами суперюзера и выполните установку программного обеспечения с использованием менеджера пакетов, введя следующую инструкцию:

    • Шаг 2. Используйте файл для подключения к созданному окружению Kubernetes. Сделать это можно так:

    mkdir /usr/local/etc/mongo && cd /usr/local/etc/mongo cat << EOF > testcluster.conf <здесь введите данные из созданного файла> EOF echo "export KUBECONFIG=testcluster.conf" >> ~/.bashrc
    • Шаг 3. Проверьте корректность подключения инструкцией _kubectl cluster-info_. При успешном подключении система выдаст сообщение, в котором будет содержаться следующая строка: _Kubernetes control plane is running at_ с дальнейшим указанием IP сервера.
    • Шаг 4. В MongoDB есть контейнер для хранения данных, который можно настроить через собственный конфиг. файл. Обратите внимание на значение _storage_ — оно определяет емкость контейнера в гигабайтах. _accessModes_ указывает на тип доступа: например, значение _ReadWriteOnce_ указывает на то, что том может быть смонтирован для чтения и записи одним узлом. _ReadWriteMany_ означает, что том может быть смонтирован для чтения и записи многими узлами, а _ReadOnlyMany_ значит, что том может быть смонтирован только для чтения многими узлами.
    • Шаг 5. Создайте файл _Creds.yaml _с данными для подключения к MongoDB, в котором логин (username) и пароль (password) должны быть зашифрованы через BASE64. Образец записи:
    apiVersion: v1 data: username: <логин с шифрованием через BASE64> password: <пароль с шифрованием через BASE64> kind: Secret metadata: creationTimestamp: null name: creds

    Шифрование и дешифрование при необходимости выполняется этими инструкциями:

    echo <данные без шифрования> | base64 echo <данные с шифрованием> | base64 -d
    • Шаг 6. Теперь создаем файл _PersistVolClaim.yaml_ , в котором будет описана конфигурация MongoDB. Чтобы запустить его, используйте инструкцию _kubectl apply -f_. Об успешном запуске будет свидетельствовать сообщение со строками созданных путей (created). Вот примерная запись (конкретные значения и пути вы сможете вписать сюда сами):
    apiVersion: apps/v1 kind: Deployment metadata: labels: app: mongo name: mongo spec: replicas: 1 selector: matchLabels: app: mongo strategy: {} template: metadata: labels: app: mongo spec: containers: - image: mongo name: mongo args: ["--dbpath","/data/db"] livenessProbe: exec: command: - mongo - --disableImplicitSessions - --eval readinessProbe: exec: command: - mongo - --disableImplicitSessions - --eval env: - name: MONGO_INITDB_ROOT_USERNAME valueFrom: secretKeyRef: name: creds key: username - name: MONGO_INITDB_ROOT_PASSWORD valueFrom: secretKeyRef: name: creds key: password volumeMounts: - name: "datadir" mountPath: "/data/db" volumes: - name: "datadir" persistentVolumeClaim: claimName: "mongopvc"

    Как проверить подключение

    После развертывания контейнеров есть возможность проверить подключение Mongo, что делается инструкцией:

    kubectl exec deployment/client -it -- /bin/bash

    Если всё подключено успешно, система выдаст типичное приглашение СУБД. Чтобы создать новую БД, достаточно выполнить переключение на нее, однако учтите, что она не будет сохранена, пока вы не добавите туда какие-либо данные. Делается это так:

    db.createCollection("newdata")

    Последняя строчка нужна для проверки, что созданная БД существует.

    Особенности эксплуатации MongoDB в кластере Kubernetes

    • Чтобы обеспечить гибкость работы MongoDB в Kubernetes, используйте удаленные хранилища. Это облегчит задачу перемещения MongoDB при необходимости.
    • Также обратите внимание на настройки _requests_ и _limits_ в подах с репликами MongoDB. При некорректной настройке нередко возникает проблема, когда при резком увеличении нагрузке Kube станет «убивать» поды с репликами БД, перемещая их на узлы с меньшей нагрузкой. Это повлечет за собой увеличение времени простоя, так как поды с БД на других узлах создаются долго.
    • И еще одна важная настройка — это _podDisruptionBudget_ , которая позволит поддерживать заданное число рабочих реплик БД.

    Разобравшись с этими вызовами, вы сможете легко масштабировать БД под общим управлением Kubernetes. А что касается удаленных хранилищ, то с этим поможет сервер Simple-Server.

    Другие способы и кастомизация

    Представленный способ установки MongoDB в Kube не единственный. Также для этого можно использовать различное ПО, разработанное специально для работы с Kubernetes — например, Helm или KubeDB. Последнее приложение как раз было написано с целью облегчить интеграцию других продуктов в Kube. Что касается Helm, то это еще одно популярное решение от корпорации VMWare (хотя VMWare не разработали, а только приобрели этот продукт и занимаются его поддержкой).

    Есть и еще одно решение, которое довольно популярно у западных коллег. Оно называется Percona Operator. Это современное приложение (разработано в 2018 году) с открытым исходным кодом удобно в использовании и постоянно улучшается сообществом. Некоторые используют комбинированные решения (например, Percona + Helm). Но, разумеется, установка Mongo при помощи каждого из этих приложений имеет свои особенности, поэтому перед тем, как выполнять эту процедуру, следует изучить эти продукты — документации по ним хватает. И, хотя большинство полезных материалов написаны на английском языке, разобраться в них не так сложно, поскольку главное там — это представленный код.

    В завершение отметим, что для того, чтобы решать проблемы управления кластером MongoDB в Kubernetes более эффективно и с учетом своих задач, вы можете использовать модифицированный образ MongoDB. Например, в образе MongoDB «из коробки» не включена аутентификация. Поэтому можно скачать образ с уже инициированной аутентификацией или создать собственный. Конечно, использование модифицированных образов Docker несколько сложнее, чем представленная выше реализация. Но зато вы получите полный контроль над конфигурациями базы данных и параметрами настройки конфигураций в соответствии с вашими запросами. Полезную информацию по кастомизации официального образа MongoDB можно найти здесь (на английском языке).

    Резервное копирование и восстановление

    При определении стратегии резервного копирования и восстановления важно помнить, что не все службы данных нуждаются в одинаковом уровне защиты. Но обычно нам требуется наилучший уровень защиты, который соответствует не только потребностям бизнеса, но и потребностям клиентов. Поэтому при создании плана резервного копирования и восстановления MongoDB в кластере Kubernetes учитывайте следующие моменты:

    • определите, кто будет нести ответственность за создание резервных копий;
    • определите, какой уровень RPO (целевой точки восстановления) вам требуется;
    • убедитесь, что знаете, где будут расположены ваши резервные копии (казалось бы, очевидный момент, но с поиском бэкапов нередко возникают проблемы);
    • спланируйте расписание и тип хранения (чтобы не повторяться, вот наш гайд по резервному копированию, где большое внимание уделяется методам, политикам и решениям резервирования);
    • убедитесь, что установлены все нужные компоненты для того, чтобы ваши резервные копии были согласованы с приложениями.

    Теперь вы сможете выполнить развертывание MongoDB в кластере Kubernetes. Дальнейшая работа предполагает некоторое знание Kube, поэтому, если вы не знакомы с Kubernetes, рекомендуем сначала изучить документацию от разработчиков этой платформы.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны