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#metadataspec (PriorityLevelConfigurationSpec)
spec
— специфікація бажаної поведінки "request-priority". Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-statusstatus (PriorityLevelConfigurationStatus)
status
— поточний статус "request-priority". Докладніше: 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. Кількість місць, які інші рівні можуть позичати у цього рівня, визначається наступним чином: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[priority level k] NCS(k)
Більші значення означають більший номінальний ліміт конкурентності за рахунок інших рівнів пріоритету. Стандартно це поле має значення 0.
limited (LimitedPriorityLevelConfiguration)
limited
вказує, як обробляються запити для обмеженого рівня пріоритету. Це поле повинно бути не порожнім лише тоді, колиtype
встановлено на"Limited"
.LimitedPriorityLevelConfiguration вказує, як обробляти запити, які підлягають обмеженням. Він вирішує дві проблеми:
Які обмеження на запити для цього рівня пріоритету?
Що робити з запитами, які перевищують ліміт?
limited.borrowingLimitPercent (int32)
borrowingLimitPercent
, якщо вказано, налаштовує ліміт на кількість місць, які цей рівень пріоритету може позичати від інших рівнів пріоритету. Ліміт відомий як BorrowingConcurrencyLimit (BorrowingCL) і є обмеженням на загальну кількість місць, які цей рівень може позичати одночасно. Це поле визначає співвідношення цього ліміту до номінального ліміту конкурентності рівня. Коли це поле не є нульовим, воно має вказувати невідʼємне ціле число, і ліміт обчислюється так:BorrowingCL(i) = round( NominalCL(i) * borrowingLimitPercent(i)/100.0 )
Значення цього поля може перевищувати 100, що означає, що цей рівень пріоритету може позичати більше місць, ніж його власний номінальний ліміт конкурентності (NominalCL). Якщо це поле залишити
nil
, ліміт фактично нескінченний.limited.lendablePercent (int32)
lendablePercent
вказує частку NominalCL рівня, яка може бути позичена іншими рівнями пріоритету. Значення цього поля повинно бути в діапазоні від 0 до 100 включно, стандартно — 0. Кількість місць, які інші рівні можуть позичати у цього рівня, визначається наступним чином:LendableCL(i) = round( NominalCL(i) * lendablePercent(i)/100.0 )
limited.limitResponse (LimitResponse)
limitResponse
вказує, як поводитися з запитами, які зараз не можна виконати.LimitResponse визначає, як обробляти запити, які зараз не можна виконати.
limited.limitResponse.type (string), обовʼязково
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
— кількість черг для цього рівня пріоритету. Черги існують незалежно в кожному apiserver. Значення повинно бути позитивним. Встановлення його на 1 фактично виключає shufflesharding і, таким чином, робить метод відмінності асоційованих схем потоків неактуальним. Стандартно поле має значення 64.
limited.nominalConcurrencyShares (int32)
nominalConcurrencyShares
(NCS) вносить свій внесок до обчислення NominalConcurrencyLimit (NominalCL) цього рівня. Це кількість виконавчих місць, доступних на цьому рівні пріоритету. Це використовується як для запитів, розподілених з цього рівня пріоритету, так і для запитів, розподілених з інших рівнів пріоритету, які позичають місця з цього рівня. Ліміт конкурентності сервера (ServerCL) розподіляється серед обмежених рівнів пріоритету в пропорції до їх значень NCS:NominalCL(i) = ceil( ServerCL * NCS(i) / sum_ncs ) sum_ncs = sum[priority level k] NCS(k)
Більші значення означають більший номінальний ліміт конкурентності, за рахунок інших рівнів пріоритету.
Якщо не вказано, стандартно це поле має значення 30.
Встановлення цього поля в нуль підтримує створення «вʼязниці» для цього рівня пріоритету, яка використовується для утримання деяких запитів
type (string), required
type
вказує, чи підлягає цей рівень пріоритету обмеженням на виконання запитів. Значення"Exempt"
означає, що запити цього рівня пріоритету не підлягають обмеженням (і, отже, ніколи не ставляться в чергу) і не впливають на потужність, доступну для інших рівнів пріоритету. Значення"Limited"
означає, що (a) запити цього рівня пріоритету підлягають обмеженням і (b) частина обмеженої потужності сервера доступна виключно для цього рівня пріоритету. Обовʼязкове.
PriorityLevelConfigurationStatus
PriorityLevelConfigurationStatus представляє поточний стан "пріоритету запитів".
conditions ([]PriorityLevelConfigurationCondition)
Patch strategy: обʼєднання за ключем
type
Map: унікальні значення за ключем типу зберігатимуться під час обʼєднання
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: PriorityLevelConfigurationList
metadata (ListMeta)
metadata
— це стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadataitems ([]PriorityLevelConfiguration), обовʼязково
items
— це список пріоритетів запитів.
Операції
get
отримати вказану PriorityLevelConfiguration
HTTP запит
GET /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
401: Unauthorized
get
отримати статус вказаної PriorityLevelConfiguration
HTTP запит
GET /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
401: Unauthorized
list
перелік або перегляд обʼєктів типу PriorityLevelConfiguration
HTTP запит
GET /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (PriorityLevelConfigurationList): OK
401: Unauthorized
create
створення PriorityLevelConfiguration
HTTP запит
POST /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations
Параметри
body: PriorityLevelConfiguration, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
201 (PriorityLevelConfiguration): Created
202 (PriorityLevelConfiguration): Accepted
401: Unauthorized
update
заміна вказаної PriorityLevelConfiguration
HTTP запит
PUT /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
body: PriorityLevelConfiguration, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
201 (PriorityLevelConfiguration): Created
401: Unauthorized
update
заміна статусу вказаної PriorityLevelConfiguration
HTTP запит
PUT /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
body: PriorityLevelConfiguration, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
201 (PriorityLevelConfiguration): Created
401: Unauthorized
patch
часткове оновлення вказаної PriorityLevelConfiguration
HTTP запит
PATCH /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
201 (PriorityLevelConfiguration): Created
401: Unauthorized
patch
часткове оновлення статусу вказаної PriorityLevelConfiguration
HTTP запит
PATCH /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}/status
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PriorityLevelConfiguration): OK
201 (PriorityLevelConfiguration): Created
401: Unauthorized
delete
видалення PriorityLevelConfiguration
HTTP запит
DELETE /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations/{name}
Параметри
name (в шляху): string, обовʼязково
імʼя PriorityLevelConfiguration
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection
вилучення колекції PriorityLevelConfiguration
HTTP запит
DELETE /apis/flowcontrol.apiserver.k8s.io/v1/prioritylevelconfigurations
Параметри
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized