DevOps Bootcamp · Lekcja

Priorytet Podów i wywłaszczanie

Dowiedz się, jak PriorityClass nadaje Podom priorytety oraz jak harmonogramista może wywłaszczać Pody o niższym priorytecie, aby zrobić miejsce dla krytycznych obciążeń.

Lekcja 4 z 413 kroki

Priorytet Podów i wywłaszczanie to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Nie wszystkie Pody są sobie równe

Gdy klaster jest pełny, niektóre obciążenia są ważniejsze od innych. Priorytet Poda pozwala wskazać Kubernetesowi, które Pody powinny wygrać rywalizację o zasoby.

Czym jest PriorityClass

PriorityClass to obiekt obowiązujący w całym klastrze, który przypisuje nazwie wartość całkowitą. Wyższe liczby oznaczają wyższy priorytet.

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-priority
value: 1000000
globalDefault: false
description: 'For critical production workloads'

Przypisywanie priorytetu Podowi

Pod wybiera klasę za pomocą priorityClassName. Scheduler odczytuje wartość liczbową ze wskazanej klasy.

apiVersion: v1
kind: Pod
metadata:
  name: critical-app
spec:
  priorityClassName: high-priority
  containers:
  - name: app
    image: myapp:1.0

Jak priorytet wpływa na planowanie

Gdy kilka Podów oczekuje na uruchomienie, scheduler próbuje najpierw umieścić Pody o wyższym priorytecie. Priorytet wpływa na kolejność, w której Pody są planowane.

Czym jest wywłaszczanie

Jeśli Pod o wysokim priorytecie nie może zostać zaplanowany, ponieważ klaster jest pełny, scheduler może wywłaszczyć (usunąć) Pody o niższym priorytecie, aby zwolnić miejsce.

Usunięte Pody wracają do stanu Pending i mogą zostać zaplanowane w innym miejscu.

Wywłaszczanie w praktyce

Wyobraź sobie, że węzeł jest pełny Podów o priorytecie 100 i pojawia się Pod o priorytecie 1000000. Scheduler może usunąć wystarczającą liczbę Podów o niskim priorytecie, aby zrobić miejsce dla tego krytycznego.

kubectl get events --field-selector reason=Preempted
# Pod default/batch-job was preempted by critical-app

Wyłączanie wywłaszczania

PriorityClass może zrezygnować z wywłaszczania innych Podów za pomocą preemptionPolicy: Never. Takie Pody nadal są planowane według kolejności priorytetów, ale nie usuną żadnego innego Poda.

apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: high-no-preempt
value: 1000000
preemptionPolicy: Never

Domyślna klasa globalna

Ustawienie globalDefault: true w PriorityClass powoduje zastosowanie jej wartości do każdego Poda, który nie określa własnego priorytetu. Tylko jedna klasa może być globalną klasą domyślną.

Wbudowane klasy systemowe

Kubernetes zawiera zarezerwowane klasy, takie jak system-cluster-critical i system-node-critical, przeznaczone dla niezbędnych komponentów. Nie należy używać ich ponownie dla własnych aplikacji.

kubectl get priorityclass
# system-node-critical     2000001000
# system-cluster-critical  2000000000

Najlepsze praktyki

  • Zdefiniuj niewielką liczbę jasnych poziomów, na przykład critical, normal i batch
  • Rezerwuj wywłaszczanie dla naprawdę ważnych obciążeń
  • Połącz je z żądaniami zasobów, aby decyzje dotyczące planowania były trafne
  • Unikaj nadawania wszystkiemu wysokiego priorytetu, ponieważ podważa to sens całego mechanizmu

Priorytet a QoS

Priorytet steruje planowaniem i wywłaszczaniem. Klasy jakości usług (wynikające z żądań i limitów) sterują usuwaniem Podów pod presją zasobów węzła. Są to powiązane, ale odrębne mechanizmy.

Szybkie sprawdzenie

Sprawdź swoje rozumienie wywłaszczania.

Podsumowanie

Dowiedziałeś się, że PriorityClass szereguje Pody według wartości całkowitej, wpływając na kolejność planowania. Wywłaszczanie pozwala krytycznym Podom usuwać Pody o niższym priorytecie, gdy klaster jest pełny. Używaj kilku jasnych poziomów i łącz priorytet z dokładnymi żądaniami zasobów.

Bezpłatny start

Ucz się DevOps Bootcamp dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
142
Lekcje
568

Często zadawane pytania

Czy lekcja „Priorytet Podów i wywłaszczanie” jest bezpłatna?

Tak — pełny tekst „Priorytet Podów i wywłaszczanie” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Co nauczysz się w „Priorytet Podów i wywłaszczanie”?

Dowiedz się, jak PriorityClass nadaje Podom priorytety oraz jak harmonogramista może wywłaszczać Pody o niższym priorytecie, aby zrobić miejsce dla krytycznych obciążeń. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?

Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Priorytet Podów i wywłaszczanie”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?

Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Żądania zasobów i limity
  2. Selektory węzłów i powinowactwo
  3. Skażenia i tolerancje
  4. Priorytet Podów i wywłaszczanie
← Powrót do DevOps Bootcamp