Skip to content

Czym jest mechanizm Priority Class w Kubernetes?

Polega to na tym, że nadajemy priorytet uruchomionym usługom. Czym większy priorytet, tym bardziej zależy Schedulerowi, aby aplikacja była uruchomiona. Priorytet ustalany jest w zakresie 1,000,000,000 do -2,147,473,648, im większa wartość, tym wyższy priorytet.

W momencie, gdy jest niewiele zasobów, a wdrażana jest aplikacja z wyższym priorytetem, te z niższym mogą być killowane przez Scheduler.

Info

Zasoby systemowe/Control Plane Kubernetes typu API Server mają priorytety w zakresie 1kkk do 2kkk.

Jak sprawdzić istniejące Priority Classes?

Sprawdzamy je z użyciem kubectl:

kubectl get priorityclass

lub:

kubectl get ps

Czym jest Priority Class Default?

Jest to domyślna Priority Class w klastrze Kubernetes. Może być tylko jedna. Jeśli już jest stworzona, nie można jej nadpisać.

Jej zadaniem jest przypisywanie priorytetu każdemu nowo tworzonemu Podowi.

Definiujemy ją w manifeście nowo tworzonej Priority Class, w polu globalDefault dając mu wartość true.

Definicja Default Priority Class

Nazwa Priority Class to default-priority, z wartością priorytetu 100000.

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: default-priority
value: 100000
globalDefault: false
description: "Testowy opis"
preemptionPolicy: PreemptLowerPriority