Middle
Czym są limity i zapytania w Kubernetes?
sobes.tech AI
Odpowiedź od AI
Limity (limits) i żądania (requests) w Kubernetes określają zużycie zasobów (CPU i pamięci) dla kontenerów.
requests: Minimalna gwarantowana ilość zasobów, którą kontener będzie próbował używać. Planista Kubernetes uwzględnia żądania przy rozdzielaniu podów na węzły, aby zapewnić dostępność deklarowanych zasobów.limits: Maksymalna ilość zasobów, którą kontener może używać. Jeśli kontener spróbuje przekroczyć limit pamięci, zostanie zakończony (OOMKilled). Przekroczenie limitu CPU ogranicza jego wydajność, ale nie powoduje zakończenia.
Przykład w specyfikacji poda:
# Specyfikacja kontenera
containers:
- name: my-app
image: my-image
resources:
requests:
memory: "64Mi" # Żąda 64 megabajtów pamięci
cpu: "250m" # Żąda 0,25 rdzenia CPU (250 milicore)
limits:
memory: "128Mi" # Limit 128 megabajtów pamięci
cpu: "500m" # Limit 0,5 rdzenia CPU (500 milicore)
Jednostki miary:
- CPU: W millicore (
m). 1000m = 1 rdzeń. - Pamięć: W bajtach (B, kB, MB, GB, Ti, Pi...), najlepiej używać potęg dwójki (Ki, Mi, Gi, Ti, Pi...).
Znaczenie:
- Planowanie: Requests pomagają Kubernetes efektywnie rozdzielać pody na węzłach, zapobiegając przeciążeniom.
- Stabilność: Limits zapobiegają monopolizacji zasobów przez pojedynczy pod, zwiększając stabilność klastra.
- Zarządzanie kosztami: Pozwalają oszacować i kontrolować zużycie zasobów, wpływając na koszty chmury.
Bez określenia limitów i żądań, kontenery mogą uzyskać nieograniczone zasoby, co może prowadzić do niestabilności węzłów i całego klastra przy dużym obciążeniu.