PodGroup v1alpha2
apiVersion: scheduling.k8s.io/v1alpha2
import "k8s.io/api/scheduling/v1alpha2"
PodGroup
PodGroup представляє екземпляр виконання podʼів, згрупованих разом. PodGroups створюються контролерами робочих навантажень (Job, LWS, JobSet тощо) з Workload.podGroupTemplates. Увімкнення API PodGroup керується прапорцем функції GenericWorkload.
apiVersion: scheduling.k8s.io/v1alpha2
kind: PodGroup
metadata (ObjectMeta)
Стандартні метадані обʼєкта. Детальніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (PodGroupSpec), обовʼязково
Spec визначає бажаний стан PodGroup.
status (PodGroupStatus)
Status представляє поточний спостережуваний стан PodGroup.
PodGroupSpec
PodGroupSpec визначає бажаний стан PodGroup.
schedulingPolicy (PodGroupSchedulingPolicy), обовʼязково
SchedulingPolicy визначає політику планування для цього екземпляра PodGroup. Контролери очікують, що це поле буде заповнене шляхом копіювання його з PodGroupTemplate. Це поле є незмінним.
PodGroupSchedulingPolicy визначає конфігурацію планування для PodGroup. Має бути встановлено точно одну політику.
schedulingPolicy.basic (BasicSchedulingPolicy)
Basic визначає, що podʼи в цій групі повинні плануватися з використанням стандартної поведінки планування Kubernetes.
BasicSchedulingPolicy вказує, що слід використовувати стандартну поведінку планування Kubernetes.
schedulingPolicy.gang (GangSchedulingPolicy)
Gang визначає, що podʼи в цій групі повинні плануватися з використанням семантики "все або нічого".
GangSchedulingPolicy визначає параметри для групового планування.
schedulingPolicy.gang.minCount (int32), обовʼязково
MinCount визначає мінімальну кількість podʼів, які повинні бути заплановані або запущені одночасно, щоб планувальник дозволив всю групу. Це повинно бути додатне ціле число.
disruptionMode (string)
DisruptionMode визначає режим, у якому даний PodGroup може отримати розлад. Контролери очікують, що це поле буде заповнене шляхом копіювання його з PodGroupTemplate. Одне з Pod, PodGroup. Зазвичай — Pod, якщо не встановлено. Це поле є незмінним. Це поле доступне лише тоді, коли увімкнено функціональну можливість WorkloadAwarePreemption.
Можливі значення enum:
"Pod"означає, що окремі podʼи можуть отримати розлад або бути передані незалежно. Це не залежить від точного набору podʼів, які наразі працюють у цьому PodGroup."PodGroup"означає, що вся PodGroup має отримати розлад чи випередження разом.
podGroupTemplateRef (PodGroupTemplateReference)
PodGroupTemplateRef вказує на необов’язковий шаблон PodGroup у складі іншого об’єкта (наприклад, Workload), який було використано для створення PodGroup. Це поле є незмінним.
PodGroupTemplateReference вказує на шаблон PodGroup, визначений у деякому об'єкті (наприклад, Workload). Має бути встановлено точно одне посилання.
podGroupTemplateRef.workload (WorkloadPodGroupTemplateReference)
Workload вказує на PodGroupTemplate у складі обʼєкта Workload, який було використано для створення PodGroup.
WorkloadPodGroupTemplateReference вказує на PodGroupTemplate у складі обʼєкта Workload.
podGroupTemplateRef.workload.podGroupTemplateName (string), обовʼязково
PodGroupTemplateName визначає імʼя PodGroupTemplate у складі обʼєкта Workload.
podGroupTemplateRef.workload.workloadName (string), обовʼязково
WorkloadName визначає імʼя обʼєкта Workload.
priority (int32)
Priority є значенням пріоритету цієї групи podʼів. Різні системні компоненти використовують це поле для визначення пріоритету групи podʼів. Коли увімкнено контролер допуску пріоритету (Priority Admission Controller), він забороняє користувачам встановлювати це поле. Контролер допуску пріоритету заповнює це поле з PriorityClassName. Чим вище значення, тим вищий пріоритет. Це поле є незмінним. Це поле доступне лише тоді, коли увімкнено функціональну можливість WorkloadAwarePreemption.
priorityClassName (string)
PriorityClassName визначає пріоритет, який слід враховувати при плануванні цієї групи podʼів. Контролери очікують, що це поле буде заповнене шляхом копіювання його з PodGroupTemplate. Інакше воно перевіряється та розвʼязується аналогічно до PriorityClassName в PodGroupTemplate (тобто, якщо пріоритет класу не вказано, контролер допуску може встановити його на стандартний глобальний пріоритет, якщо він існує. Інакше пріоритет групи podʼів буде нульовим). Це поле є незмінним. Це поле доступне лише тоді, коли увімкнено функціональну можливість WorkloadAwarePreemption.
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.
resourceClaims.name (string), обовʼязково
Name унікально ідентифікує цю заявку на ресурс всередині PodGroup. Це повинно бути DNS_LABEL.
resourceClaims.resourceClaimName (string)
ResourceClaimName є імʼям обʼєкта ResourceClaim у тому ж просторі імен, що й цей PodGroup. ResourceClaim буде зарезервовано для PodGroup замість його окремих podʼів.
Необхідно вказати саме один із параметрів ResourceClaimName або ResourceClaimTemplateName.
resourceClaims.resourceClaimTemplateName (string)
ResourceClaimTemplateName є імʼям обʼєкта ResourceClaimTemplate у тому ж просторі імен, що й цей PodGroup.
Шаблон буде використаний для створення нового ResourceClaim, який буде привʼязаний до цієї PodGroup. Коли цей PodGroup буде видалено, ResourceClaim також буде видалено. Імʼя PodGroup та імʼя ресурсу разом із згенерованим компонентом будуть використані для формування унікального імені для ResourceClaim, яке буде записано в podgroup.status.resourceClaimStatuses.
Це поле є незмінним, і після створення ResourceClaim панель управління не вноситиме жодних змін до відповідного ResourceClaim.
Необхідно вказати саме один із параметрів ResourceClaimName або ResourceClaimTemplateName.
schedulingConstraints (PodGroupSchedulingConstraints)
SchedulingConstraints визначає необовʼязкові обмеження планування (наприклад, топологію) для цієї PodGroup. Контролери очікують заповнення цього поля шляхом копіювання його з PodGroupTemplate. Це поле є незмінним. Це поле доступне лише тоді, коли увімкнено функціональну можливість TopologyAwareWorkloadScheduling.
PodGroupSchedulingConstraints визначає обмеження планування (наприклад, топологію) для PodGroup.
schedulingConstraints.topology ([]TopologyConstraint)
Atomic: буде замінено під час злиття
Topology визначає обмеження топології для групи podʼів. Наразі можна вказати лише одне обмеження топології. Це може змінитися в майбутньому.
TopologyConstraint визначає обмеження топології для PodGroup.
schedulingConstraints.topology.key (string), обовʼязково
Key визначає ключ мітки вузла, що позначає домен топології. Усі поди у PodGroup повинні розміщуватися в одному й тому ж екземплярі домену. Різні PodGroup можуть розміщуватися в різних екземплярах домену, навіть якщо вони походять від одного й того ж PodGroupTemplate. Приклади: "topology.kubernetes.io/rack"
PodGroupStatus
PodGroupStatus представляє інформацію про стан групи podʼів.
conditions ([]Condition)
Patch strategy: обʼєднання за ключем
typeMap: унікальні значення за ключем type будуть збережені під час злиття
Conditions представляють останні спостереження за станом PodGroup.
Відомі типи станів:
- "PodGroupScheduled": Вказує, чи були задоволені вимоги до планування.
- "DisruptionTarget": Вказує, чи PodGroup буде завершено через порушення, наприклад, через передчасне завершення.
Відомі причини для стану PodGroupScheduled:
- "Unschedulable": PodGroup не може бути заплановано через обмеження ресурсів, правила спорідненості/антиспорідненості або недостатню ємність для групи.
- "SchedulerError": PodGroup не може бути заплановано через внутрішню помилку, яка сталася під час планування, наприклад через помилки розбору nodeAffinity.
Відомі причини для стану DisruptionTarget:
- "PreemptionByScheduler": PodGroup було передчасно завершено планувальником, щоб звільнити місце для PodGroup або Pod з вищим пріоритетом.
Обмеження Condition містить деталі щодо одного аспекту поточного стану цього ресурсу API.
conditions.lastTransitionTime (Time), обовʼязково
lastTransitionTime — це останній час, коли умова перейшла з одного стану в інший. Це має бути час, коли змінилася основна умова. Якщо це невідомо, можна використовувати час, коли змінилося поле API.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string), обовʼязково
message є зрозумілим для людини повідомленням, яке вказує деталі щодо переходу. Це може бути порожній рядок.
conditions.reason (string), обовʼязково
reason містить програмний ідентифікатор, який вказує причину останнього переходу стану. Виробники конкретних типів станів можуть визначати очікувані значення та значення для цього поля, а також чи вважаються ці значення гарантованим API. Значення повинно бути рядком у CamelCase. Це поле не може бути порожнім.
conditions.status (string), обовʼязково
status — статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
type — тип стану в форматі CamelCase або у форматі foo.example.com/CamelCase.
conditions.observedGeneration (int64)
observedGeneration представляє .metadata.generation, на основі якого було встановлен стан. Наприклад, якщо .metadata.generation наразі 12, але .status.conditions[x].observedGeneration дорівнює 9, стан застарів щодо поточного стану екземпляра.
resourceClaimStatuses ([]PodGroupResourceClaimStatus)
Patch strategies: retainKeys, обʼєднання за ключем
nameMap: унікальні значення за ключем name будуть збережені під час злиття
Status of resource claims.
PodGroupResourceClaimStatus зберігається в PodGroupStatus для кожного PodGroupResourceClaim, який посилається на ResourceClaimTemplate. Він зберігає згенероване імʼя для відповідного ResourceClaim.
resourceClaimStatuses.name (string), обовʼязково
Name унікально ідентифікує цей запит на ресурс всередині PodGroup. Значення повинно відповідати імені запису в podgroup.spec.resourceClaims, що означає, що рядок повинен бути DNS_LABEL.
resourceClaimStatuses.resourceClaimName (string)
ResourceClaimName — це імʼя ResourceClaim, яке було згенеровано для PodGroup у просторі імен PodGroup. Якщо це поле не встановлено, то генерація ResourceClaim не була необхідною. У цьому випадку запис podgroup.spec.resourceClaims можна ігнорувати.
PodGroupList
PodGroupList містить список ресурсів PodGroup.
apiVersion: scheduling.k8s.io/v1alpha2
kind: PodGroupList
metadata (ListMeta)
Стандартні метадані списку.
items ([]PodGroup), обовʼязково
Items — це список PodGroups.
Operations
get отримати вказану PodGroup
HTTP Запит
GET /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/podgroups/{name}
Параметри
name (в шляху): string, обовʼязково
name of the PodGroup
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (PodGroup): OK
401: Unauthorized
get отримати статус вказаної PodGroup
HTTP Запит
GET /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/podgroups/{name}/status
Параметри
name (в шляху): string, обовʼязково
name — імʼя PodGroup
namespace (в шляху): string, обовʼязково
pretty (в запиті): string
Відповідь
200 (PodGroup): OK
401: Unauthorized
list перелік або перегляд обʼєктів типу PodGroup
HTTP Запит
GET /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/podgroups
Параметри
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 (PodGroupList): OK
401: Unauthorized
list перелік або перегляд обʼєктів типу PodGroup
HTTP Запит
GET /apis/scheduling.k8s.io/v1alpha2/podgroups
Параметри
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 (PodGroupList): OK
401: Unauthorized
create створення PodGroup
HTTP Запит
POST /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/podgroups
Параметри
namespace (в шляху): string, обовʼязково
body: PodGroup, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodGroup): OK
201 (PodGroup): Created
202 (PodGroup): Accepted
401: Unauthorized
update заміна вказаної PodGroup
HTTP Запит
PUT /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/podgroups/{name}
Параметри
name (в шляху): string, обовʼязково
name of the PodGroup
namespace (в шляху): string, обовʼязково
body: PodGroup, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodGroup): OK
201 (PodGroup): Created
401: Unauthorized
update заміна статусу вказаної PodGroup
HTTP Запит
PUT /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/podgroups/{name}/status
Параметри
name (в шляху): string, обовʼязково
name of the PodGroup
namespace (в шляху): string, обовʼязково
body: PodGroup, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
pretty (в запиті): string
Відповідь
200 (PodGroup): OK
201 (PodGroup): Created
401: Unauthorized
patch часткове оновлення вказаної PodGroup
HTTP Запит
PATCH /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/podgroups/{name}
Параметри
name (в шляху): string, обовʼязково
name — імʼя PodGroup
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PodGroup): OK
201 (PodGroup): Created
401: Unauthorized
patch часткове оновлення статусу вказаної PodGroup
HTTP Запит
PATCH /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/podgroups/{name}/status
Параметри
name (в шляху): string, обовʼязково
name — імʼя PodGroup
namespace (в шляху): string, обовʼязково
body: Patch, обовʼязково
dryRun (в запиті): string
fieldManager (в запиті): string
fieldValidation (в запиті): string
force (в запиті): boolean
pretty (в запиті): string
Відповідь
200 (PodGroup): OK
201 (PodGroup): Created
401: Unauthorized
delete видалення PodGroup
HTTP Запит
DELETE /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/podgroups/{name}
Параметри
name (в шляху): string, обовʼязково
name — імʼя PodGroup
namespace (в шляху): string, обовʼязково
body: DeleteOptions
dryRun (в запиті): string
gracePeriodSeconds (в запиті): integer
ignoreStoreReadErrorWithClusterBreakingPotential (в запиті): boolean
pretty (в запиті): string
propagationPolicy (в запиті): string
Відповідь
200 (Status): OK
202 (Status): Accepted
401: Unauthorized
deletecollection видалення колекції PodGroup
HTTP Запит
DELETE /apis/scheduling.k8s.io/v1alpha2/namespaces/{namespace}/podgroups
Параметри
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