Sobes.tech
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.