Kubernetes zapewnia różne sposoby kontrolowania liczby zasobów, które mogą konsumować poszczególne kontenery. Jednym z ważnych sposobów ograniczenia liczby zasobów wykorzystywanych przez poszczególnych kontenerów są ograniczenia szybkości zdarzenia. W tym artykule opisano limity częstości zdarzeń i sposób korzystania z tej funkcji, aby ograniczyć zużycie zasobów dla aplikacji działających na Kubernetes.
Jaki jest limit szybkości zdarzeń w Kubernetes?
Limity szybkości zdarzenia to sposób kontrolowania szybkości, z jaką kapsuły aplikacji mogą konsumować dodatkowy procesor i pamięć w klastrze. Na przykład, jeśli żądanie wysyłania danych do Usługi dostanie się zbyt szybko do zaplecza (e.G., Dziesięć żądań na sekundę), ogranicznik stawki zablokuje żądanie do czasu przetworzenia poprzedniego żądania. Jeśli któryś z twoich kapsułek spróbuje przekroczyć ten limit, żądając więcej niż trzech żądań na sekundę, zostanie on odrzucony. Umożliwia to płynne działanie aplikacji, nawet gdy wiele wystąpień tej samej aplikacji działa jednocześnie, bez zużywania nadmiernych ilości zasobów z klastra. Możesz skonfigurować limity szybkości dla przestrzeni nazw, użytkownika, serwera i obiektu źródłowego+.
Dlaczego warto korzystać z limitu szybkości zdarzeń?
Oto powody, dla których lepiej skorzystać z limitu stawki zdarzenia:
Kontroluje szybkość, z jaką zdarzenia są emitowane z twoich węzłów
Jest to ważne dla kontrolowania szybkości, z jaką zdarzenia są emitowane z twoich węzłów. Szybkość wysyłania zdarzeń do K8s jest zmienna, w zależności od obciążenia, który narzucasz na swój klaster. Każde nieprawidłowe zdarzenie może spowodować nieoczekiwane obciążenia na podstawowych elementach infrastruktury i zwiększyć wykorzystanie procesora w węzłach głównych. Na przykład, jeśli węzeł ma wysokie obciążenie z powodu nieoczekiwanego skoku w ruchu, może wytworzyć nadmierną liczbę zdarzeń, które mogą wpłynąć na wydajność klastra. Dlatego ważne jest skonfigurowanie progu na szybkość zdarzeń, które klaster może przetworzyć, aby zapobiec przeciążeniu.
Zastanów się nad następującym scenariuszem: masz flotę pięćdziesięciu strąków działających w klastrze, a każdy z nich emituje średnio jedno zdarzenie na sekundę. W tym scenariuszu wskazane byłoby skonfigurowanie wskaźnika zdarzeń mniejszej niż tysiąc zdarzeń na minutę, aby zapobiec przeciążeniu klastra i nie reagowaniu.
Będziesz miał kontrolę nad liczbą strąków, które można utworzyć
Chcesz kontrolować liczbę strąków, które można utworzyć lub zwolnić w dowolnym momencie. Może to być potrzebne do skutecznego zarządzania obciążeniem w całym klastrze i uniknięcia problemów związanych z przeciążeniem i kwestiami dotyczącymi zasobów.
Zapobiega przytłoczeniu zasobów dostępnych dla aplikacji
Chcesz ograniczyć tempo zdarzeń pochodzących z jednej aplikacji, aby zapobiec dostępnym zasobom tej aplikacji. Załóżmy na przykład, że aplikacja do przesyłania strumieniowego miała generować wiele zdarzeń co sekundę. W takim przypadku może to przytłoczyć zasoby przydzielone do niego i spowodować, że system działał wolniej lub wykonywałby bardziej niż w innym przypadku. W szczególności zapewniają, że procesor i pamięć, zasoby krytyczne i pozostają energetyzowane przez wystarczającą ilość zasobów w krótkim czasie.
Zapewnia, że aplikacja spełnia oczekiwane wymagania dotyczące wydajności
Chcesz ustalić minimalny limit liczby zasobów, których używa określona aplikacja, aby zapewnić, że spełnia oczekiwane wymagania dotyczące wydajności przez cały czas. Załóżmy na przykład, że aplikacja ma określony alokacja procesora i pamięci RAM, której musi użyć do prawidłowego funkcjonowania. W takim przypadku powinieneś upewnić się, że próbuje tylko przydzielić więcej zasobów niż dostępny.
Można uniknąć niepotrzebnych powiadomień
Administratorzy mogą uniknąć powodzi infrastruktury niepotrzebnymi powiadomieniami, ograniczając liczbę wygenerowanych zdarzeń.
Pomoże ci chronić środowisko produkcyjne przed nadmiernym zatłoczeniem sieci
Umożliwienie ograniczania częstości zdarzeń pomoże chronić środowisko produkcyjne przed nadmiernym zatłoczeniem sieci i uniemożliwi użytkownikom nieoczekiwane przestoje z powodu przeciążonych węzłów lub nieprawidłowych komponentów. Pozwoli ci to również szybko zidentyfikować wąskie gardła i problemy z wydajnością, abyś mógł je rozwiązać, zanim spowodują poważne uszkodzenie systemu. W przypadku organizacji z wymogami zgodności, takimi jak PCI-DSS, włączenie ograniczania szybkości zdarzeń jest absolutną koniecznością, jeśli chcesz upewnić się, że dane dotyczące aplikacji są bezpieczne przez cały czas.
Jak skonfigurować limit szybkości zdarzeń?
Istnieje kilka sposobów włączenia limitu szybkości zdarzeń w Kubernetes. Najprostszym sposobem jest użycie wspomnianego tutaj ustawienia konfiguracji limitów.
Powinieneś utworzyć nowy plik konfiguracyjny o nazwie limity lub jakakolwiek nazwa, z jaką jesteś w porządku. Po utworzeniu YAML w katalogu klastra dodaj następujące treści:
"
Yamlkind: Limitrange
min: „1”
Max: „3”
To określa zakres lub minimum i maksymalną liczbę kapsułów, które mogą działać w danym momencie. Wartość 1 jest ustawiona na „min”, a wartość 3 jest ustawiona na „maks.”.
Po dodaniu następującej zawartości zastosuj ją za pośrednictwem interfejsu API. Możesz także wykonać następujące działanie w pliku konfiguracyjnym, aby włączyć limit szybkości zdarzeń:
Usługi:
event_rate_limit:
Włączone: prawda
Kube-api:
W powyższym tekście można zobaczyć, że opcja „włączona” jest ustawiona na true.
Możesz także sprawdzić, aby zobaczyć wartości domyślne w/etc/kubernetes/[Configuration_file_name].YAML po włączeniu wskaźnika zdarzeń:
…
Wtyczki:
- konfiguracja:
APIVERSION: EventRateLimit.wstęp.K8s.IO/v1alpha1
rodzaj: konfiguracja
Limity:
- Burst: 20000
QPS: 5000
Typ: serwer
…
Musisz podać cały zasób Kubernetes do ustawienia w dyrektywie konfiguracji, jeśli chcesz zmienić limit szybkości zdarzeń:
Usługi:
Kube-api:
event_rate_limit:
Włączone: prawda
konfiguracja:
APIVERSION: EventRateLimit.wstęp.K8s.IO/v1alpha1
rodzaj: konfiguracja
Limity:
- Typ: serwer
QPS: 8000
Burst: 40000
Wniosek
Limit szybkości zdarzeń jest silnym narzędziem, którego administratorzy Kubernetes mogą użyć do ograniczenia objętości zdarzeń wytwarzanych przez ich węzły. Możesz ograniczyć liczbę zapytań, które są przez użytkownika zewnętrznego, które mogą zrobić do klastra, ograniczając liczbę utworzonych zdarzeń. W tym artykule omówiono o wiele więcej korzyści z umożliwienia ograniczeń zdarzeń Kubernetes i wskazuje, dlaczego powinieneś włączyć limity częstości zdarzeń i jak je włączyć.