PriorityLevelConfiguration
apiVersion: flowcontrol.apiserver.k8s.io/v1
import "k8s.io/api/flowcontrol/v1"
PriorityLevelConfiguration
PriorityLevelConfiguration представляет конфигурацию уровня приоритета.
apiVersion: flowcontrol.apiserver.k8s.io/v1
kind: PriorityLevelConfiguration
-
metadata (ObjectMeta)
metadata— стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -
spec (PriorityLevelConfigurationSpec)
spec— спецификация желаемого поведения "приоритета запроса". Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -
status (PriorityLevelConfigurationStatus)
status— текущее состояние "приоритета запроса". Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
PriorityLevelConfigurationSpec
PriorityLevelConfigurationSpec задаёт конфигурацию уровня приоритета.
-
exempt (ExemptPriorityLevelConfiguration)
exemptопределяет, как обрабатываются запросы для уровня приоритета с исключением. Это поле ДОЛЖНО быть пустым, еслиtypeравно"Limited". Это поле МОЖЕТ быть непустым, еслиtypeравно"Exempt". Если оно пусто, аtypeравно"Exempt", применяются значения по умолчанию дляExemptPriorityLevelConfiguration.ExemptPriorityLevelConfiguration описывает настраиваемые аспекты обработки запросов с исключением. В обязательном объекте конфигурации с исключением значения в полях здесь могут быть изменены авторизованными пользователями, в отличие от остальной части
spec.-
exempt.lendablePercent (int32)
lendablePercentпредписывает долю от NominalCL уровня, которую могут заимствовать другие уровни приоритета. Это значение должно быть в диапазоне от 0 до 100 включительно и по умолчанию равно 0. Количество мест, которые другие уровни могут заимствовать у этого уровня, известное как LendableConcurrencyLimit (LendableCL) этого уровня, определяется следующим образом.LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )
-
exempt.nominalConcurrencyShares (int32)
nominalConcurrencyShares(NCS) вносит вклад в вычисление NominalConcurrencyLimit (NominalCL) этого уровня. Это количество мест выполнения, номинально зарезервированных для этого уровня приоритета. Это НЕ ограничивает отправку с этого уровня приоритета, но влияет на другие уровни приоритета через механизм заимствования. Предельная одновременность сервера (ServerCL) делится между всеми уровнями приоритета пропорционально значениям NCS:NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[уровень приоритета k] NCS(k)
Более высокие числа означают больший номинальный предел одновременности за счёт каждого другого уровня приоритета. По умолчанию это поле равно нулю.
-
-
limited (LimitedPriorityLevelConfiguration)
limitedопределяет, как обрабатываются запросы для уровня приоритета Limited. Это поле должно быть непустым тогда и только тогда, когдаtypeравно"Limited".*LimitedPriorityLevelConfiguration определяет, как обрабатывать запросы, которые ограничены. Он решает две проблемы:
Как ограничиваются запросы для этого уровня приоритета?
Что делать с запросами, которые превышают предел?*
-
limited.borrowingLimitPercent (int32)
borrowingLimitPercent, если присутствует, настраивает ограничение на количество мест, которые этот уровень приоритета может заимствовать у других уровней приоритета. Это ограничение известно как BorrowingConcurrencyLimit (BorrowingCL) и является ограничением общего количества мест, которые этот уровень может заимствовать одновременно. Это поле содержит отношение этого ограничения к номинальному пределу одновременности уровня. Когда это поле не равно null, оно должно содержать неотрицательное целое число, и ограничение вычисляется следующим образом.BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 )
Значение этого поля может быть больше 100, что означает, что этот уровень приоритета может заимствовать больше мест, чем его собственный номинальный предел одновременности (NominalCL). Когда это поле оставлено
nil, ограничение фактически бесконечно. -
limited.lendablePercent (int32)
lendablePercentпредписывает долю от NominalCL уровня, которую могут заимствовать другие уровни приоритета. Значение этого поля должно быть в диапазоне от 0 до 100 включительно и по умолчанию равно 0. Количество мест, которые другие уровни могут заимствовать у этого уровня, известное как LendableConcurrencyLimit (LendableCL) этого уровня, определяется следующим образом.LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )
-
limited.limitResponse (LimitResponse)
limitResponseуказывает, что делать с запросами, которые сейчас не могут быть выполнены.LimitResponse определяет, как обрабатывать запросы, которые сейчас не могут быть выполнены.
-
limited.limitResponse.type (string), required
typeравно "Queue" или "Reject". "Queue" означает, что запросы, которые не могут быть выполнены при поступлении, хранятся в очереди до тех пор, пока они не смогут быть выполнены или не будет достигнуто ограничение очереди. "Reject" означает, что запросы, которые не могут быть выполнены при поступлении, отклоняются. Обязательно. -
limited.limitResponse.queuing (QueuingConfiguration)
queuingсодержит параметры конфигурации очереди. Это поле может быть непустым только еслиtypeравно"Queue".QueuingConfiguration содержит параметры конфигурации очереди
-
limited.limitResponse.queuing.handSize (int32)
handSize— небольшое положительное число, которое настраивает фрагментацию запросов в очереди. При постановке запроса в очередь на этом уровне приоритета идентификатор потока запроса (пара строк) хэшируется, а значение хэша используется для перемешивания списка очередей и раздачи руки указанного здесь размера. Запрос помещается в одну из самых коротких очередей в этой руке.handSizeне должно быть большеqueues, и должно быть значительно меньше (чтобы несколько интенсивных потоков не насыщали большинство очередей). Обратитесь к документации для конечных пользователей для получения более подробных рекомендаций по настройке этого поля. По умолчанию это поле равно 8. -
limited.limitResponse.queuing.queueLengthLimit (int32)
queueLengthLimit— максимальное количество запросов, которые могут ждать в данной очереди данного уровня приоритета за один раз; лишние запросы отклоняются. Это значение должно быть положительным. Если не указано, оно будет по умолчанию равно 50. -
limited.limitResponse.queuing.queues (int32)
queues— количество очередей для этого уровня приоритета. Очереди существуют независимо на каждом apiserвере. Значение должно быть положительным. Установка его в 1 фактически исключает shufflesharding и, следовательно, делает метод различения связанных схем потоков неважным. По умолчанию это поле равно 64.
-
-
-
limited.nominalConcurrencyShares (int32)
nominalConcurrencyShares(NCS) вносит вклад в вычисление NominalConcurrencyLimit (NominalCL) этого уровня. Это количество мест выполнения, доступных на этом уровне приоритета. Это используется как для запросов, отправленных с этого уровня приоритета, так и для запросов, отправленных с других уровней приоритета, заимствующих места с этого уровня. Предельная одновременность сервера (ServerCL) делится среди уровней приоритета Limited пропорционально значениям NCS:NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[уровень приоритета k] NCS(k)
Более высокие числа означают больший номинальный предел одновременности за счёт каждого другого уровня приоритета.
Если не указано, это поле имеет значение по умолчанию 30.
Установка этого поля в ноль поддерживает создание «тюрьмы» для этого уровня приоритета, используемой для удержания некоторых запросов.
-
type (string), required
typeуказывает, ограничен ли этот уровень приоритета при выполнении запросов. Значение"Exempt"означает, что запросы этого уровня приоритета не ограничены (и, следовательно, никогда не находятся в очереди) и не уменьшают доступную ёмкость для других уровней приоритета. Значение"Limited"означает, что (а) запросы этого уровня приоритета ограничены, и (б) часть ограниченной ёмкости сервера выделяется исключительно этому уровню приоритета. Обязательно.
PriorityLevelConfigurationStatus
PriorityLevelConfigurationStatus представляет текущее состояние "приоритета запроса".
-
conditions ([]PriorityLevelConfigurationCondition)
Стратегия исправления: слияние по ключу
typeКарта: уникальные значения по ключу type будут сохранены при слиянии
conditions— текущее состояние "приоритета запроса".PriorityLevelConfigurationCondition определяет состояние уровня приоритета.
-
conditions.lastTransitionTime (Time)
lastTransitionTime— последнее время, когда условие перешло из одного состояния в другое.Time — это оболочка вокруг time.Time, которая поддерживает правильную маршализацию в YAML и JSON. Оболочки предоставляются для многих фабричных методов, которые предлагает пакет time.
-
conditions.message (string)
message— удобочитаемое сообщение, указывающее подробности о последнем переходе. -
conditions.reason (string)
reason— уникальное, однословное, CamelCase обоснование последнего перехода состояния. -
conditions.status (string)
status— состояние условия. Может быть True, False, Unknown. Обязательно. -
conditions.type (string)
type— тип условия. Обязательно.
-
PriorityLevelConfigurationList
PriorityLevelConfigurationList — список объектов PriorityLevelConfiguration.
apiVersion: flowcontrol.apiserver.k8s.io/v1
kind: Список приоритетных уровней
-
metadata (ListMeta)
metadata— стандартные метаданные объекта. Дополнительная информация: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -
items ([]КонфигурацияПриоритетаЗапроса), обязательно
items— список приоритетов запросов.
© 2024 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2024 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/kubernetes-api/policy-resources/priority-level-configuration-v1/