Workload v1alpha2
apiVersion: scheduling.k8s.io/v1alpha2
import "k8s.io/api/scheduling/v1alpha2"
Workload
Workload дозволяє виражати обмеження планування, які слід використовувати при керуванні життєвим циклом робочих навантажень з точки зору планування, включаючи планування, витіснення, виселення та інші фази. Увімкнення Workload API керується функціональною можливістю GenericWorkload.
apiVersion: scheduling.k8s.io/v1alpha2
kind: Workload
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (WorkloadSpec), обовʼязково
Spec визначає бажану поведінку Workload.
WorkloadSpec
WorkloadSpec визначає бажаний стан Workload.
podGroupTemplates ([]PodGroupTemplate), обовʼязково
Map: унікальні значення за ключем name будуть збережені під час обʼєднання
PodGroupTemplates — перелік шаблонів, що складають Workload. Максимальна кількість шаблонів — 8. Це поле є незмінним.
PodGroupTemplate представляє шаблон для набору подів з політикою планування.
podGroupTemplates.name (string), обовʼязково
Name — унікальний ідентифікатор для PodGroupTemplate в межах Workload. Він повинен бути міткою DNS. Це поле є незмінним.
podGroupTemplates.schedulingPolicy (PodGroupSchedulingPolicy), обовʼязково
SchedulingPolicy визначає політику планування для цього PodGroupTemplate.
PodGroupSchedulingPolicy визначає конфігурацію планування для PodGroup. Повинна бути встановлена точно одна політика.
podGroupTemplates.schedulingPolicy.basic (BasicSchedulingPolicy)
Basic визначає, що поди в цій групі повинні плануватися з використанням стандартної поведінки планування Kubernetes.
BasicSchedulingPolicy вказує, що слід використовувати стандартну поведінку планування Kubernetes.
podGroupTemplates.schedulingPolicy.gang (GangSchedulingPolicy)
Gang визначає, що поди в цій групі повинні плануватися з використанням семантики "все або нічого".
GangSchedulingPolicy визначає параметри для групового планування.
podGroupTemplates.schedulingPolicy.gang.minCount (int32), обовʼязково
MinCount — це мінімальна кількість подів, які повинні бути заплановані або заплановані одночасно, щоб планувальник допустив всю групу. Це повинно бути додатне ціле число.
podGroupTemplates.disruptionMode (string)
DisruptionMode визначає режим, у якому дану PodGroup можна порушити. Одине з Pod, PodGroup. Це поле доступне лише тоді, коли увімкнено функціональну можливість WorkloadAwarePreemption.
Можливі значення enum:
"Pod"означає, що окремі поди можуть отримати стан розладу або випереджені незалежно один від одного. Це не залежить від точного набору подів, які наразі працюють у цій PodGroup."PodGroup"означає, що вся PodGroup повинна отримати стан розладу або випереджена разом.
podGroupTemplates.priority (int32)
Priority визначає значення пріоритету груп подів, створених з цього шаблону. Різні системні компоненти використовують це поле для визначення пріоритету групи подів. Коли увімкнено контролер допуску пріоритету, він забороняє користувачам встановлювати це поле. Контролер допуску пріоритету заповнює це поле з PriorityClassName. Чим вище значення, тим вищий пріоритет. Це поле доступне лише тоді, коли увімкнено функціональну можливість WorkloadAwarePreemption.
podGroupTemplates.priorityClassName (string)
PriorityClassName визначає пріоритет, який слід враховувати при плануванні групи подів, створеної з цього шаблону. Якщо пріоритет класу не вказано, контролер допуску може встановити його на стандартний глобальний пріоритет класу, якщо він існує. В іншому випадку групи подів, створені з цього шаблону, матимуть пріоритет, встановлений на нуль. Це поле доступне лише тоді, коли увімкнено функціональну можливість WorkloadAwarePreemption.
podGroupTemplates.resourceClaims ([]PodGroupResourceClaim)
Patch strategies: retainKeys, обʼєднати за ключем
nameMap: унікальні значення за ключем name будуть збережені під час обʼєднання
ResourceClaims визначає, які ResourceClaims можуть бути спільно використані серед Podʼів у групі. Podʼи використовують пристрої, виділені для заявки PodGroup, визначаючи заявку у власному Spec.ResourceClaims, яка точно відповідає заявці PodGroup. Заявка повинна мати однакове імʼя та посилатися на той самий ResourceClaim або ResourceClaimTemplate.
Це поле є альфа-рівнем і вимагає, щоб функціональна можливість DRAWorkloadResourceClaims була увімкнена.
Це поле є незмінним.
PodGroupResourceClaim посилається точно на один ResourceClaim, або безпосередньо, або шляхом вказання ResourceClaimTemplate, який потім перетворюється на ResourceClaim для PodGroup.
Він додає імʼя, яке унікально ідентифікує ResourceClaim всередині PodGroup. Podʼи, які потребують доступу до ResourceClaim, визначають відповідне посилання у власному Spec.ResourceClaims. Заявка Podʼа повинна точно відповідати всім полям заявки PodGroup.
podGroupTemplates.resourceClaims.name (string), обовʼязково
Name унікально ідентифікує цю заявку на ресурс всередині PodGroup. Це повинно бути DNS_LABEL.
podGroupTemplates.resourceClaims.resourceClaimName (string)
ResourceClaimName — це імʼя обʼєкта ResourceClaim у тому ж просторі імен, що й ця PodGroup. ResourceClaim буде зарезервовано для PodGroup замість його окремих podʼів.
Точно один з ResourceClaimName та ResourceClaimTemplateName повинен бути встановлений.
podGroupTemplates.resourceClaims.resourceClaimTemplateName (string)
ResourceClaimTemplateName — це імʼя обʼєкта ResourceClaimTemplate у тому ж просторі імен, що й ця PodGroup.
Шаблон буде використаний для створення нового ResourceClaim, який буде привʼязаний до цієї PodGroup. Коли ця PodGroup буде видалена, ResourceClaim також буде видалено. Імʼя PodGroup та імʼя ресурсу, разом із згенерованим компонентом, будуть використані для формування унікального імені для ResourceClaim, яке буде записано в podgroup.status.resourceClaimStatuses.
Це поле є незмінним, і після створення ResourceClaim панель управління не вноситиме жодних змін до відповідного ResourceClaim.
Точно один з ResourceClaimName та ResourceClaimTemplateName повинен бути встановлений.
podGroupTemplates.schedulingConstraints (PodGroupSchedulingConstraints)
SchedulingConstraints визначає необовʼязкові обмеження планування (наприклад, топологію) для цього PodGroupTemplate. Це поле доступне лише тоді, коли увімкнено функціональність TopologyAwareWorkloadScheduling.
PodGroupSchedulingConstraints визначає обмеження планування (наприклад, топологію) для PodGroup.
podGroupTemplates.schedulingConstraints.topology ([]TopologyConstraint)
Atomic: буде замінено під час обʼєднання
Topology визначає обмеження топології для групи podʼів. Наразі можна вказати лише одне обмеження топології. Це може змінитися в майбутньому.
TopologyConstraint визначає обмеження топології для PodGroup.
podGroupTemplates.schedulingConstraints.topology.key (string), обовʼязково
Key визначає ключ мітки вузла, що представляє домен топології. Всі podʼи в межах PodGroup повинні бути розташовані в одному екземплярі домену. Різні PodGroup можуть розташовуватися в різних екземплярах домену, навіть якщо вони походять від одного PodGroupTemplate. Приклади: "topology.kubernetes.io/rack"
controllerRef (TypedLocalObjectReference)
ControllerRef — це необовʼязкове посилання на керуючий обʼєкт, такий як Deployment або Job. Це поле призначено для використання інструментами, такими як CLI, щоб надати посилання назад на оригінальне визначення робочого навантаження. Це поле є незмінним.
TypedLocalObjectReference дозволяє посилатися на типізований обʼєкт всередині того самого простору імен.
controllerRef.kind (string), обовʼязково
Kind — це тип ресурсу, на який посилається. Він повинен бути назвою сегмента шляху.
controllerRef.name (string), обовʼязково
Name — це назва ресурсу, на який посилається. Він повинен бути назвою сегмента шляху.
controllerRef.apiGroup (string)
APIGroup — це група для ресурсу, на який посилається. Якщо APIGroup порожній, вказаний Kind повинен бути в основній групі API. Для будь-яких інших сторонніх типів встановлення APIGroup обовʼязкове. Він повинен бути піддоменом DNS.
WorkloadList
WorkloadList містить список ресурсів Workload.
apiVersion: scheduling.k8s.io/v1alpha2
kind: WorkloadList
metadata (ListMeta)
Стандартні метадані списку.
items ([]Workload), обовʼязково
Items — це список Workload.
Операції
get отримати вказаний Workload
HTTP-запит
GET /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/workloads/{name}
Параметри
name (в шляху): string, обовʼязково
назва Workload
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (Workload): OK
401: Unauthorized
list список або перегляд обʼєктів типу Workload
HTTP-запит
GET /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/workloads
Параметри
namespace (в шляху): string, обовʼязково
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
shardSelector (в запиті): string
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (WorkloadList): OK
401: Unauthorized
list список або перегляд обʼєктів типу Workload
HTTP-запит
GET /apis/scheduling.k8s.io/v1alpha2/workloads
Параметри
allowWatchBookmarks (в запиті): boolean
continue (в запиті): string
fieldSelector (в запиті): string
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
shardSelector (в запиті): string
timeoutSeconds (в запиті): integer
watch (в запиті): boolean
Відповідь
200 (WorkloadList): OK
401: Unauthorized
create створення Workload
HTTP-запит
POST /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/workloads
Параметри
namespace (в шляху): string, обовʼязково
body: Workload, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (Workload): OK
201 (Workload): Created
202 (Workload): Accepted
401: Unauthorized
update замінити вказаний Workload
HTTP-запит
PUT /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/workloads/{name}
Параметри
name (в шляху): string, обовʼязково
назва Workload
namespace (в шляху): string, обовʼязково
body: Workload, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (Workload): OK
201 (Workload): Created
401: Unauthorized
patch часткове оновленя вказаного Workload
HTTP-запит
PATCH /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/workloads/{name}
Параметри
name (в шляху): string, обовʼязково
назва Workload
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (Workload): OK
201 (Workload): Created
401: Unauthorized
delete видалення Workload
HTTP-запит
DELETE /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/workloads/{name}
Параметри
name (в шляху): string, обовʼязково
назва Workload
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection видалити колекцію Workload
HTTP-запит
DELETE /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/workloads
Параметри
namespace (в шляху): string, обовʼязково
body: DeleteOptions
continue (в запиті): string
dryRun (в запиті): string
fieldSelector (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
labelSelector (в запиті): string
limit (в запиті): integer
pretty (в запиті): string
propagationPolicy (в запиті): string
resourceVersion (в запиті): string
resourceVersionMatch (в запиті): string
sendInitialEvents (в запиті): boolean
shardSelector (в запиті): string
timeoutSeconds (в запиті): integer
Відповідь
200 (Status): OK
401: Unauthorized