Limity zasobów i zakresy limitów
Zapobiegaj problemom powodowanym przez głośnych sąsiadów oraz niekontrolowanym obciążeniom, wymuszając ResourceQuotas na poziomie przestrzeni nazw i LimitRanges dla poszczególnych Podów.
Limity zasobów i zakresy limitów 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.
Zabezpieczenia dla współdzielonych klastrów
We współdzielonym klastrze jeden zespół może przypadkowo zużyć wszystkie zasoby. ResourceQuota i LimitRange to zabezpieczenia, które pomagają zachować sprawiedliwy podział między przestrzeniami nazw i zapobiegają awariom.
Czym jest ResourceQuota
ResourceQuota ogranicza łączną ilość zasobów, które może zużyć przestrzeń nazw: procesora, pamięci oraz liczby obiektów, takich jak Pody lub Services.
Limit zasobów obliczeniowych
Ten limit ogranicza sumę żądań i limitów wszystkich Podów w przestrzeni nazw.
apiVersion: v1
kind: ResourceQuota
metadata:
name: team-compute
namespace: team-a
spec:
hard:
requests.cpu: '4'
requests.memory: 8Gi
limits.cpu: '8'
limits.memory: 16GiLimity liczby obiektów
Limity mogą również ograniczać liczbę obiektów każdego typu, zapobiegając ich niekontrolowanemu przyrostowi.
spec:
hard:
pods: '20'
services: '5'
persistentvolumeclaims: '10'Zasada egzekwowania limitu
Gdy zostanie ustawiony ResourceQuota dla zasobów obliczeniowych, każdy Pod musi deklarować requests i limits, w przeciwnym razie zostanie odrzucony. Limit nie może uwzględniać Podów bez określonych ograniczeń.
Sprawdzanie wykorzystania limitu
Należy sprawdzać, jaka część limitu jest w danej chwili wykorzystana.
kubectl describe resourcequota team-compute -n team-a
# Resource Used Hard
# requests.cpu 2 4
# requests.memory 3Gi 8GiCzym jest LimitRange?
LimitRange stosuje wartości domyślne i ograniczenia dla poszczególnych obiektów w przestrzeni nazw, dzięki czemu poszczególne Pody są ograniczone nawet wtedy, gdy programista zapomni ustawić wartości.
Wartości domyślne i ograniczenia
LimitRange może wstawiać domyślne requests/limits oraz wymuszać wartości min/max dla każdego kontenera.
apiVersion: v1
kind: LimitRange
metadata:
name: container-limits
namespace: team-a
spec:
limits:
- type: Container
default:
cpu: 500m
memory: 256Mi
defaultRequest:
cpu: 250m
memory: 128Mi
max:
cpu: '2'
memory: 1GiJak współdziałają
LimitRange uzupełnia wartości domyślne dla każdego kontenera, a następnie ResourceQuota sumuje wszystkie wartości w ramach limitu przestrzeni nazw. Razem zapewniają zarówno rozsądne rozmiary poszczególnych Podów, jak i sprawiedliwy łączny limit przestrzeni nazw.
Rozwiązywanie problemów z odrzuceniami
Jeśli Pod zostanie odrzucony, komunikat błędu wskaże naruszoną zasadę. Należy przeczytać go uważnie: informuje, czy przekroczono limit, czy naruszono ograniczenie LimitRange.
# exceeded quota: team-compute, requested: requests.cpu=2, used: 3, limited: 4
# maximum cpu usage per Container is 2, but limit is 4Wskazówki dotyczące środowiska produkcyjnego
- Należy ustawić LimitRange, aby brak requests nie powodował naruszenia limitu
- Limity należy określać na podstawie rzeczywistego użycia, pozostawiając zapas na nagłe wzrosty obciążenia
- Należy regularnie sprawdzać wykorzystanie i dostosowywać limity w miarę rozwoju zespołów
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat zabezpieczeń przestrzeni nazw.
Podsumowanie
Nauczyłeś się zapewniać sprawiedliwy podział zasobów za pomocą ResourceQuotas (limitów obejmujących całą przestrzeń nazw, dotyczących zasobów obliczeniowych i liczby obiektów) oraz LimitRanges (wartości domyślnych i ograniczeń dla kontenerów). Stosowane razem, zapobiegają problemom z nadmiernym wykorzystaniem zasobów przez jednego użytkownika i pomagają utrzymać stabilność współdzielonych klastrów, co jest kluczową praktyką w środowisku produkcyjnym.
Ucz się Kubernetes Basics 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
- 12
- Lekcje
- 48
Często zadawane pytania
Czy lekcja „Limity zasobów i zakresy limitów” jest bezpłatna?
Tak — pełny tekst „Limity zasobów i zakresy limitów” 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 „Limity zasobów i zakresy limitów”?
Zapobiegaj problemom powodowanym przez głośnych sąsiadów oraz niekontrolowanym obciążeniom, wymuszając ResourceQuotas na poziomie przestrzeni nazw i LimitRanges dla poszczególnych Podów. Ć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 „Limity zasobów i zakresy limitów”?
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
- Diagnozowanie typowych problemów
- Debugowanie Podów i Services
- Najlepsze praktyki i wskazówki produkcyjne
- Limity zasobów i zakresy limitów