System Kubernetes uruchamia aplikacje w kontenerach w klastrze maszyn i utrzymuje je w stanie, który opisujesz. W tym celu należy umieścić pracę na odpowiednich maszynach, kierować ruch do odpowiednich miejsc oraz obserwować błędy i zmiany.
Podstawowy przepływ
1. Opisujesz, co chcesz uruchomić
Większość obciążeń w systemie Kubernetes powstaje w oparciu o zadeklarowany „stan pożądany” (co powinno działać, ile kopii oraz w jaki sposób powinny być udostępnione). Platforma Kubernetes jest oparta na deklaratywnej konfiguracji i automatyzacji.
2. Platforma Kubernetes decyduje, gdzie ma być uruchamiana
Platforma Kubernetes planuje kontenery na maszynach w klastrze na podstawie dostępnych zasobów obliczeniowych oraz wymagania poszczególnych kontenerów. Kontenery są uruchamiane wewnątrz zasobników, czyli jednostki, którą platforma Kubernetes umieszcza na maszynie.
3. Platforma Kubernetes sprawdza rzeczywistość w porównaniu z żądanym stanem
Kontrolery obserwują klaster i pracują nad przeniesieniem bieżącego stanu bliżej żądanego stanu przy użyciu serwera interfejsu API do wprowadzania zmian.
Planowanie kontenerów i codzienne zarządzanie nimi
Planowanie to pytanie: „Gdzie to powinno zostać uruchomione?” decyzja.
1. Zasobniki są zaplanowane, a nie poszczególne kontenery
Platforma Kubernetes grupuje kontenery w zasobniki, a następnie umieszcza te zasobniki na maszynach.
2. Harmonogram przypisuje zasobniki do odpowiedniego węzła
Narzędzie kube-scheduler wyszukuje zasobniki, które nie są jeszcze przypisane, i wybiera dla nich węzeł.
3. Agenci węzłów utrzymują działanie zasobników
W każdym węźle narzędzie kubelet zapewnia, że zasobniki są uruchomione (w tym ich kontenery).
Równoważenie obciążenia i odnajdywanie usług
Kontenery i zasobniki można tworzyć, przenosić lub zamieniać, więc aplikacje potrzebują stabilnych sposobów znajdowania siebie nawzajem.
Odnajdywanie usług i równoważenie obciążenia to wbudowane zachowania
Platforma Kubernetes zarządza odnajdywaniem usług i używa równoważenia obciążenia, dzięki czemu ruch może być kierowany nawet w miarę zmiany zasobników w czasie.
Usługi zapewniają stabilny adres dla zmieniającego się zestawu zasobników
Interfejs API usługi zapewnia stabilny adres IP lub nazwę hosta dla usługi wspieranej przez co najmniej jeden zasobnik, a platforma Kubernetes śledzi zasobniki zapasowe za pośrednictwem obiektów EndpointSlice.
Aktualizacje routingu ruchu w miarę zmiany zasobników
Gdy zasobniki za usługą ulegną zmianie, routing usługi dostosowuje się tak, aby ruch nadal docierał do bieżących zapleczy.
Skalowanie aplikacji (i dlaczego „stan pożądany” ma znaczenie)
Platforma Kubernetes może skalować obciążenia w kierunku ustawionego stanu, w tym skalowania na podstawie wykorzystania zasobów obliczeniowych.
Typowe pomysły dotyczące skalowania obejmują:
Więcej replik (więcej zasobników) do obsługi większego zapotrzebowania.
Mniej replik w przypadku spadku zapotrzebowania.
Śledzenie zasobów, dzięki czemu decyzje dotyczące umieszczania odzwierciedlają potrzeby procesora CPU i pamięci.
Wiąże się to z modelem „stanu pożądanego”: określasz cel, a kontrolery nieustannie dążą do jego osiągnięcia.
Samonaprawianie: co się dzieje, gdy coś się psuje
Platforma Kubernetes obejmuje samonaprawiające się zachowania mające na celu utrzymanie kondycji i dostępności obciążeń. Należą do nich:
Ponowne uruchamianie kontenerów zakończonych niepowodzeniem (ponowne uruchomienia na poziomie kontenera).
Zastępowanie zasobników, które zakończyły się niepowodzeniem w celu zachowania żądanej liczby replik (zamiana repliki).
Zmienianie harmonogramu obciążeń, gdy węzły stają się niedostępne.
Usuwanie zasobników zakończonych niepowodzeniem z punktów końcowych usługi, więc ruch jest kierowany tylko do zasobników w dobrej kondycji (równoważenie obciążenia dla usług).
Samonaprawianie sprawdza kondycję kontenera i uruchamia je ponownie lub replikuje w przypadku wystąpienia problemów.
Rola kluczowych wskaźników wydajności platformy Kubernetes
Kluczowe wskaźniki wydajności (kluczowe wskaźniki wydajności lub metryki) są używane do zrozumienia kondycji klastra i zachowania obciążenia.
Skąd biorą się wskaźniki KPI
Składniki systemu Kubernetes emitują metryki (format Prometheus), które są przydatne w przypadku pulpitów nawigacyjnych i alertów.
Metryki są zazwyczaj dostępne pod punktem końcowym HTTP /metrics danego składnika, w tym takich składników jak kube-apiserver, kube-scheduler, kubelet, kube-proxy oraz kube-controller-manager.
Przykłady kluczowych wskaźników wydajności, które ułatwiają wykrywanie
Sygnały kondycji klastra (metryki na poziomie składnika i wzorce błędów)
Stabilność obciążenia (na przykład częste ponowne uruchamianie lub zastępowanie)
Obciążenie pojemnością (alokacja zasobów a zapotrzebowanie powiązane z decyzjami dotyczącymi skalowania)
Dlaczego ma to znaczenie w codziennych operacjach
Monitorowanie zapewnia zespołom pełniejszy wgląd w zasoby klastra, interfejs API Kubernetes, kontenery i dzienniki, co skraca czas reakcji na zgłaszane problemy i wprowadzanie poprawek.