>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Go

Jak przestać przepłacać za chmurę i zacząć żyć z Kubernetes Autoscaler

Wyobraź sobie taką sytuację: uruchomiłeś kampanię reklamową, ruch gwałtownie rośnie, a Twoje pody w Kubernetes zaczynają "dusić się" pod obciążeniem. Albo odwrotnie: zapada noc, użytkownicy śpią, ale dziesiątki kosztownych instancji nadal działają w chmurze, pochłaniając budżet firmy. Brzmi znajomo?

Zazwyczaj w takich momentach ludzie przypominają sobie o autoskalowaniu. W ekosystemie Kubernetes zajmuje się tym repozytorium kubernetes/autoscaler. To nie jest pojedyncze narzędzie, ale cały zestaw narzędzi, które pomagają klastrowi "oddychać" wraz z obciążeniem. Postanowiłem sprawdzić, co kryje się pod maską i dlaczego jest to must-have dla każdego środowiska produkcyjnego.

Co kryje się pod maską

W repozytorium znajdują się trzy główne komponenty. Każdy rozwiązuje swoje specyficzne zadanie i często są ze sobą mylone.

Cluster Autoscaler: gdy brakuje "żelaza"

To prawdopodobnie najpopularniejsze narzędzie w zestawie. Jego zadanie jest proste: jeśli w klastrze pojawią się pody, które nie mogą wystartować z powodu braku zasobów (status Pending), Cluster Autoscaler udaje się do dostawcy chmury i prosi o dodanie nowego węzła.

Działa to również w drugą stronę. Jeśli jakiś węzeł przez dłuższy czas jest w połowie pusty i jego pody mogą być bezpiecznie przeniesione na inne węzły, autoskaler usunie nadmiarowy sprzęt. To bezpośrednie oszczędności kosztów, zwłaszcza jeśli korzystasz z AWS, GCP lub Azure.

Vertical Pod Autoscaler (VPA): Magia dostrajania zasobów

Jeśli Cluster Autoscaler zmienia liczbę węzłów, to VPA zmienia "rozmiar" samych podów. Często programiści ustalają requests i limits na oko. Rezultatem jest albo aplikacja crashuje z OutOfMemory, albo rezerwujemy 2 GB RAM, podczas gdy potrzeba tylko 200 MB.

VPA monitoruje rzeczywiste zużycie zasobów i automatycznie dostosowuje limity. Projekt jest obecnie w statusie beta, ale już teraz robi coś naprawdę cool — tryb rekomendacji. Możesz po prostu obserwować, jakie zasoby sugeruje ustawić, bez powierzania mu automatycznego restartu podów.

Addon Resizer: Mikro-zarządzanie dla usług systemowych

To uproszczona wersja vertical autoscalera. Potrzebna jest dla usług, których zużycie zasobów skaluje się liniowo z rozmiarem klastra. Na przykład metrics server potrzebuje więcej pamięci, jeśli masz 100 węzłów zamiast 10. Addon Resizer monitoruje liczbę węzłów i odpowiednio skaluje takie pomocnicze komponenty.

Jak to działa w praktyce

Powiedzmy, że używasz Go. Aby zacząć pracować z kodem projektu lokalnie, musisz przestrzegać struktury ścieżek, do której przyzwyczaił się Kubernetes. Kod powinien znajdować się w k8s.io, a nie w github.com.

Ciekawe: Cluster Autoscaler obsługuje dziesiątki dostawców. Są tam nie tylko giganci jak AWS, ale także specyficzne rozwiązania dla bare-metal lub klastrów lokalnych. Jeśli budujesz własną usługę chmurową, będziesz musiał zaimplementować interfejs CloudProvider, a Twój klaster też nauczy się skalować.

Dlaczego to jest ważne dla programistów

Wielu myśli, że autoskalowanie to zadanie inżyniera DevOps. W rzeczywistości zrozumienie, jak działa vertical-pod-autoscaler, znacznie ułatwia życie programistom backendu.

  1. Możesz zapomnieć o zgadywaniu podczas konfigurowania zasobów.
  2. Aplikacje stają się bardziej odporne na nagłe skoki ruchu.
  3. Widzisz rzeczywisty profil zużycia pamięci i CPU swojego kodu.

Przy okazji, repozytorium zawiera oficjalne wykresy Helm do szybkiej instalacji. To znacznie wygodniejsze niż ręczne wdrażanie manifestów.

Czy warto wdrażać to od razu?

Jeśli pracujesz w chmurze i Twoje rachunki za infrastrukturę rosną, to Cluster Autoscaler to fundament. Zwróci czas poświęcony na konfigurację w pierwszym miesiącu działania.

Sytuacja z Vertical Pod Autoscaler jest bardziej skomplikowana. Ponieważ restartuje pody, aby zmienić zasoby (do czasu aż K8s dostanie właściwe in-place resource updates), należy go używać ostrożnie. Sugerowałbym zacząć od trybu Recommender. Otrzymasz listę wskazówek dotyczących optymalizacji zasobów, ale VPA niczego nie zmieni.

Projekt żyje i ma się dobrze, wspierany przez ogromną społeczność (prawie 9000 gwiazdek i tysiące forków). Jeśli masz pytania, ludzie są aktywni na kanale Kubernetes Slack #sig-autoscaling.

Więc jeśli Twój klaster wciąż jest statyczny — rzuć okiem na to repozytorium. Czas sprawić, by chmura pracowała dla Ciebie, nie przeciwko Tobie.

Powiązane projekty