Najlepsze rozwiązania dotyczące podstawowych funkcji harmonogramu w usłudze Azure Kubernetes Service (AKS)
Podczas zarządzania klastrami w usłudze Azure Kubernetes Service (AKS) często trzeba odizolować zespoły i obciążenia. Harmonogram platformy Kubernetes umożliwia kontrolowanie dystrybucji zasobów obliczeniowych lub ograniczanie wpływu zdarzeń konserwacji.
Ten artykuł dotyczący najlepszych rozwiązań koncentruje się na podstawowych funkcjach planowania platformy Kubernetes dla operatorów klastra. W tym artykule omówiono sposób wykonywania następujących zadań:
- Używanie przydziałów zasobów w celu zapewnienia stałej ilości zasobów zespołom lub obciążeniom
- Ograniczanie wpływu zaplanowanej konserwacji przy użyciu budżetów zakłóceń zasobników
Wymuszanie przydziałów zasobów
Wskazówki dotyczące najlepszych rozwiązań
Planowanie i stosowanie przydziałów zasobów na poziomie przestrzeni nazw. Jeśli zasobniki nie definiują żądań zasobów i limitów, odrzuć wdrożenie. Monitoruj użycie zasobów i dostosuj limity przydziału zgodnie z potrzebami.
Żądania zasobów i limity są umieszczane w specyfikacji zasobnika. Żądania są używane przez harmonogram kubernetes w czasie wdrażania w celu znalezienia dostępnego węzła w klastrze. Limity i żądania działają na poziomie poszczególnych zasobników. Aby uzyskać więcej informacji na temat definiowania tych wartości, zobacz Definiowanie żądań zasobów zasobników i limitów.
Aby zapewnić sposób zarezerwowania i ograniczenia zasobów w zespole deweloperów lub projekcie, należy użyć limitów przydziału zasobów. Te przydziały są definiowane w przestrzeni nazw i mogą służyć do ustawiania przydziałów na następującej podstawie:
- Zasoby obliczeniowe, takie jak procesor CPU i pamięć, lub procesory GPU.
- Zasoby magazynu, w tym łączna liczba woluminów lub ilość miejsca na dysku dla danej klasy magazynu.
- Można utworzyć maksymalną liczbę wpisów tajnych, usług lub zadań.
Platforma Kubernetes nie zatwierdza zasobów. Gdy łączna łączna liczba żądań zasobów przejdzie przydzielony limit przydziału, wszystkie kolejne wdrożenia nie powiedzą się.
Podczas definiowania przydziałów zasobów wszystkie zasobniki utworzone w przestrzeni nazw muszą zapewniać limity lub żądania w specyfikacji zasobnika. Jeśli te wartości nie zostaną podane, możesz odrzucić wdrożenie. Zamiast tego można skonfigurować domyślne żądania i limity dla przestrzeni nazw.
Poniższy przykładowy manifest YAML o nazwie dev-app-team-quotas.yaml ustawia twardy limit całkowitej liczby 10 procesorów CPU, 20Gi pamięci i 10 zasobników:
apiVersion: v1
kind: ResourceQuota
metadata:
name: dev-app-team
spec:
hard:
cpu: "10"
memory: 20Gi
pods: "10"
Ten limit przydziału zasobów można zastosować, określając przestrzeń nazw, taką jak aplikacje deweloperskie:
kubectl apply -f dev-app-team-quotas.yaml --namespace dev-apps
Skontaktuj się z deweloperami i właścicielami aplikacji, aby zrozumieć ich potrzeby i zastosować odpowiednie limity przydziału zasobów.
Aby uzyskać więcej informacji na temat dostępnych obiektów zasobów, zakresów i priorytetów, zobacz Limity przydziału zasobów na platformie Kubernetes.
Planowanie dostępności przy użyciu budżetów zakłóceń zasobników
Wskazówki dotyczące najlepszych rozwiązań
Aby zachować dostępność aplikacji, zdefiniuj budżety zakłóceń zasobników (PDB), aby upewnić się, że w klastrze jest dostępna minimalna liczba zasobników.
Istnieją dwa zdarzenia powodujące zakłócenia, które powodują usunięcie zasobników:
Mimowolne zakłócenia
Mimowolne zakłócenia to zdarzenia wykraczające poza typową kontrolę operatora klastra lub właściciela aplikacji. Zawierać:
- Awaria sprzętowa na maszynie fizycznej
- Panika jądra
- Usuwanie maszyny wirtualnej węzła
Mimowolne zakłócenia mogą być ograniczane przez:
- Używanie wielu replik zasobników we wdrożeniu.
- Uruchamianie wielu węzłów w klastrze usługi AKS.
Dobrowolne zakłócenia
Dobrowolne zakłócenia to zdarzenia żądane przez operatora klastra lub właściciela aplikacji. Zawierać:
- Uaktualnienia klastra
- Zaktualizowany szablon wdrożenia
- Przypadkowe usunięcie zasobnika
Platforma Kubernetes zapewnia budżety na zakłócenia zasobników w przypadku dobrowolnych zakłóceń, umożliwiając planowanie sposobu reagowania wdrożeń lub zestawów replik w przypadku wystąpienia dobrowolnego zdarzenia zakłóceń. Korzystając z budżetów zakłóceń zasobników, operatorzy klastrów mogą zdefiniować minimalną dostępną lub maksymalną liczbę niedostępnych zasobów.
Jeśli uaktualnisz klaster lub zaktualizujesz szablon wdrożenia, harmonogram usługi Kubernetes zaplanuje dodatkowe zasobniki na innych węzłach przed zezwoleniem na kontynuowanie zdarzeń dobrowolnych zakłóceń. Harmonogram czeka na ponowne uruchomienie węzła, dopóki zdefiniowana liczba zasobników nie zostanie pomyślnie zaplanowana na innych węzłach w klastrze.
Przyjrzyjmy się przykładowi zestawu replik z pięcioma zasobnikami z systemem NGINX. Zasobniki w zestawie replik mają przypisaną etykietę app: nginx-frontend
. Podczas dobrowolnego zdarzenia zakłóceń, takiego jak uaktualnienie klastra, chcesz upewnić się, że co najmniej trzy zasobniki będą nadal działać. Następujący manifest YAML dla obiektu PodDisruptionBudget definiuje następujące wymagania:
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: nginx-pdb
spec:
minAvailable: 3
selector:
matchLabels:
app: nginx-frontend
Można również zdefiniować wartość procentową, taką jak 60%, co pozwala automatycznie zrekompensować skalowanie konfiguracji repliki w górę liczby zasobników.
W zestawie replik można zdefiniować maksymalną liczbę niedostępnych wystąpień. Ponownie można zdefiniować wartość procentową maksymalnej niedostępności zasobników. Następujący manifest YAML dotyczący zakłóceń budżetu zasobnika definiuje, że nie więcej niż dwa zasobniki w zestawie replik są niedostępne:
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: nginx-pdb
spec:
maxUnavailable: 2
selector:
matchLabels:
app: nginx-frontend
Po zdefiniowaniu budżetu zakłóceń zasobnika należy go utworzyć w klastrze usługi AKS tak jak w przypadku dowolnego innego obiektu Kubernetes:
kubectl apply -f nginx-pdb.yaml
Skontaktuj się z deweloperami i właścicielami aplikacji, aby zrozumieć ich potrzeby i zastosować odpowiednie budżety związane z zakłóceniami zasobników.
Aby uzyskać więcej informacji na temat korzystania z budżetów zakłóceń zasobników, zobacz Określanie budżetu zakłóceń dla aplikacji.
Następne kroki
W tym artykule skoncentrowano się na podstawowych funkcjach harmonogramu Kubernetes. Aby uzyskać więcej informacji na temat operacji klastra w usłudze AKS, zobacz następujące najlepsze rozwiązania:
Azure Kubernetes Service