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ń 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 podczas 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 rezerwowania i ograniczania zasobów w zespole deweloperów lub projekcie, należy użyć limitów przydziałów zasobów. Te przydziały są definiowane w przestrzeni nazw i mogą służyć do ustawiania limitów przydziału 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ć liczbę obiektów, takich jak maksymalna liczba wpisów tajnych, usług lub zadań.

Platforma Kubernetes nie zastępuje zasobów. Gdy łączna suma żądań zasobów przejdzie przypisany limit przydziału, wszystkie kolejne wdrożenia nie powiedzą się.

Podczas definiowania limitów przydziałów zasobów wszystkie zasobniki utworzone w przestrzeni nazw muszą zapewniać limity lub żądania w specyfikacji zasobnika. Jeśli nie podasz tych wartości, 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 łącznej 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 przydziały 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 w usłudze 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 zakłócające, które powodują usunięcie zasobników:

Mimowolne zakłócenia

Mimowolne zakłócenia to zdarzenia wykraczające poza typową kontrolę nad operatorem klastra lub właścicielem 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 na dobrowolne zakłócenia, umożliwiając planowanie sposobu reagowania wdrożeń lub zestawów replik w przypadku wystąpienia dobrowolnego zakłóceń. Korzystając z budżetów zakłóceń zasobników, operatorzy klastrów mogą definiować minimalną dostępną lub maksymalną liczbę niedostępnych zasobów.

Jeśli uaktualnisz klaster lub zaktualizujesz szablon wdrożenia, harmonogram platformy Kubernetes zaplanuje dodatkowe zasobniki na innych węzłach przed zezwoleniem na kontynuowanie dobrowolnych zdarzeń zakłóceń. Harmonogram czeka na ponowne uruchomienie węzła, aż zdefiniowana liczba zasobników 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, należy 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 zestawu 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 budżetu zakłóceń zasobnika definiuje, że nie więcej niż dwa zasobniki w zestawie repliki 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 utworzysz go 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 zakłóceń 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: