Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки
Deckhouse Kubernetes Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.
Postgres
Scope: Namespaced
Version: v1alpha1
-
строкаapiVersion
Определяет версию API, к которой относится данный объект.
Сервер преобразует поддерживаемые версии ресурса в актуальный внутренний формат и может отклонять неизвестные версии.
Подробнее с обязательными полями в ресурсах можно ознакомиться в документации Kubernetes.
-
строкаkind
Строковое значение, определяющее тип ресурса, к которому относится данный объект.
Сервер может определить это значение по эндпоинту, на который клиент отправляет запрос.
Поле не подлежит изменению. Указывается в формате CamelCase.
Подробнее с типами ресурсов можно ознакомиться в документации Kubernetes.
-
объектmetadata
-
объектspecОпределяет желаемое состояние ресурса Postgres.
-
объектspec.clusterНастройки кластера, включая топологию размещения и режим репликации.
-
строкаspec.cluster.replication
Определяет состав и тип реплик в кластере.
Возможные значения:
Availability— master-узел + 1 асинхронная реплика;Consistency— master-узел + 1 синхронная реплика;ConsistencyAndAvailability— master-узел + 1 синхронная реплика + 1 асинхронная реплика.
По умолчанию:
ConsistencyAndAvailabilityДопустимые значения:
Availability,Consistency,ConsistencyAndAvailability -
строкаspec.cluster.topology
Определяет правила разворачивания кластера.
Возможные значения:
Zonal— кластер размещается в одной зоне, если это возможно;TransZonal— кластер размещается в разных зонах, если это возможно;Ignored— используются стандартные правила планирования Kubernetes. Гарантируется только размещение на разных узлах.
Пример:
topology: Ignored
-
-
объектspec.configurationПараметры конфигурации PostgreSQL.
-
целочисленныйspec.configuration.maxConnections
Определяет максимальное количество одновременных подключений к серверу базы данных.
Этот параметр можно установить только при запуске сервера.
Размеры некоторых ресурсов основываются на значении
max_connections. Увеличение этого параметра повышает объём выделяемых ресурсов, включая разделяемую память.Пример:
maxConnections: 100 -
строка или число
Устанавливает количество памяти, которое сервер базы данных использует для буферов разделяемой памяти.
Минимальное значение — 128 КБ. Для увеличения производительности требуется более высокое значение.
Этот параметр можно установить только при запуске сервера.
Для выделенного сервера базы данных с 1 ГБ ОЗУ или более рекомендуется использовать значение равное 25% от общего объема памяти. Для отдельных типов нагрузки могут быть эффективны более высокие значения, но поскольку PostgreSQL также активно использует кеш операционной системы, выделение более 25% ОЗУ для
shared_buffersредко даёт дополнительный прирост производительности.При увеличении
shared_buffersобычно требуется также увеличитьmax_wal_size, чтобы распределить процесс записи больших объемов новых или измененных данных на более длительный период времени.В системах с объёмом памяти менее 1 ГБ рекомендуется использовать меньшую долю, чтобы оставить достаточно памяти операционной системе.
Значение должно быть указано в единицах Kubernetes:
Gi,Mi,Ki,M,G.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
sharedBuffers: 250Mi -
строка или числоspec.configuration.walKeepSize
Определяет минимальный размер прошлых файлов WAL, хранящихся в каталоге
pg_wal, чтобы резервный сервер мог получить их для потоковой репликации.Если резервный сервер, подключенный к отправляющему серверу, отстает более чем на
wal_keep_sizeМБ, отправляющий сервер может удалить WAL-сегменты, который все еще нужен резервному. В этом случае соединение репликации будет прервано. Нисходящие соединения также в конечном итоге завершатся ошибкой в результате. Резервный сервер может восстановиться, получив сегмент из архива, если используется архивирование WAL.Это значение задаёт только минимальный размер сегментов, сохраняемых в `pg_wal. Системе может потребоваться сохранить больше сегментов для архивирования WAL или для восстановления из контрольной точки.
Если
wal_keep_sizeравен нулю (по умолчанию), система не сохраняет никаких дополнительных сегментов для резервного копирования. Таким образом, количество старых WAL-сегментов, доступных резервным серверам, является функцией местоположения предыдущей контрольной точки и статуса архивирования WAL.Значение должно быть указано в единицах Kubernetes:
Gi,Mi,Ki,M,G.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
walKeepSize: 512Mi -
строка или числоspec.configuration.workMem
Устанавливает базовый максимальный объём памяти, который может быть использован операцией запроса (например, для сортировки или хэш-таблицы) перед записью во временные файлы на диске.
Если единицы измерения не указаны, значение интерпретируется как КБ. Значение по умолчанию — 4 МБ.
Обратите внимание, что сложный запрос может выполнять несколько операций сортировки и хеширования одновременно, при этом каждая операция обычно может использовать столько памяти, сколько указывает это значение, прежде чем начнет записывать данные во временные файлы. Кроме того, несколько запущенных сессий могут выполнять такие операции одновременно. Поэтому общая используемая память может быть во много раз больше значения
work_mem.Операции сортировки используются для
ORDER BY,DISTINCTи слияний соединений. Хеш-таблицы используются в хеш-соединениях, хеш-агрегации, узлах memoize и хеш-обработке подзапросовIN.Хеш-операции обычно более чувствительны к доступности памяти, чем эквивалентные операции на основе сортировки. Лимит памяти для хеш-таблицы вычисляется путем умножения
work_memнаhash_mem_multiplier. Это позволяет хеш-операциям использовать количество памяти, превышающее обычное базовое количествоwork_mem.Значение должно быть указано в единицах Kubernetes:
Gi,Mi,Ki,M,G.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
workMem: 4Mi
-
-
объектspec.dataSourceИсточник данных для инициализации PostgreSQL из PostgresSnapshot или других источников данных.
-
объектspec.dataSource.objectRef
Обязательный параметр
Ссылка на объект, содержащий исходные данные.-
строкаspec.dataSource.objectRef.kind
Обязательный параметр
Тип ресурса (например, PostgresSnapshot). -
строкаspec.dataSource.objectRef.name
Обязательный параметр
Имя ресурса.
-
-
-
массив объектовspec.databasesСписок логических баз данных PostgreSQL.
-
строкаspec.databases.nameИмя логической базы данных, которая будет создана.
Пример:
name: mydb
-
-
объектspec.instance
Обязательный параметр
Требования к ресурсам каждого создаваемого пода.
Подробнее с управлением ресурсами для подов и контейнеров можно ознакомиться в документации Kubernetes.
-
объектspec.instance.cpu
Обязательный параметр
-
целочисленныйspec.instance.cpu.coreFraction
Обязательный параметр
Множитель для расчётаrequestsCPU относительноlimits.Пример:
coreFraction: 50 -
целочисленныйspec.instance.cpu.cores
Обязательный параметр
Количество ядер CPU.
-
-
объектspec.instance.memory
Обязательный параметр
-
строка или числоspec.instance.memory.size
Обязательный параметр
Объём памяти.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
size: 1Gi
-
-
объектspec.instance.persistentVolumeClaim
Обязательный параметр
-
строкаspec.instance.persistentVolumeClaim.size
Обязательный параметр
Размер хранилища.По умолчанию:
1GiПример:
size: 1Gi -
строкаspec.instance.persistentVolumeClaim.storageClassName
Имя StorageClass, используемого для хранения данных PostgreSQL.
Если значение не указано, будет использован StorageClass по умолчанию в кластере Kubernetes. Параметр задаётся только при создании ресурса и не может быть изменён позднее.
Пример:
storageClassName: local-path
-
-
-
строкаspec.observabilityMonitoring mode, could be turned off,
По умолчанию:
EnabledДопустимые значения:
Enabled,Disabled,EnabledWithoutAlerts -
строкаspec.postgresClassName
Обязательный параметр
Имя ресурса PostgresClass, используемого для валидации настроек.По умолчанию:
defaultПример:
postgresClassName: small -
объектspec.tlsНастройки TLS для сервера PostgreSQL.
-
объектspec.tls.certManager
Настройки
cert-managerдля управления TLS-сертификатами.Доступны только при
mode: CertManager.-
строкаspec.tls.certManager.clusterIssuerName
Имя ресурса ClusterIssuer для
cert-manager.Должно быть указано только одно поле:
clusterIssuerNameилиissuerName. -
строкаspec.tls.certManager.issuerName
Имя ресурса Issuer для
cert-manager.Должно быть указано только одно поле:
clusterIssuerNameилиissuerName.
-
-
объектspec.tls.customCertificate
Настройки использования пользовательских TLS-сертификатов.
Доступны только при
mode: CustomCertificate.-
строкаspec.tls.customCertificate.serverCASecret
Обязательный параметр
Имя Secret, содержащего CA-сертификат для TLS-сервера PostgreSQL. -
строкаspec.tls.customCertificate.serverTLSSecret
Обязательный параметр
Имя Secret, содержащего TLS-сертификат для сервера PostgreSQL.
-
-
строкаspec.tls.mode
Режим работы с TLS-сертификатами.
Возможные значения:
CertManager— управление сертификатами с помощьюcert-manager(используется по умолчанию);CustomCertificate— использование пользовательских сертификатов из Secret;K8s— выпуск сертификатов с помощью Kubernetes CA.
По умолчанию:
CertManagerДопустимые значения:
CertManager,CustomCertificate,K8s
-
-
строкаspec.typeТип кластера PostgreSQL.
По умолчанию:
ClusterДопустимые значения:
Cluster,Standalone -
массив объектовspec.usersСписок внутренних пользователей PostgreSQL.
-
строкаspec.users.hashedPassword
Хешированный пароль для роли PostgreSQL.
Поддерживаемые форматы:
- MD5;
- SCRAM-SHA-256.
Если вы укажете здесь обычный пароль, он будет автоматически заменен на хеш в формате MD5 или SCRAM-SHA-256.
Пример:
hashedPassword: SCRAM-SHA-256$4096:9bdAkxfJ7tMWaVlcOSyKLc8uUbvVi+KBBYXWCE14maM=$g13sNwuKH0VsQnh43WqlQj8KPwS/2smQL1m0JzJkowI=:rImReuq6U7mD4KoJGIDelxsFVlXoB1stP8olJZr5Gl4= -
строкаspec.users.nameИмя пользователя, который будет создан в PostgreSQL.
Пример:
name: myuser -
строкаspec.users.password
Пароль для роли PostgreSQL в открытом виде.
При указании автоматически преобразуется в
hashedPassword, после чего удаляется из.spec.Если одновременно указаны
passwordиhashedPassword, будет использоватьсяpassword. Это можно использовать для смены пароля.Если вы хотите хранить пароль в открытом виде в секрете Kubernetes, используйте параметр
storeCredsToSecret.Если указано значение
storeCredsToSecret, а пароль не указан, будет сгенерирован случайный пароль.Пример:
password: '123' -
строкаspec.users.role
Предопределённая роль, в которую будет добавлен созданный пользователь.
Поддерживаемые значения:
ro(только чтение);rw(чтение и запись);monitoring(для сбора метрик).
Допустимые значения:
ro,rw,monitoringПример:
role: rw -
строкаspec.users.storeCredsToSecret
Имя Kubernetes Secret, в который оператор сохранит пароль в открытом виде.
Секрет будет создан в том же неймспейсе, где расположен ресурс. Будут сформированы строки подключения ко всем созданным базам данных.
Пример:
storeCredsToSecret: myuser-secret
-
-
-
объектstatusОписывает наблюдаемое состояние ресурса Postgres.
-
массив объектовstatus.conditionsСписок условий, отражающих состояние ключевых этапов работы сервиса.
-
строкаstatus.conditions.lastTransitionTime
-
строкаstatus.conditions.messageA human readable message indicating details about the transition.
-
целочисленныйstatus.conditions.observedGenerationObserved generation
-
строкаstatus.conditions.reasonThe reason for the condition’s last transition.
-
строкаstatus.conditions.statusStatus of the condition, one of True, False, Unknown.
-
строкаstatus.conditions.typeType of condition.
-
-
строкаstatus.configVersionВерсия конфигурации, которая была провалидирована.
-
объектstatus.lastValidConfigurationПоследняя конфигурация, успешно прошедшая валидацию.
-
объектstatus.lastValidConfiguration.cluster
-
строкаstatus.lastValidConfiguration.cluster.replication
Описывает состав и тип реплик в кластере.
Возможные значения:
Availability— master-узел + 1 асинхронная реплика;Consistency— master-узел + 1 синхронная реплика;ConsistencyAndAvailability— master-узел + 1 синхронная реплика + 1 асинхронная реплика.
По умолчанию:
ConsistencyAndAvailabilityДопустимые значения:
Availability,Consistency,ConsistencyAndAvailability -
строкаstatus.lastValidConfiguration.cluster.topology
Описывает правила разворачивания кластера.
Возможные значения:
Zonal— кластер размещается в одной зоне, если это возможно;TransZonal— кластер размещается в разных зонах, если это возможно;Ignored— используются стандартные правила планирования Kubernetes. Гарантируется только размещение на разных узлах.
Пример:
topology: Ignored
-
-
объектstatus.lastValidConfiguration.configurationПараметры конфигурации PostgreSQL.
-
объектstatus.lastValidConfiguration.instance
-
объектstatus.lastValidConfiguration.instance.cpu
Обязательный параметр
-
целочисленныйstatus.lastValidConfiguration.instance.cpu.coreFraction
Обязательный параметр
Множитель для расчётаrequestsCPU относительноlimits.Пример:
coreFraction: 50 -
целочисленныйstatus.lastValidConfiguration.instance.cpu.cores
Обязательный параметр
Количество ядер CPU.
-
-
объектstatus.lastValidConfiguration.instance.memory
Обязательный параметр
-
строка или числоstatus.lastValidConfiguration.instance.memory.size
Обязательный параметр
Объём памяти.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
size: 1Gi
-
-
объектstatus.lastValidConfiguration.instance.persistentVolumeClaim
Обязательный параметр
-
строкаstatus.lastValidConfiguration.instance.persistentVolumeClaim.size
Обязательный параметр
Размер хранилища.По умолчанию:
1GiПример:
size: 1Gi -
строкаstatus.lastValidConfiguration.instance.persistentVolumeClaim.storageClassName
Имя StorageClass, используемого для хранения данных PostgreSQL.
Если значение не было указано, используется StorageClass по умолчанию в кластере Kubernetes. Параметр задаётся только при создании ресурса и не может быть изменён позднее.
Пример:
storageClassName: local-path
-
-
-
строкаstatus.lastValidConfiguration.observability
-
объектstatus.lastValidConfiguration.schedulingПараметры планирования подов из последней валидной конфигурации.
-
объектstatus.lastValidConfiguration.scheduling.affinityГруппа affinity-правил для размещения подов.
-
объектstatus.lastValidConfiguration.scheduling.affinity.nodeAffinityОписывает правила привязки подов к узлам кластера.
-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution
Планировщик будет стремиться размещать поды на узлах, удовлетворяющих affinity-выражениям, заданным в этом поле, однако при необходимости может выбрать и узел, не соответствующий одному или нескольким выражениям.
Наиболее предпочтительным считается узел с наибольшей суммой весов. Для каждого узла, удовлетворяющего всем обязательным условиям планирования (например, запросам ресурсов, правилам
requiredDuringSchedulingIgnoredDuringExecutionи другим), вычисляется сумма значенийweightдля всех элементов этого списка, условияmatchExpressionsкоторых выполняются для данного узла.Узлы с наибольшей итоговой суммой считаются наиболее предпочтительными.
-
объектstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preferenceУсловие селектора узла, связанное с соответствующим весом (weight).
-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressionsСписок требований селектора узла по лейблам узла.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist;Gt;Lt.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым; - при операторе
GtилиLtмассив значений должен иметь один элемент, который будет интерпретирован как целое число.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFieldsСписок требований селектора узла по полям узла.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist;Gt;Lt.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым; - при операторе
GtилиLtмассив значений должен иметь один элемент, который будет интерпретирован как целое число.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
-
целочисленныйstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.weightВес, определяющий приоритет сопоставления соответствующему
nodeSelectorTerm, в диапазоне 1-100.
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
Если заданные в этом поле требования
nodeAffinityне выполняются в момент планирования, под не будет запланирован к размещению на узле.Если после запуска пода эти требования перестанут выполняться (например, из-за изменения лейблов на узле), под может продолжить работу на текущем узле. Система не гарантирует его немедленное вытеснение с узла, однако в отдельных случаях такое вытеснение возможно.
-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms
Обязательный параметр
Список условий селектора узла. Термины объединяются по логикеИЛИ.-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressionsСписок требований селектора узла по лейблам узла.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist;Gt;Lt.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым; - при операторе
GtилиLtмассив значений должен иметь один элемент, который будет интерпретирован как целое число.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFieldsСписок требований селектора узла по полям узла.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist;Gt;Lt.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым; - при операторе
GtилиLtмассив значений должен иметь один элемент, который будет интерпретирован как целое число.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
-
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAffinity
Описывает правила размещения подов относительно друг друга.
Указывает, рядом с какими подами (на том же узле, зоне и т. д.) должен быть размещён под.
-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution
Планировщик будет стремиться размещать поды на узлах, удовлетворяющих affinity-выражениям, заданным в этом поле, однако при необходимости может выбрать и узел, не соответствующий одному или нескольким выражениям.
Наиболее предпочтительным считается узел с наибольшей суммой весов. Для каждого узла, удовлетворяющего всем обязательным условиям планирования (например, запросам ресурсов, правилам
requiredDuringSchedulingIgnoredDuringExecutionи другим), вычисляется сумма значенийweightдля всех элементов этого списка, условияmatchExpressionsкоторых выполняются для данного узла.Узлы с наибольшей итоговой суммой считаются наиболее предпочтительными.
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTermОписывает правило pod affinity, связанное с соответствующим весом (weight).
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector
Селектор лейблов для выбора набора ресурсов (в данном случае — подов).
Если не задан,
podAffinityTermне будет соответствовать ни одному поду.-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions
Список условий для выбора по лейблам.
Условия объединяются по логике
И.-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchLabels
Набор пар
{ключ,значение}для выбора подов по лейблам.Каждая пара эквивалентна условию в
matchExpressionsс операторомInи единственным значениемvalue.Условия объединяются по логике
И.
-
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys
Список ключей лейблов пода, на основе которых выбираются поды для применения affinity.
Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида
key in (value), которое объединяется сlabelSelector.Ключи, отсутствующие в лейблах пода, игнорируются.
Применяются следующие ограничения:
- один и тот же ключ не может быть указан одновременно в
matchLabelKeysиlabelSelector; - параметр не может быть задан без
labelSelector.
- один и тот же ключ не может быть указан одновременно в
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys
Список ключей лейблов пода, используемых для исключения подов при применении affinity.
Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида
key notin (value), которое объединяется сlabelSelector.Ключи, отсутствующие в лейблах пода, игнорируются.
Применяются следующие ограничения:
- один и тот же ключ не может быть указан одновременно в
mismatchLabelKeysиlabelSelector; - параметр не может быть задан без
labelSelector.
- один и тот же ключ не может быть указан одновременно в
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector
Селектор лейблов для выбора неймспейсов, к которым применяется правило.
Итоговый набор определяется как объединение неймспейсов, выбранных этим селектором, и неймспейсов, перечисленных в поле
namespaces.Если
namespaceSelectorиnamespacesне заданы или пусты, используется неймспейс текущего пода.Пустой селектор (
{}) соответствует всем неймспейсам.-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions
Список условий для выбора по лейблам.
Условия объединяются по логике
И.-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchLabels
Набор пар
{ключ,значение}для выбора подов по лейблам.Каждая пара эквивалентна условию в
matchExpressionsс операторомInи единственным значениемvalue.Условия объединяются по логике
И.
-
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces
Список имён неймспейсов, к которым применяется правило.
Используется совместно с
namespaceSelector.Итоговый набор представляет собой объединение значений обоих полей.
Если
namespacesиnamespaceSelectorне заданы, используется неймспейс текущего пода. -
строкаstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey
Обязательный параметр
Ключ лейбла узла, определяющий топологию размещения подов.
Используется для определения, считаются ли поды соседними: поды считаются размещёнными вместе, если они запущены на узлах с одинаковым значением лейбла
topologyKey.Значение не может быть пустым.
-
-
целочисленныйstatus.lastValidConfiguration.scheduling.affinity.podAffinity.preferredDuringSchedulingIgnoredDuringExecution.weightВес, определяющий приоритет сопоставления соответствующему
podAffinityTerm, в диапазоне 1-100.
-
-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution
Если заданные в этом поле требования не выполняются в момент планирования, под не будет запланирован к размещению на узле.
Если после запуска пода эти требования перестанут выполняться (например, из-за изменения лейблов на узле), под может продолжить работу на текущем узле. Система не гарантирует его немедленное вытеснение с узла, однако в отдельных случаях такое вытеснение возможно.
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector
Селектор лейблов для выбора набора ресурсов (в данном случае — подов).
Если не задан,
podAffinityTermне будет соответствовать ни одному поду.-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions
Список условий для выбора по лейблам.
Условия объединяются по логике
И.-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
Набор пар
{ключ,значение}для выбора подов по лейблам.Каждая пара эквивалентна условию в
matchExpressionsс операторомInи единственным значениемvalue.Условия объединяются по логике
И.
-
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
Список ключей лейблов пода, на основе которых выбираются поды для применения affinity.
Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида
key in (value), которое объединяется сlabelSelector.Ключи, отсутствующие в лейблах пода, игнорируются.
Применяются следующие ограничения:
- один и тот же ключ не может быть указан одновременно в
matchLabelKeysиlabelSelector; - параметр не может быть задан без
labelSelector.
- один и тот же ключ не может быть указан одновременно в
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
Список ключей лейблов пода, используемых для исключения подов при применении affinity.
Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида
key notin (value), которое объединяется сlabelSelector.Ключи, отсутствующие в лейблах пода, игнорируются.
Применяются следующие ограничения:
- один и тот же ключ не может быть указан одновременно в
mismatchLabelKeysиlabelSelector; - параметр не может быть задан без
labelSelector.
- один и тот же ключ не может быть указан одновременно в
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
Селектор лейблов для выбора неймспейсов, к которым применяется правило.
Итоговый набор определяется как объединение неймспейсов, выбранных этим селектором, и неймспейсов, перечисленных в поле
namespaces.Если
namespaceSelectorиnamespacesне заданы или пусты, используется неймспейс текущего пода.Пустой селектор (
{}) соответствует всем неймспейсам.-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
Список условий для выбора по лейблам.
Условия объединяются по логике
И.-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
Набор пар
{ключ,значение}для выбора подов по лейблам.Каждая пара эквивалентна условию в
matchExpressionsс операторомInи единственным значениемvalue.Условия объединяются по логике
И.
-
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
Список имён неймспейсов, к которым применяется правило.
Используется совместно с
namespaceSelector.Итоговый набор представляет собой объединение значений обоих полей.
Если
namespacesиnamespaceSelectorне заданы, используется неймспейс текущего пода. -
строкаstatus.lastValidConfiguration.scheduling.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
Ключ лейбла узла, определяющий топологию размещения подов.
Используется для определения, считаются ли поды соседними: поды считаются размещёнными вместе, если они запущены на узлах с одинаковым значением лейбла
topologyKey.Значение не может быть пустым.
-
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity
Описывает правила размещения подов относительно друг друга.
Указывает, рядом с какими подами (на том же узле, зоне и т. д.) НЕ должен быть размещён под.
-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution
Планировщик будет стремиться размещать поды на узлах, удовлетворяющих anti-affinity-выражениям, заданным в этом поле, однако при необходимости может выбрать и узел, не соответствующий одному или нескольким выражениям.
Наиболее предпочтительным считается узел с наибольшей суммой весов. Для каждого узла, удовлетворяющего всем обязательным условиям планирования (например, запросам ресурсов, правилам
requiredDuringSchedulingIgnoredDuringExecutionи другим), вычисляется сумма значенийweightдля всех элементов этого списка, условияmatchExpressionsкоторых выполняются для данного узла.Узлы с наибольшей итоговой суммой считаются наиболее предпочтительными.
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTermОписывает правило pod affinity, связанное с соответствующим весом (weight).
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector
Селектор лейблов для выбора набора ресурсов (в данном случае — подов).
Если не задан,
podAffinityTermне будет соответствовать ни одному поду.-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions
Список условий для выбора по лейблам.
Условия объединяются по логике
И.-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.labelSelector.matchLabels
Набор пар
{ключ,значение}для выбора подов по лейблам.Каждая пара эквивалентна условию в
matchExpressionsс операторомInи единственным значениемvalue.Условия объединяются по логике
И.
-
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.matchLabelKeys
Список ключей лейблов пода, на основе которых выбираются поды для применения affinity.
Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида
key in (value), которое объединяется сlabelSelector.Ключи, отсутствующие в лейблах пода, игнорируются.
Применяются следующие ограничения:
- один и тот же ключ не может быть указан одновременно в
matchLabelKeysиlabelSelector; - параметр не может быть задан без
labelSelector.
- один и тот же ключ не может быть указан одновременно в
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.mismatchLabelKeys
Список ключей лейблов пода, используемых для исключения подов при применении affinity.
Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида
key notin (value), которое объединяется сlabelSelector.Ключи, отсутствующие в лейблах пода, игнорируются.
Применяются следующие ограничения:
- один и тот же ключ не может быть указан одновременно в
mismatchLabelKeysиlabelSelector; - параметр не может быть задан без
labelSelector.
- один и тот же ключ не может быть указан одновременно в
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector
Селектор лейблов для выбора неймспейсов, к которым применяется правило.
Итоговый набор определяется как объединение неймспейсов, выбранных этим селектором, и неймспейсов, перечисленных в поле
namespaces.Если
namespaceSelectorиnamespacesне заданы или пусты, используется неймспейс текущего пода.Пустой селектор (
{}) соответствует всем неймспейсам.-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions
Список условий для выбора по лейблам.
Условия объединяются по логике
И.-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaceSelector.matchLabels
Набор пар
{ключ,значение}для выбора подов по лейблам.Каждая пара эквивалентна условию в
matchExpressionsс операторомInи единственным значениемvalue.Условия объединяются по логике
И.
-
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.namespaces
Список имён неймспейсов, к которым применяется правило.
Используется совместно с
namespaceSelector.Итоговый набор представляет собой объединение значений обоих полей.
Если
namespacesиnamespaceSelectorне заданы, используется неймспейс текущего пода. -
строкаstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.podAffinityTerm.topologyKey
Обязательный параметр
Ключ лейбла узла, определяющий топологию размещения подов.
Используется для определения, считаются ли поды соседними: поды считаются размещёнными вместе, если они запущены на узлах с одинаковым значением лейбла
topologyKey.Значение не может быть пустым.
-
-
целочисленныйstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.preferredDuringSchedulingIgnoredDuringExecution.weightВес, определяющий приоритет сопоставления соответствующему
podAffinityTerm, в диапазоне 1-100.
-
-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution
Если заданные в этом поле требования не выполняются в момент планирования, под не будет запланирован к размещению на узле.
Если после запуска пода эти требования перестанут выполняться (например, из-за изменения лейблов на узле), под может продолжить работу на текущем узле. Система не гарантирует его немедленное вытеснение с узла, однако в отдельных случаях такое вытеснение возможно.
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector
Селектор лейблов для выбора набора ресурсов (в данном случае — подов).
Если не задан,
podAffinityTermне будет соответствовать ни одному поду.-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions
Список условий для выбора по лейблам.
Условия объединяются по логике
И.-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelector.matchLabels
Набор пар
{ключ,значение}для выбора подов по лейблам.Каждая пара эквивалентна условию в
matchExpressionsс операторомInи единственным значениемvalue.Условия объединяются по логике
И.
-
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.matchLabelKeys
Список ключей лейблов пода, на основе которых выбираются поды для применения affinity.
Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида
key in (value), которое объединяется сlabelSelector.Ключи, отсутствующие в лейблах пода, игнорируются.
Применяются следующие ограничения:
- один и тот же ключ не может быть указан одновременно в
matchLabelKeysиlabelSelector; - параметр не может быть задан без
labelSelector.
- один и тот же ключ не может быть указан одновременно в
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.mismatchLabelKeys
Список ключей лейблов пода, используемых для исключения подов при применении affinity.
Для каждого ключа берётся значение из лейблов текущего пода, после чего формируется условие вида
key notin (value), которое объединяется сlabelSelector.Ключи, отсутствующие в лейблах пода, игнорируются.
Применяются следующие ограничения:
- один и тот же ключ не может быть указан одновременно в
mismatchLabelKeysиlabelSelector; - параметр не может быть задан без
labelSelector.
- один и тот же ключ не может быть указан одновременно в
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector
Селектор лейблов для выбора неймспейсов, к которым применяется правило.
Итоговый набор определяется как объединение неймспейсов, выбранных этим селектором, и неймспейсов, перечисленных в поле
namespaces.Если
namespaceSelectorиnamespacesне заданы или пусты, используется неймспейс текущего пода.Пустой селектор (
{}) соответствует всем неймспейсам.-
массив объектовstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions
Список условий для выбора по лейблам.
Условия объединяются по логике
И.-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist.
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
объектstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaceSelector.matchLabels
Набор пар
{ключ,значение}для выбора подов по лейблам.Каждая пара эквивалентна условию в
matchExpressionsс операторомInи единственным значениемvalue.Условия объединяются по логике
И.
-
-
массив строкstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.namespaces
Список имён неймспейсов, к которым применяется правило.
Используется совместно с
namespaceSelector.Итоговый набор представляет собой объединение значений обоих полей.
Если
namespacesиnamespaceSelectorне заданы, используется неймспейс текущего пода. -
строкаstatus.lastValidConfiguration.scheduling.affinity.podAntiAffinity.requiredDuringSchedulingIgnoredDuringExecution.topologyKey
Ключ лейбла узла, определяющий топологию размещения подов.
Используется для определения, считаются ли поды соседними: поды считаются размещёнными вместе, если они запущены на узлах с одинаковым значением лейбла
topologyKey.Значение не может быть пустым.
-
-
-
-
объектstatus.lastValidConfiguration.scheduling.nodeSelectorСелектор узлов для размещения подов.
-
массив объектовstatus.lastValidConfiguration.scheduling.tolerationsСписок tolerations, позволяющих поду размещаться на узлах с taints.
-
строкаstatus.lastValidConfiguration.scheduling.tolerations.effect
Эффект taint, с которым сопоставляется toleration.
Если не задан, toleration применяется ко всем эффектам.
Допустимые значения:
NoSchedule;PreferNoSchedule;NoExecute.
-
строкаstatus.lastValidConfiguration.scheduling.tolerations.key
Ключ taint, к которому применяется toleration.
Если не задан, toleration применяется ко всем ключам taint.
В этом случае в качестве
operatorдолжно быть указаноExists, что означает соответствие любым значениям и ключам. -
строкаstatus.lastValidConfiguration.scheduling.tolerations.operator
Оператор, определяющий связь между ключом и значением taint.
Допустимые значения:
Exists;Equal(по умолчанию);Lt;Gt.
Оператор
Existsозначает соответствие любому значению. ОператорыLtиGtвыполняют числовое сравнение (требуется включённый feature gateTaintTolerationComparisonOperators). -
целочисленныйstatus.lastValidConfiguration.scheduling.tolerations.tolerationSeconds
Время, в течение которого toleration позволяет игнорировать taint с эффектом
NoExecute.Применяется только для эффекта NoExecute, в остальных случаях игнорируется. Если значение не задано (по умолчанию), toleration действует бессрочно (под не будет вытеснен).
Отрицательные значения и
0интерпретируются системой как0(под будет немедленно удалён). -
строкаstatus.lastValidConfiguration.scheduling.tolerations.value
Значение taint, с которым сопоставляется toleration.
Если используется оператор
Exists, значение должно быть пустым. В остальных случаях указывается строковое значение.
-
-
массив строкstatus.lastValidConfiguration.scheduling.warningsСписок предупреждений, связанных с применением параметров планирования подов.
-
-
строкаstatus.lastValidConfiguration.typeТип кластера PostgreSQL.
-
-
PostgresClass
Scope: Cluster
Version: v1alpha1
-
строкаapiVersion
Определяет версию API, к которой относится данный объект.
Сервер преобразует поддерживаемые версии ресурса в актуальный внутренний формат и может отклонять неизвестные версии.
Подробнее об обязательных полях в ресурсах можно почитать в документации Kubernetes.
-
строкаkind
Строковое значение, определяющее тип ресурса, к которому относится данный объект.
Сервер может определить это значение по эндпоинту, на который клиент отправляет запрос.
Поле не подлежит изменению. Указывается в формате CamelCase.
Подробнее с типом ресурсов можно ознакомиться в документации Kubernetes.
-
объектmetadata
-
объектspecОпределяет желаемое состояние ресурса PostgresClass.
-
объектspec.configuration
Параметры конфигурации PostgreSQL.
Любые указанные здесь параметры будут использоваться как значения по умолчанию в связанных кастомных ресурсах PostgreSQL.
-
целочисленныйspec.configuration.maxConnections
Определяет максимальное количество одновременных подключений к серверу базы данных.
Этот параметр можно установить только при запуске сервера.
Размеры некоторых ресурсов основываются на значении
max_connections. Увеличение значения приводит к повышенному выделению этих ресурсов, включая разделяемую память.Пример:
maxConnections: 100 -
строка или число
Устанавливает объём памяти, который сервер базы данных использует для буферов разделяемой памяти.
Минимальное значение — 128 КБ. Для увеличения производительности требуется более высокое значение.
Этот параметр можно установить только при запуске сервера.
Для выделенного сервера базы данных с 1 ГБ ОЗУ или более рекомендуется использовать значение равное 25% от общего объёма памяти. Для отдельных типов нагрузки могут быть эффективны более высокие значения, но поскольку PostgreSQL также активно использует кеш операционной системы, выделение более 25% ОЗУ для
shared_buffersредко даёт дополнительный прирост производительности.При увеличении
shared_buffersобычно требуется также увеличитьmax_wal_size, чтобы распределить процесс записи больших объёмов новых или измененных данных на более длительный период времени.В системах с объёмом памяти менее 1 ГБ рекомендуется использовать меньшую долю, чтобы оставить достаточно памяти операционной системе.
Значение должно быть указано в единицах Kubernetes:
Gi,Mi,Ki,M,G.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
sharedBuffers: 250Mi -
строка или числоspec.configuration.walKeepSize
Определяет минимальный размер прошлых файлов WAL, хранящихся в каталоге
pg_wal, чтобы резервный сервер мог получить их для потоковой репликации.Если резервный сервер, подключенный к отправляющему серверу, отстает более чем на
wal_keep_sizeМБ, отправляющий сервер может удалить WAL-сегменты, который все еще нужен резервному. В этом случае соединение репликации будет прервано. Нисходящие соединения также в конечном итоге завершатся ошибкой в результате. Резервный сервер может восстановиться, получив сегмент из архива, если используется архивирование WAL.Это значение задаёт только минимальный размер сегментов, сохраняемых в `pg_wal. Системе может потребоваться сохранить больше сегментов для архивирования WAL или для восстановления из контрольной точки.
Если
wal_keep_sizeравен нулю (по умолчанию), система не сохраняет никаких дополнительных сегментов для резервного копирования. Таким образом, количество старых WAL-сегментов, доступных резервным серверам, является функцией местоположения предыдущей контрольной точки и статуса архивирования WAL.Значение должно быть указано в единицах Kubernetes:
Gi,Mi,Ki,M,G.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
walKeepSize: 512Mi -
строка или числоspec.configuration.workMem
Устанавливает базовый максимальный объём памяти, который может быть использован операцией запроса (например, для сортировки или хэш-таблицы) перед записью во временные файлы на диске.
Если единицы измерения не указаны, значение интерпретируется как КБ. Значение по умолчанию — 4 МБ.
Обратите внимание, что сложный запрос может выполнять несколько операций сортировки и хеширования одновременно, при этом каждая операция обычно может использовать столько памяти, сколько указывает это значение, прежде чем начнет записывать данные во временные файлы. Кроме того, несколько запущенных сессий могут выполнять такие операции одновременно. Поэтому общая используемая память может быть во много раз больше значения
work_mem.Операции сортировки используются для
ORDER BY,DISTINCTи слияний соединений. Хеш-таблицы используются в хеш-соединениях, хеш-агрегации, узлах memoize и хеш-обработке подзапросовIN.Хеш-операции обычно более чувствительны к доступности памяти, чем эквивалентные операции на основе сортировки. Лимит памяти для хеш-таблицы вычисляется путем умножения
work_memнаhash_mem_multiplier. Это позволяет хеш-операциям использовать количество памяти, превышающее обычное базовое количествоwork_mem.Значение должно быть указано в единицах Kubernetes:
Gi,Mi,Ki,M,G.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
workMem: 4Mi
-
-
объектspec.nodeAffinity
Позволяет с помощью лейблов ограничивать набор узлов, на которых может быть запущен под.
Параметр концептуально похож на
nodeSelector.-
массив объектовspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution
Планировщик будет стремиться размещать поды на узлах, удовлетворяющих affinity-выражениям, заданным в этом поле, однако при необходимости может выбрать и узел, не соответствующий одному или нескольким выражениям.
Наиболее предпочтительным считается узел с наибольшей суммой весов. Для каждого узла, удовлетворяющего всем обязательным условиям планирования (например, запросам ресурсов, правилам
requiredDuringSchedulingIgnoredDuringExecutionи другим), вычисляется сумма значенийweightдля всех элементов этого списка, условияmatchExpressionsкоторых выполняются для данного узла.Узлы с наибольшей итоговой суммой считаются наиболее предпочтительными.
-
объектspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preferenceУсловие селектора узла, связанное с соответствующим весом (weight).
-
массив объектовspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressionsСписок требований селектора узла по лейблам узла.
-
строкаspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist;Gt;Lt.
-
массив строкspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым; - при операторе
GtилиLtмассив значений должен иметь один элемент, который будет интерпретирован как целое число.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
массив объектовspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFieldsСписок требований селектора узла по полям узла.
-
строкаspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.keyКлюч лейбла, к которому применяется селектор.
-
строкаspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist;Gt;Lt.
-
массив строкspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.preference.matchFields.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым; - при операторе
GtилиLtмассив значений должен иметь один элемент, который будет интерпретирован как целое число.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
-
целочисленныйspec.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution.weightВес, определяющий приоритет сопоставления соответствующему
nodeSelectorTerm, в диапазоне 1-100.
-
-
объектspec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution
Если заданные в этом поле требования
nodeAffinityне выполняются в момент планирования, под не будет запланирован к размещению на узле.Если после запуска пода эти требования перестанут выполняться (например, из-за изменения лейблов на узле), под может продолжить работу на текущем узле. Система не гарантирует его немедленное вытеснение с узла, однако в отдельных случаях такое вытеснение возможно.
-
массив объектовspec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms
Обязательный параметр
Список условий селектора узла. Термины объединяются по логикеИЛИ.-
массив объектовspec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressionsСписок требований селектора узла по лейблам узла.
-
строкаspec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.keyКлюч лейбла, к которому применяется селектор.
-
строкаspec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist;Gt;Lt.
-
массив строкspec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchExpressions.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым; - при операторе
GtилиLtмассив значений должен иметь один элемент, который будет интерпретирован как целое число.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
массив объектовspec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFieldsСписок требований селектора узла по полям узла.
-
строкаspec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.keyКлюч лейбла, к которому применяется селектор.
-
строкаspec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.operator
Представляет отношение ключа к набору значений.
Поддерживаемые операторы:
In;NotIn;Exists;DoesNotExist;Gt;Lt.
-
массив строкspec.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecution.nodeSelectorTerms.matchFields.values
Массив строковых значений, который заполняется в зависимости от оператора:
- при операторе
InилиNotInмассив значений НЕ должен быть пустым; - при операторе
ExistsилиDoesNotExistмассив значений должен быть пустым; - при операторе
GtилиLtмассив значений должен иметь один элемент, который будет интерпретирован как целое число.
Этот массив заменяется при применении strategic merge patch.
- при операторе
-
-
-
-
-
объектspec.nodeSelector
Позволяет размещать поды кластера PostgreSQL только на указанных узлах.
Работает аналогично параметру
spec.nodeSelectorдля подов Kubernetes. -
массив строкspec.overridableConfiguration
Массив параметров конфигурации PostgreSQL, которые пользователь может изменять.
Значения, заданные пользователем, имеют приоритет и переопределяют соответствующие параметры в секции
configuration.-
строкаspec.overridableConfiguration.Элемент массиваConfigurationType is a type of configuration option
Допустимые значения:
maxConnections,sharedBuffers,workMem,walKeepSize
-
-
массив объектовspec.sizingPolicies
Обязательный параметр
Массив, который определяет политику выделения вычислительных ресурсов экземплярам PostgreSQL.
Диапазоны
cores.min–cores.maxдля разных элементов списка не должны перекрываться.-
массив целых чиселspec.sizingPolicies.coreFractionsМножитель для настройки
requestsна основе заданныхlimitsв ядрах.Пример:
coreFractions: - 10 - 30 - 50 - 100 -
объектspec.sizingPolicies.coresОпределяет допустимый диапазон количества ядер CPU.
-
целочисленныйspec.sizingPolicies.cores.max
Обязательный параметр
Верхняя граница допустимого количества ядер CPU.Пример:
max: 6 -
целочисленныйspec.sizingPolicies.cores.min
Обязательный параметр
Нижняя граница допустимого количества ядер CPU.Пример:
min: 1
-
-
объектspec.sizingPolicies.memoryПозволяет задать диапазон и шаг допустимых значений памяти.
-
строка или числоspec.sizingPolicies.memory.max
Обязательный параметр
Верхняя граница допустимого объема памяти.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
max: 5Gi -
строка или числоspec.sizingPolicies.memory.min
Обязательный параметр
Нижняя граница допустимого объема памяти.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
min: 128Mi -
строка или числоspec.sizingPolicies.memory.step
Обязательный параметр
Делитель (шаг) для допустимого значения памяти. Указанный объем должен делиться без остатка.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
step: 100Mi
-
-
-
массив объектовspec.tolerationsTolerations подов Postgres.
-
строкаspec.tolerations.effect
Эффект taint для соответствия.
Допустимые значения:
NoSchedule;PreferNoSchedule;NoExecute.
Пустое значение означает соответствие любому эффекту taint.
-
строкаspec.tolerations.key
Ключ taint, к которому применяется toleration. Пустое значение означает соответствие любому ключу.
Если ключ пустой,
operatorдолжен бытьExists. Эта комбинация означает соответствие всем значениям и всем ключам. -
строкаspec.tolerations.operator
Отношение ключа (
key) к значению (value). Допустимые операторы:Exists;Equal(по умолчанию).
Existsэквивалентен подстановочному знаку для значения, поэтому к поду могут применяться все taints определенной категории. -
целочисленныйspec.tolerations.tolerationSecondsПериод времени, в течение которого toleration с эффектом
NoExecuteдопускает taint. По умолчанию не установлено, что предписывает допускать taint бессрочно (не вытеснять под). Нулевые и отрицательные значения интерпретируются системой как0(немедленное вытеснение пода). -
строкаspec.tolerations.valueЗначение taint, которому соответствует toleration. При
operator: Existsзначение должно быть пустым. В другом случае должна быть указана обычная строка.
-
-
объектspec.topology
Обязательный параметр
Описание разрешенной топологии PostgreSQL.-
массив строкspec.topology.allowedTopologies
Обязательный параметр
Массив допустимых типов топологии.
Поддерживаются следующие значения:
Zonal— кластер размещается в пределах одной зоны, если это возможно;TransZonal— кластер размещается в разных зонах, если это возможно;Ignored— кластер размещается по стандартным правилам планирования Kubernetes; гарантируется только разнесение по разным узлам.
-
строкаspec.topology.allowedTopologies.Элемент массива
Допустимые значения:
Ignored,Zonal,TransZonal
-
массив строкspec.topology.allowedZonesМассив разрешенных зон для размещения PostgreSQL-кластера.
По умолчанию:
[] -
строкаspec.topology.defaultTopology
Обязательный параметр
Топология по умолчанию, которая будет использоваться всеми связанными сервисами PostgreSQL.Допустимые значения:
Ignored,Zonal,TransZonal
-
-
массив объектовspec.validations
Формулы валидации, которые позволяют проверить все настроенные конфигурации.
Поддерживается только язык CEL.
-
строкаspec.validations.messageСообщение, которое будет выводиться при неудачном выполнении правила (
rule).Пример:
message: '''maxConnections should be greater than 100''\' -
строкаspec.validations.rule
Правило для проверки конфигурации PostgreSQL.
Доступные предопределенные переменные:
configuration.maxConnections;configuration.workMem;configuration.sharedBuffers;configuration.walKeepSize;instance.memory.size;instance.cpu.cores.
Пример:
rule: configuration.maxConnections > 100
-
-
PostgresSnapshot
Scope: Namespaced
Version: v1alpha1
-
строкаapiVersion
Определяет версию API, к которой относится данный объект.
Сервер преобразует поддерживаемые версии ресурса в актуальный внутренний формат и может отклонять неизвестные версии.
Подробнее с обязательными полями в ресурсах можно ознакомиться в документации Kubernetes.
-
строкаkind
Строковое значение, определяющее тип ресурса, к которому относится данный объект.
Сервер может определить это значение по эндпоинту, на который клиент отправляет запрос.
Поле не подлежит изменению. Указывается в формате CamelCase.
Подробнее с типами ресурсов можно ознакомиться в документации Kubernetes.
-
объектmetadata
-
объектspecОпределяет желаемое состояние ресурса PostgresSnapshot.
-
строкаspec.postgresName
Обязательный параметр
Имя управляемого сервиса PostgreSQL.
-
-
объектstatusОписывает наблюдаемое состояние ресурса PostgresSnapshot.
-
строкаstatus.completedAtВремя завершения резервного копирования.
-
строкаstatus.errorОбнаруженная ошибка.
-
строкаstatus.phaseФаза текущего снимка.
-
объектstatus.postgresКонфигурация PostgreSQL.
-
объектstatus.postgres.clusterНастройки кластера, включая топологию размещения и режим репликации.
-
строкаstatus.postgres.cluster.replication
Описывает состав и тип реплик в кластере.
Возможные значения:
Availability— master-узел + 1 асинхронная реплика;Consistency— master-узел + 1 синхронная реплика;ConsistencyAndAvailability— master-узел + 1 синхронная реплика + 1 асинхронная реплика.
По умолчанию:
ConsistencyAndAvailabilityДопустимые значения:
Availability,Consistency,ConsistencyAndAvailability -
строкаstatus.postgres.cluster.topology
Описывает правила разворачивания кластера.
Возможные значения:
Zonal— кластер размещается в одной зоне, если это возможно;TransZonal— кластер размещается в разных зонах, если это возможно;Ignored— используются стандартные правила планирования Kubernetes. Гарантируется только размещение на разных узлах.
Пример:
topology: Ignored
-
-
объектstatus.postgres.configurationПараметры конфигурации PostgreSQL.
-
целочисленныйstatus.postgres.configuration.maxConnections
Максимальное количество одновременных подключений к серверу базы данных.
Этот параметр можно установить только при запуске сервера.
Размеры некоторых ресурсов основываются на значении
max_connections. Увеличение значения приводит к повышенному выделению этих ресурсов, включая разделяемую память.Пример:
maxConnections: 100 -
строка или число
Количество памяти, которое сервер базы данных использует для буферов разделяемой памяти.
Минимальное значение — 128 КБ. Для увеличения производительности требуется более высокое значение.
Этот параметр можно установить только при запуске сервера.
Для выделенного сервера базы данных с 1 ГБ ОЗУ или более рекомендуется использовать значение равное 25% от общего объёма памяти. Для отдельных типов нагрузки могут быть эффективны более высокие значения, но поскольку PostgreSQL также активно использует кеш операционной системы, выделение более 25% ОЗУ для
shared_buffersредко даёт дополнительный прирост производительности.При увеличении
shared_buffersобычно требуется также увеличитьmax_wal_size, чтобы распределить процесс записи больших объёмов новых или измененных данных на более длительный период времени.В системах с объёмом памяти менее 1 ГБ рекомендуется использовать меньшую долю, чтобы оставить достаточно памяти операционной системе.
Указывается в единицах Kubernetes:
Gi,Mi,Ki,M,G.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
sharedBuffers: 250Mi -
строка или числоstatus.postgres.configuration.walKeepSize
Минимальный размер прошлых файлов WAL, хранящихся в каталоге
pg_wal, чтобы резервный сервер мог получить их для потоковой репликации.Если резервный сервер, подключенный к отправляющему серверу, отстает более чем на
wal_keep_sizeМБ, отправляющий сервер может удалить WAL-сегменты, который все еще нужен резервному. В этом случае соединение репликации будет прервано. Нисходящие соединения также в конечном итоге завершатся ошибкой в результате. Резервный сервер может восстановиться, получив сегмент из архива, если используется архивирование WAL.Это значение задаёт только минимальный размер сегментов, сохраняемых в `pg_wal. Системе может потребоваться сохранить больше сегментов для архивирования WAL или для восстановления из контрольной точки.
Если
wal_keep_sizeравен нулю (по умолчанию), система не сохраняет никаких дополнительных сегментов для резервного копирования. Таким образом, количество старых WAL-сегментов, доступных резервным серверам, является функцией местоположения предыдущей контрольной точки и статуса архивирования WAL.Указывается в единицах Kubernetes:
Gi,Mi,Ki,M,G.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
walKeepSize: 512Mi -
строка или числоstatus.postgres.configuration.workMem
Базовый максимальный объём памяти, который может быть использован операцией запроса (например, для сортировки или хэш-таблицы) перед записью во временные файлы на диске.
Если единицы измерения не указаны, значение интерпретируется как КБ. Значение по умолчанию — 4 МБ.
Обратите внимание, что сложный запрос может выполнять несколько операций сортировки и хеширования одновременно, при этом каждая операция обычно может использовать столько памяти, сколько указывает это значение, прежде чем начнет записывать данные во временные файлы. Кроме того, несколько запущенных сессий могут выполнять такие операции одновременно. Поэтому общая используемая память может быть во много раз больше значения
work_mem.Операции сортировки используются для
ORDER BY,DISTINCTи слияний соединений. Хеш-таблицы используются в хеш-соединениях, хеш-агрегации, узлах memoize и хеш-обработке подзапросовIN.Хеш-операции обычно более чувствительны к доступности памяти, чем эквивалентные операции на основе сортировки. Лимит памяти для хеш-таблицы вычисляется путем умножения
work_memнаhash_mem_multiplier. Это позволяет хеш-операциям использовать количество памяти, превышающее обычное базовое количествоwork_mem.Указывается в единицах Kubernetes:
Gi,Mi,Ki,M,G.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
workMem: 4Mi
-
-
объектstatus.postgres.dataSourceData source for initializing PostgreSQL from PostgresSnapshot or other sources.
-
объектstatus.postgres.dataSource.objectRef
Обязательный параметр
-
строкаstatus.postgres.dataSource.objectRef.kind
Обязательный параметр
-
строкаstatus.postgres.dataSource.objectRef.name
Обязательный параметр
-
-
-
массив объектовstatus.postgres.databasesСписок логических баз данных PostgreSQL.
-
строкаstatus.postgres.databases.nameИмя логической базы данных.
Пример:
name: mydb
-
-
объектstatus.postgres.instance
Обязательный параметр
Требования к ресурсам каждого создаваемого пода.
Подробнее с управлением ресурсами для подов и контейнеров можно ознакомиться в документации Kubernetes.
-
объектstatus.postgres.instance.cpu
Обязательный параметр
-
целочисленныйstatus.postgres.instance.cpu.coreFraction
Обязательный параметр
Множитель для расчётаrequestsCPU относительноlimits.Пример:
coreFraction: 50 -
целочисленныйstatus.postgres.instance.cpu.cores
Обязательный параметр
Количество ядер CPU.
-
-
объектstatus.postgres.instance.memory
Обязательный параметр
-
строка или числоstatus.postgres.instance.memory.size
Обязательный параметр
Объём памяти.Шаблон:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$Пример:
size: 1Gi
-
-
объектstatus.postgres.instance.persistentVolumeClaim
Обязательный параметр
-
строкаstatus.postgres.instance.persistentVolumeClaim.size
Обязательный параметр
По умолчанию:
1GiПример:
size: 1Gi -
строкаstatus.postgres.instance.persistentVolumeClaim.storageClassName
Имя StorageClass, используемого для хранения данных PostgreSQL.
Если значение не было указано, используется StorageClass по умолчанию в кластере Kubernetes. Параметр задаётся только при создании ресурса и не может быть изменён позднее.
Пример:
storageClassName: local-path
-
-
-
строкаstatus.postgres.observabilityMonitoring mode, could be turned off,
По умолчанию:
EnabledДопустимые значения:
Enabled,Disabled,EnabledWithoutAlerts -
строкаstatus.postgres.postgresClassName
Обязательный параметр
Имя ресурса PostgresClass, используемого для валидации настроек.По умолчанию:
defaultПример:
postgresClassName: small -
объектstatus.postgres.tlsTLS configuration for the PostgreSQL server.
-
объектstatus.postgres.tls.certManager
Configuration of the
cert-managerfor TLS certificate management.Available only when
mode: CertManager.-
строкаstatus.postgres.tls.certManager.clusterIssuerName
Name of the ClusterIssuer resource for
cert-manager.Only one field must be specified:
clusterIssuerNameorissuerName. -
строкаstatus.postgres.tls.certManager.issuerName
Name of the Issuer resource for
cert-manager.Only one field must be specified:
clusterIssuerNameorissuerName.
-
-
объектstatus.postgres.tls.customCertificate
Configuration for custom TLS certificate management.
Available only when
mode: CustomCertificate.-
строкаstatus.postgres.tls.customCertificate.serverCASecret
Обязательный параметр
Name of the Secret containing the CA certificate for the PostgreSQL TLS server. -
строкаstatus.postgres.tls.customCertificate.serverTLSSecret
Обязательный параметр
Name of the Secret containing the PostgreSQL TLS certificate.
-
-
строкаstatus.postgres.tls.mode
TLS certificate management mode.
Possible values:
CertManager: Usecert-managerfor certificate management (by default).CustomCertificate: Use custom certificates from Secret.K8s: Use Kubernetes CA for issuing certificates.
По умолчанию:
CertManagerДопустимые значения:
CertManager,CustomCertificate,K8s
-
-
строкаstatus.postgres.typeТип кластера PostgreSQL.
По умолчанию:
ClusterДопустимые значения:
Cluster,Standalone -
массив объектовstatus.postgres.usersСписок внутренних пользователей PostgreSQL.
-
строкаstatus.postgres.users.hashedPassword
Хешированный пароль для роли PostgreSQL.
Поддерживаемые форматы:
- MD5;
- SCRAM-SHA-256.
Если при настройке здесь был указан обычный пароль, он был автоматически заменен на хеш в формате MD5 или SCRAM-SHA-256.
Пример:
hashedPassword: SCRAM-SHA-256$4096:9bdAkxfJ7tMWaVlcOSyKLc8uUbvVi+KBBYXWCE14maM=$g13sNwuKH0VsQnh43WqlQj8KPwS/2smQL1m0JzJkowI=:rImReuq6U7mD4KoJGIDelxsFVlXoB1stP8olJZr5Gl4= -
строкаstatus.postgres.users.nameИмя пользователя PostgreSQL.
Пример:
name: myuser -
строкаstatus.postgres.users.password
Пароль для роли PostgreSQL в открытом виде.
При указании автоматически преобразуется в
hashedPassword, после чего удаляется из.spec.Если одновременно указаны
passwordиhashedPassword, будет использоватьсяpassword. Это можно использовать для смены пароля.Если вы хотите хранить пароль в открытом виде в секрете Kubernetes, используйте параметр
storeCredsToSecret.Если указано значение
storeCredsToSecret, а пароль не указан, будет сгенерирован случайный пароль.Пример:
password: '123' -
строкаstatus.postgres.users.role
Предопределённая роль, куда добавляется созданный пользователь.
Поддерживаемые значения:
ro(только чтение);rw(чтение и запись);monitoring(для сбора метрик).
Допустимые значения:
ro,rw,monitoringПример:
role: rw -
строкаstatus.postgres.users.storeCredsToSecret
Имя Kubernetes Secret, в котором оператор хранит пароль в открытом виде.
Секрет создан в том же неймспейсе, где расположен ресурс.
Пример:
storeCredsToSecret: myuser-secret
-
-
-
строкаstatus.startedAtВремя начала резервного копирования.
-
строкаstatus.volumeSnapshotNameИмя связанного снимка тома.
-