Поделиться через


Создание сервера PostgreSQL с помощью средств Kubernetes

Примечание.

В отношении технологии (как предварительной версии функции), описанной в этой статье, действуют дополнительные условия использования предварительных версий Microsoft Azure.

Последние обновления доступны в заметках о выпуске.

Необходимые компоненты

Необходимо уже создать контроллер данных.

Чтобы создать сервер PostgreSQL с помощью средств Kubernetes, необходимо установить средства Kubernetes. В примерах в этой статье будет использоваться kubectl, но аналогичные подходы можно использовать и для других средств Kubernetes, например панели мониторинга Kubernetes, oc или helm, если вы знакомы с этими средствами и YAML/JSON Kubernetes.

Установка средства kubectl

Обзор

Чтобы создать сервер PostgreSQL, необходимо создать секрет Kubernetes для безопасного хранения имени входа и пароля администратора postgres, а также пользовательского ресурса сервера PostgreSQL на postgresqls основе настраиваемых определений ресурсов.

Создание YAML-файла

Файл yaml шаблона можно использовать в качестве отправной точки для создания собственного пользовательского файла yaml сервера PostgreSQL. Загрузите этот файл на локальный компьютер и откройте его в текстовом редакторе. Лучше всего использовать текстовый редактор, такой как VS Code, поскольку он поддерживает выделение синтаксиса и анализ кода для YAML-файлов.

Пример файла yaml:

apiVersion: v1
data:
  username: <your base64 encoded username>
  password: <your base64 encoded password>
kind: Secret
metadata:
  name: pg1-login-secret
type: Opaque
---
apiVersion: arcdata.microsoft.com/v1beta3
kind: postgresql
metadata:
  name: pg1
spec:
  scheduling:
    default:
      resources:
        limits:
          cpu: "4"
          memory: 4Gi
        requests:
          cpu: "1"
          memory: 2Gi
  services:
    primary:
      type: LoadBalancer # Modify service type based on your Kubernetes environment
  storage:
    data:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi
    logs:
      volumes:
      - className: default # Use default configured storage class or modify storage class based on your Kubernetes environment
        size: 5Gi

Настройка имени пользователя и пароля

Секрет Kubernetes хранится в формате строки в кодировке Base64. Одна строка используется для имени пользователя, а другая — для пароля. Вам потребуется закодировать имя администратора и пароль в кодировке Base64, а затем поместить их в расположение заполнителя и data.password data.username. Не используйте символы < и >, указанные в шаблоне.

Можно воспользоваться онлайн-инструментом для шифрования требуемого имени пользователя и пароля в кодировке Base64 или использовать встроенные средства, работающие из интерфейса командной строки, в зависимости от платформы.

PowerShell

[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('<your string to encode here>'))

#Example
#[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes('example'))

Linux/macOS

echo -n '<your string to encode here>' | base64

#Example
# echo -n 'example' | base64

Настройка имени

Шаблон имеет значение pg1 атрибута имени. Это значение можно изменить, но оно должно быть символами, которые соответствуют стандартам именования DNS. При изменении имени измените имя секрета на соответствие. Например, если изменить имя сервера pg2PostgreSQL на, необходимо изменить имя секрета на pg1-login-secretpg2-login-secret

Настройка требований к ресурсам

При необходимости можно изменить требования к ресурсам — запросы и ограничения на использование ОЗУ и ядер.

Примечание.

Дополнительные сведения см. в статье Управление ресурсами Kubernetes.

Требования к ограничениям и запросам ресурсов:

  • В целях выставления счетов обязательно нужно указать предельное количество ядер.
  • Остальные запросы и ограничения ресурсов являются необязательными.
  • Предельное и запрашиваемое количество ядер должно быть положительным целым числом (если оно указано).
  • Если задано, для запроса ядер требуется минимум одного ядра.
  • Формат значения памяти соответствует нотации Kubernetes.

Настройка типа службы

При необходимости тип службы можно изменить на NodePort. Будет назначен случайный номер порта.

Настройка хранилища

Классы хранения для хранилища можно настроить в соответствии с вашим окружением. Если вы не уверены, какие классы хранения доступны, выполните команду kubectl get storageclass , чтобы просмотреть их. Шаблон имеет значение defaultпо умолчанию. Это значение означает, что класс хранилища с именем default не существует класса хранилища, который является значением по умолчанию. При необходимости вы можете также изменить размер хранилища. Подробные сведения приведены в статье о конфигурации хранилища.

Создание сервера PostgreSQL

Теперь, когда вы настроили yaml-файл сервера PostgreSQL, можно создать сервер PostgreSQL, выполнив следующую команду:

kubectl create -n <your target namespace> -f <path to your yaml file>

#Example
#kubectl create -n arc -f C:\arc-data-services\postgres.yaml

Мониторинг состояния создания

Создание сервера PostgreSQL займет несколько минут. Вы можете отслеживать ход выполнения этой операции в другом окне терминала с помощью следующих команд:

Примечание.

Приведенные ниже команды предполагают, что вы создали сервер PostgreSQL с именем pg1 и пространство имен Kubernetes с именем arc. Если вы использовали другое пространство имен или имя сервера PostgreSQL, вы можете заменить arc их именами pg1 .

kubectl get postgresqls/pg1 --namespace arc
kubectl get pods --namespace arc

Вы также можете проверить состояние создания любого конкретного модуля pod, выполнив kubectl describe команду. Эта describe команда особенно полезна для устранения неполадок. Например:

kubectl describe pod/<pod name> --namespace arc

#Example:
#kubectl describe pod/pg1-0 --namespace arc

Устранение неполадок при создании

Если при создании у вас возникли какие-либо проблемы, ознакомьтесь с Руководством по устранению неполадок.