0Pricing
Kubernetes Basics · 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ń.

Priorytet Podów i wywłaszczanie to bezpłatna lekcja Kubernetes Basics 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 Kubernetes Basics, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kubernetes Basics 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.

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 Kubernetes Basics, przejdź na CoddyKit PRO. Kurs Kubernetes Basics 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 Kubernetes Basics 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ąć Kubernetes Basics?

Nie wymagamy żadnego doświadczenia. Kubernetes Basics 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 Kubernetes Basics?

Tak. Każda lekcja Kubernetes Basics 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 Kubernetes Basics