Żądania zasobów i limity
Definiuj żądania zasobów CPU i pamięci oraz ich limity dla Podów, aby zapewnić efektywny przydział zasobów i zapobiegać ich wyczerpaniu.
Żądania zasobów i limity to bezpłatna lekcja Kubernetes Basics na CoddyKit. To lekcja 1 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.
Zapotrzebowanie na zasoby w Kubernetes
Tak jak każda aplikacja, Pody potrzebują zasobów do działania. Kubernetes pomaga efektywnie nimi zarządzać za pomocą żądań zasobów i limitów zasobów.
Ustawienia te informują Kubernetes, ile procesora i pamięci potrzebują Pody oraz ile mogą maksymalnie wykorzystać, zapewniając sprawiedliwy podział zasobów.
Żądania CPU: gwarantowanie procesora
Żądanie CPU informuje Kubernetes o minimalnej ilości procesora potrzebnej Podowi do komfortowego działania. To gwarancja!
- Kubernetes używa żądań do planowania Podów na węzłach z wystarczającą ilością dostępnych zasobów.
- Jeśli węzeł nie ma wystarczającej ilości CPU na spełnienie żądania, Pod nie zostanie na nim zaplanowany.
- Pomaga to zapobiegać wyczerpywaniu zasobów potrzebnych aplikacjom o kluczowym znaczeniu.
Jednostki CPU i przykład żądania
CPU mierzy się w „rdzeniach” lub „millicores” (m). 1000m odpowiada 1 rdzeniowi CPU. Zatem 500m to połowa rdzenia.
Oto sposób zażądania 0,5 rdzenia CPU w definicji Poda:
apiVersion: v1
kind: Pod
metadata:
name: cpu-request-pod
spec:
containers:
- name: my-container
image: nginx
resources:
requests:
cpu: "500m"Limity CPU: zapobieganie nadmiernemu użyciu
Limit CPU określa maksymalną ilość procesora, jaką może wykorzystać Pod. To górne ograniczenie.
- Jeśli Pod spróbuje użyć większej ilości CPU niż określona w limicie, Kubernetes go ograniczy.
- Oznacza to, że użycie CPU przez Poda zostanie ograniczone, co zapobiegnie przejęciu zasobów innych Podów na tym samym węźle.
Limit CPU w praktyce
Oto przykład ustawienia limitu CPU. Jeśli ten Pod spróbuje użyć więcej niż 1 rdzenia CPU, zostanie ograniczony, co oznacza spadek jego wydajności.
apiVersion: v1
kind: Pod
metadata:
name: cpu-limit-pod
spec:
containers:
- name: my-container
image: nginx
resources:
limits:
cpu: "1"Żądania pamięci: gwarantowanie RAM
Podobnie jak CPU, żądanie pamięci określa minimalną ilość pamięci RAM potrzebną Podowi do działania.
- Kubernetes używa tej wartości, aby znaleźć węzeł z wystarczającą ilością wolnej pamięci dla Poda.
- Gdy w węźle zabraknie pamięci, Pody bez określonych żądań często są jako pierwsze kończone (usuwane z węzła), aby zwolnić miejsce.
Jednostki pamięci i przykład żądania
Pamięć jest mierzona w bajtach. Typowe jednostki to Mi (mebibajty) i Gi (gibibajty).
100Mi oznacza 100 mebibajtów. Oto jak zażądać 256 MiB pamięci:
apiVersion: v1
kind: Pod
metadata:
name: mem-request-pod
spec:
containers:
- name: my-container
image: nginx
resources:
requests:
memory: "256Mi"Limity pamięci: unikanie OOM
Limit pamięci określa maksymalną ilość pamięci, jaką może zużyć Pod.
- Jeśli Pod przekroczy limit pamięci, system operacyjny natychmiast go zakończy, zgłaszając błąd „Out Of Memory” (OOM). Często jest to widoczne jako „OOMKilled”.
- Zapobiega to sytuacji, w której pojedynczy niekontrolowany Pod zużywa całą pamięć węzła i powoduje awarię całego węzła.
Limit pamięci w praktyce
Ten Pod ma limit pamięci wynoszący 512 MiB. Jeśli spróbuje użyć większej ilości, zostanie zakończony (OOMKilled), aby chronić inne obciążenia i węzeł.
apiVersion: v1
kind: Pod
metadata:
name: mem-limit-pod
spec:
containers:
- name: my-container
image: nginx
resources:
limits:
memory: "512Mi"Dobre praktyki: żądania i limity
Dobrą praktyką jest definiowanie zarówno żądań, jak i limitów dla wszystkich Podów. Zapewnia to stabilność i przewidywalność klastra.
- Żądania gwarantują Podom minimalne zasoby potrzebne do planowania.
- Limity zapobiegają pozbawieniu innych Podów i samego węzła dostępu do zasobów.
Oto kompletny przykład:
apiVersion: v1
kind: Pod
metadata:
name: full-resource-pod
spec:
containers:
- name: my-app
image: my-registry/my-app:1.0
resources:
requests:
cpu: "200m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"Sprawdzanie zasobów
Zdefiniowano Pod z żądaniem CPU o wartości 200m oraz limitem CPU o wartości 1 (czyli 1000m).
Co się stanie, jeśli ten Pod spróbuje użyć 1.5 rdzenia CPU?
Podsumowanie: zarządzanie zasobami
W tej lekcji omówiliśmy żądania zasobów i limity zasobów w Kubernetes.
- Żądania (CPU i pamięć) gwarantują minimalne zasoby potrzebne do planowania Podów.
- Limity (CPU i pamięć) ograniczają maksymalne użycie, aby zapobiegać rywalizacji o zasoby.
- Przekroczenie limitów CPU prowadzi do ograniczania przepustowości, a przekroczenie limitów pamięci — do zakończenia Poda (OOMKilled).
- Zawsze definiuj zarówno żądania, jak i limity, aby zapewnić stabilne i przewidywalne działanie aplikacji!
Często zadawane pytania
Czy lekcja „Żądania zasobów i limity” jest bezpłatna?
Tak — pełny tekst „Żądania zasobów i limity” 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 „Żądania zasobów i limity”?
Definiuj żądania zasobów CPU i pamięci oraz ich limity dla Podów, aby zapewnić efektywny przydział zasobów i zapobiegać ich wyczerpaniu. Ć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 1 z 4.
Ile czasu zajmuje lekcja „Żądania zasobów i limity”?
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
- Żądania zasobów i limity
- Selektory węzłów i powinowactwo
- Skażenia i tolerancje
- Priorytet Podów i wywłaszczanie