• Русский
  • Создание экземпляра

    Содержание

    Введение

    Эта функция позволяет пользователям создавать и управлять экземплярами баз данных PostgreSQL внутри кластера Kubernetes. Пользователи могут быстро развернуть экземпляры баз данных, соответствующие их требованиям, настроив:

    • Спецификации ресурсов
    • Информацию об аккаунте
    • Требования к хранилищу

    Предварительные условия

    Перед созданием экземпляра PostgreSQL убедитесь, что:

    1. Настроены соответствующие классы хранилища.
    2. Postgres Operator корректно установлен и запущен.
    3. У вас есть необходимые права для создания ресурсов.

    Поддерживаемые версии

    В настоящее время поддерживаются версии PostgreSQL 11, 12, 14, 15 и 16. Обратите внимание, что версии 15 и 16 необходимо настраивать через YAML. Рекомендуется использовать последнюю стабильную версию.

    Выбор архитектуры

    Postgres Operator поддерживает следующие архитектуры:

    • Single Node: подходит для сред разработки и тестирования
    • Primary-Replica Replication: рекомендуется для производственных сред с:
      • Автоматическим переключением при сбое
      • Высокой доступностью
      • Резервированием данных

    Процедура

    CLI
    Web Console

    Создание экземпляра Single Node

    # Пример минимальной конфигурации кластера HA
    cat << EOF | kubectl create -f -
    apiVersion: acid.zalan.do/v1
    kind: postgresql  # Определение пользовательского ресурса для кластеров PostgreSQL
    metadata:
      name: pg-single
      namespace: c1-midautons
    spec:
      ipFamilyPrefer: ""
      teamId: ACID
      enableExporter: true
      enablePgpool2: false
      spiloPrivileged: false
      spiloRunAsGroup: 103
      spiloRunAsUser: 101
      spiloAllowPrivilegeEscalation: false
      enableReadinessProbe: true
      postgresql:
        parameters:
          log_directory: /var/log/pg_log
        version: "14"
      numberOfInstances: 1
      resources:
        requests:
          cpu: "1"
          memory: 2Gi
        limits:
          cpu: "1"
          memory: 2Gi
      volume:
        size: 5Gi
        storageClass: c1-topolvmsc
    EOF

    Создание кластера с высокой доступностью

    cat << EOF | kubectl -n $NAMESPACE create -f -
    apiVersion: acid.zalan.do/v1
    kind: postgresql
    metadata:
      name: pg-ha
      namespace: default
    spec:
      ipFamilyPrefer: ""
      teamId: ACID
      enableExporter: true
      enablePgpool2: false
      spiloPrivileged: false
      spiloRunAsGroup: 103
      spiloRunAsUser: 101
      spiloAllowPrivilegeEscalation: false
      enableReadinessProbe: true
      postgresql:
        parameters:
          log_directory: /var/log/pg_log
        version: "14"
      numberOfInstances: 3
      resources:
        requests:
          cpu: "1"
          memory: 2Gi
        limits:
          cpu: "1"
          memory: 2Gi
      volume:
        size: 50Gi
        storageClass: default
      patroni:
        ttl: 30
        loop_wait: 10
        retry_timeout: 10
    EOF

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

    kubectl -n $NAMESPACE get postgresql

    Ожидаемый вывод:

    NAME                            AGE
    pg-ha                           21h

    Описание полей вывода:

    ПолеОписание
    NAMEИмя экземпляра
    AGEВремя с момента создания
    NOTE
    1. Для производственных сред используйте архитектуру primary-replica
    2. Перед развертыванием убедитесь, что ваш класс хранилища поддерживает динамическое выделение
    3. Настройте соответствующие resource limits
    4. Реализуйте регулярное резервное копирование критически важных данных
    WARNING
    • Неправильные лимиты ресурсов могут привести к проблемам с производительностью или эвакуации pod
    • Отсутствие резервных копий может привести к потере данных при сбоях