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

    Введение

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

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

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

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

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

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

    В настоящее время поддерживаются версии PostgreSQL 13, 14, 15 и 16. Для новых развертываний рекомендуется версия 16.

    Варианты архитектуры

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

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

    Процедура

    CLI
    Веб-консоль

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

    # Example minimal HA cluster configuration
    cat << EOF | kubectl create -f -
    apiVersion: acid.zalan.do/v1
    kind: postgresql  # Custom resource definition for PostgreSQL clusters
    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
      restrictedPsaEnabled: true
      postgresql:
        parameters:
          log_directory: /var/log/pg_log
        version: "16"
      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
      restrictedPsaEnabled: 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. Настройте подходящие ограничения ресурсов
    4. Для критически важных данных реализуйте регулярные процедуры резервного копирования
    WARNING
    • Неправильно заданные ограничения ресурсов могут привести к проблемам с производительностью или выселению pod
    • Без резервных копий при сбоях возможна потеря данных