Osvědčené postupy pro základní funkce plánovače v Azure Kubernetes Service (AKS)

Při správě clusterů v Azure Kubernetes Service (AKS) často potřebujete izolovat týmy a úlohy. Plánovač Kubernetes umožňuje řídit distribuci výpočetních prostředků nebo omezit dopad událostí údržby.

Tento článek o osvědčených postupech se zaměřuje na základní funkce plánování Kubernetes pro operátory clusteru. V tomto článku získáte informace o těchto tématech:

  • Využití kvót prostředků k poskytování pevného množství prostředků týmům nebo úlohám
  • Omezení dopadu plánované údržby pomocí rozpočtů přerušení podů

Vynucení kvót prostředků

Osvědčené postupy

Naplánujte a použijte kvóty prostředků na úrovni oboru názvů. Pokud pody nedefinují požadavky na prostředky a omezení, nasazení zamítněte. Monitorujte využití prostředků a podle potřeby upravte kvóty.

Požadavky na prostředky a omezení se umisťují do specifikace podu. Omezení používá plánovač Kubernetes v době nasazení k vyhledání dostupného uzlu v clusteru. Limity a požadavky fungují na úrovni jednotlivých podů. Další informace o tom, jak tyto hodnoty definovat, najdete v tématu Definování limitů a požadavků na prostředky podů.

Pokud chcete poskytnout způsob, jak rezervovat a omezit zdroje v rámci vývojového týmu nebo projektu, měli byste použít kvóty prostředků. Tyto kvóty jsou definovány v oboru názvů a lze je použít k nastavení kvót na následujícím základě:

  • Výpočetní prostředky, jako jsou procesor a paměť, nebo GPU.
  • Prostředky úložiště, včetně celkového počtu svazků nebo velikosti místa na disku pro danou třídu úložiště.
  • Počet objektů, například maximální počet tajných kódů, služeb nebo úloh, je možné vytvořit.

Kubernetes nepřetěžuje alokaci prostředků. Jakmile celková kumulativní žádost o prostředek projde přiřazenou kvótou, všechna další nasazení budou neúspěšná.

Při definování kvót prostředků musí všechny pody vytvořené v oboru názvů obsahovat omezení nebo požadavky ve svých specifikacích podů. Pokud tyto hodnoty nezadají, můžete nasazení odmítnout. Místo toho můžete pro obor názvů nakonfigurovat výchozí požadavky a omezení.

Následující příklad manifestu YAML s názvem dev-app-team-quotas.yaml nastaví pevný limit celkového počtu 10 procesorů, 20Gi paměti a 10 podů:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: dev-app-team
spec:
  hard:
    cpu: "10"
    memory: 20Gi
    pods: "10"

Tuto kvótu prostředků je možné použít zadáním oboru názvů, například dev-apps:

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

Spolupracujte s vývojáři a vlastníky aplikací, abyste porozuměli jejich potřebám a použili příslušné kvóty prostředků.

Další informace o dostupných objektech prostředků, oborech a prioritách najdete v tématu Kvóty prostředků v Kubernetes.

Plánování dostupnosti s využitím rozpočtů přerušení podů

Osvědčené postupy

Pokud chcete zachovat dostupnost aplikací, definujte rozpočty přerušení podů (PDB), abyste zajistili, že v clusteru bude k dispozici minimální počet podů.

Odebrání podů způsobují dvě rušivé události:

Nedobrovolné přerušení

Nedobrovolná přerušení jsou události, které jsou mimo typickou kontrolu operátora clusteru nebo vlastníka aplikace. Zahrnout:

  • Selhání hardwaru na fyzickém počítači
  • Poplach jádra
  • Odstranění virtuálního počítače uzlu

Nedobrovolné přerušení služeb lze zmírnit:

  • Použití více replik podů v nasazení
  • Spuštění více uzlů v clusteru AKS

Dobrovolné přerušení provozu

Dobrovolná přerušení jsou události požadované operátorem clusteru nebo vlastníkem aplikace. Zahrnout:

  • Upgrady clusteru
  • Aktualizovaná šablona nasazení
  • Náhodné odstranění podu

Kubernetes poskytuje rozpočty přerušení podů pro dobrovolné přerušení, které vám umožní naplánovat, jak nasazení nebo sady replik reagují, když dojde k dobrovolné události přerušení. Pomocí rozpočtů přerušení podů můžou operátoři clusteru definovat minimální nebo maximální počet nedostupných prostředků.

Pokud upgradujete cluster nebo aktualizujete šablonu nasazení, plánovač Kubernetes naplánuje další pody na jiných uzlech, než povolí pokračování dobrovolných událostí přerušení. Plánovač počká na restartování uzlu, dokud se definovaný počet podů úspěšně nenaplánuje na jiných uzlech v clusteru.

Podívejme se na příklad sady replik s pěti pody, na kterých běží NGINX. Podům v sadě replik se přiřadí popisek app: nginx-frontend. Během dobrovolné události přerušení, jako je například upgrade clusteru, chcete zajistit, aby běžely aspoň tři pody. Následující manifest YAML pro objekt PodDisruptionBudget definuje tyto požadavky:

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
   name: nginx-pdb
spec:
   minAvailable: 3
   selector:
    matchLabels:
      app: nginx-frontend

Můžete také definovat procento, například 60 %, což vám umožní automaticky kompenzovat sadu replik vertikálním navýšením počtu podů.

V sadě replik můžete definovat maximální počet nedostupných instancí. Opět je možné definovat procento maximálního počtu nedostupných podů. Následující manifest YAML pro přerušení rozpočtu podů definuje nedostupnost více než dvou podů v sadě replik:

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
   name: nginx-pdb
spec:
   maxUnavailable: 2
   selector:
    matchLabels:
      app: nginx-frontend

Po definování rozpočtu na přerušení podů ho vytvoříte v clusteru AKS stejně jako u jakéhokoli jiného objektu Kubernetes:

kubectl apply -f nginx-pdb.yaml

Spolupracujte s vývojáři a vlastníky aplikací, abyste porozuměli jejich potřebám a použili odpovídající rozpočty pro přerušení provozu podů.

Další informace o používání rozpočtů pro přerušení podů najdete v tématu Určení rozpočtu na přerušení pro vaši aplikaci.

Další kroky

Tento článek se zaměřil na základní funkce plánovače Kubernetes. Další informace o operacích clusteru v AKS najdete v následujících osvědčených postupech: