Создание сервера PostgreSQL с помощью средств Kubernetes
Примечание.
В отношении технологии (как предварительной версии функции), описанной в этой статье, действуют дополнительные условия использования предварительных версий Microsoft Azure.
Последние обновления доступны в заметках о выпуске.
Необходимые компоненты
Необходимо уже создать контроллер данных.
Чтобы создать сервер PostgreSQL с помощью средств Kubernetes, необходимо установить средства Kubernetes. В примерах в этой статье будет использоваться kubectl
, но аналогичные подходы можно использовать и для других средств Kubernetes, например панели мониторинга Kubernetes, oc
или helm
, если вы знакомы с этими средствами и YAML/JSON Kubernetes.
Обзор
Чтобы создать сервер 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. При изменении имени измените имя секрета на соответствие. Например, если изменить имя сервера pg2
PostgreSQL на, необходимо изменить имя секрета на pg1-login-secret
pg2-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
Устранение неполадок при создании
Если при создании у вас возникли какие-либо проблемы, ознакомьтесь с Руководством по устранению неполадок.