Osvědčené postupy pro základní funkce plánovače ve službě Azure Kubernetes Service (AKS)
Při správě clusterů ve službě Azure Kubernetes (AKS) je často potřeba izolovat týmy a úlohy. Plánovač Kubernetes vám 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:
- Použití kvót prostředků k poskytnutí pevného množství prostředků týmům nebo úlohám
- Omezte dopad plánované údržby pomocí rozpočtů přerušení pod.
Vynutilit kvóty prostředků
Osvědčené postupy
Plánování a použití kvót prostředků na úrovni oboru názvů. Pokud lusky nedefinují požadavky a omezení prostředků, zamítnout nasazení. Monitorujte využití prostředků a podle potřeby upravte kvóty.
Požadavky na prostředky a omezení jsou umístěné ve specifikaci pod. Omezení používá Plánovač Kubernetes v době nasazování k nalezení dostupného uzlu v clusteru. Omezení a požadavky fungují na úrovni jednotlivých pod. Další informace o tom, jak definovat tyto hodnoty, najdete v tématu definice pod a požadavky na prostředky a omezení .
Chcete-li zajistit způsob, jak rezervovat a omezit prostředky v rámci vývojového týmu nebo projektu, měli byste použít kvóty prostředků. Tyto kvóty jsou definované v oboru názvů a dají se použít k nastavení kvót na následujícím základě:
- Výpočetní prostředky, jako je například procesor a paměť nebo GPU.
- Prostředky úložiště, včetně celkového počtu svazků nebo množství 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 nevyu i přesouvá prostředky. Jakmile celková hodnota požadavku na kumulativní prostředek projde přiřazenou kvótou, všechna další nasazení nebudou úspěšná.
Při definování kvót prostředků musí všechny pody vytvořené v oboru názvů poskytovat omezení nebo požadavky ve specifikacích podů. Pokud tyto hodnoty nezadá, můžete nasazení odmítnout. Místo toho můžete nakonfigurovat výchozí požadavky a omezení pro obor názvů.
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ů můžete 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 přijímili 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ů , abyste se ujistili, že je v clusteru k dispozici minimální počet podů.
Existují dvě rušivé události, které způsobují odebrání podů:
Nedobrovolná přerušení
Nedobrovolné přerušení jsou události nad rámec typické kontroly operátora clusteru nebo vlastníka aplikace. Zahrnout:
- Selhání hardwaru fyzického počítače
- Kernel panic
- Odstranění virtuálního počítače uzlu
Nedobrovolné přerušení lze zmírnit:
- Použití několika replik v rámci nasazení.
- Spuštění více uzlů v clusteru AKS.
Dobrovolné výpadky
Dobrovolné přerušení jsou události vyžádané operátorem clusteru nebo vlastníkem aplikace. Připojit
- Upgrady clusteru
- Aktualizovaná šablona nasazení
- Náhodné odstranění pod
Kubernetes poskytuje rozpočty přerušení v případě dobrovolných výpadků a umožňuje vám naplánovat, jak nasazení nebo sady replik reagují na odpověď, když dojde k dobrovolnému přerušení. Pomocí rozpočtů přerušení v rámci mohou operátoři clusteru definovat minimální dostupný nebo maximální počet nedostupných zdrojů.
Pokud upgradujete cluster nebo aktualizujete šablonu nasazení, Plánovač Kubernetes naplánuje další lusky na jiných uzlech, než umožní pokračovat v akcích dobrovolného přerušení. Plánovač počká, až se uzel restartuje, dokud se neúspěšně naplánuje definovaný počet lusků na jiných uzlech v clusteru.
Pojďme se podívat na příklad sady replik s pěti lusky, které používají NGINX. V luskech sady 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 alespoň tři lusky. Následující manifest YAML pro objekt PodDisruptionBudget definuje tyto požadavky:
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: nginx-pdb
spec:
minAvailable: 3
selector:
matchLabels:
app: nginx-frontend
Můžete také definovat procento, například 60%, které vám umožní automaticky kompenzovat sadu replik a škálovat tak počet lusků.
V sadě replik můžete definovat maximální počet nedostupných instancí. Znovu je možné definovat i procento pro maximální nedostupné lusky. Následující manifest YAML s dopadem na narušení rozpočtu definuje, že není k dispozici více než dvě lusky v sadě repliky:
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: nginx-pdb
spec:
maxUnavailable: 2
selector:
matchLabels:
app: nginx-frontend
Jakmile je rozpočet přerušení podů definovaný, vytvoříte ho 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 narušili příslušné rozpočty podů.
Další informace o používání rozpočtů přerušení podů najdete v tématu Určení rozpočtu přerušení pro vaši aplikaci.
Další kroky
Tento článek se zaměřuje na základní funkce plánovače Kubernetes. Další informace o operacích s clustery v AKS najdete v následujících osvědčených postupech: