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 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ń i limitów zasobów, odrzuć wdrożenie. Monitoruj użycie zasobów i dopasuj limity przydziału zgodnie z potrzebami.

Żądania zasobów i limity są umieszczane w specyfikacji zasobnika. Limity 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ń i limitów zasobów zasobnika

Aby zapewnić sposób zarezerwowania i ograniczenia zasobów w zespole deweloperów lub projekcie, należy użyć przydziałów zasobów. Te przydziały są definiowane w przestrzeni nazw i mogą służyć do ustawiania limitów przydziału na podstawie następujących elementów:

  • Zasoby obliczeniowe, takie jak procesor CPU i pamięć, lub procesory GPU.
  • Storage zasoby, w tym łączną liczbę woluminów lub ilość miejsca na dysku dla danej klasy magazynu.
  • Można utworzyć liczbę obiektów, takich jak maksymalna liczba wpisów tajnych, usług lub zadań.

Platforma Kubernetes nie nadmiernie zatwierdza zasobów. Gdy łączna łączna liczba żądań zasobów przekaże przypisany 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.

W poniższym przykładzie manifest YAML o nazwie dev-app-team-quotas.yaml ustawia sztywny limit 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 dev-apps:

kubectl apply -f dev-app-team-quotas.yaml --namespace dev-apps

Współpracuj 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 Przydziały 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. Obejmują:

  • Awaria sprzętowa na maszynie fizycznej
  • Panika jądra
  • Usuwanie maszyny wirtualnej węzła

Mimowolne zakłócenia mogą zostać złagodzone 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. Obejmują:

  • Uaktualnienia klastra
  • Zaktualizowany szablon wdrożenia
  • Przypadkowe usunięcie zasobnika

Platforma Kubernetes zapewnia budżety zakłóceń zasobników w przypadku dobrowolnych zakłóceń, umożliwiając planowanie sposobu reagowania wdrożeń lub zestawów replik w przypadku wystąpienia dobrowolnego zakłócenia. 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 zdarzenia dobrowolnego zakłócenia, takiego jak uaktualnienie klastra, chcesz upewnić się, że co najmniej trzy zasobniki nadal działają. 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 zestawu replik 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 budżetu zakłóceń 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łócenia zasobnika należy go utworzyć w klastrze usługi AKS tak jak w przypadku dowolnego innego obiektu Kubernetes:

kubectl apply -f nginx-pdb.yaml

Współpracuj z deweloperami i właścicielami aplikacji, aby zrozumieć ich potrzeby i zastosować odpowiednie budżety na zakłócenia 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

Ten artykuł koncentruje 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: