Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje, jak povolit nebo zakázat automatické zřizování uzlů (NAP) v Azure Kubernetes Service (AKS) pomocí šablon Azure CLI nebo Azure Resource Manager (ARM).
Pokud chcete vytvořit cluster AKS s podporou architektury NAP s vlastní virtuální sítí a podsítěmi, přečtěte si téma Vytvoření clusteru architektury NAP (Auto-Provisioning) uzlu ve vlastní virtuální síti.
Než začnete
Než začnete, projděte si přehled automatického zřizování uzlů (NAP) v článku AKS , který podrobně popisuje fungování architektury NAP, požadavky a omezení.
Povolte automatické zřizování uzlů (NAP) v clusteru AKS
Následující části vysvětlují, jak povolit architekturu NAP v novém nebo existujícím clusteru AKS:
Poznámka:
Můžete povolit metriky řídicí roviny a zobrazit protokoly a operace z automatického zřizování uzlů pomocí spravované služby Azure Monitor pro doplněk Prometheus.
Povolit NAP na novém clusteru
Povolte automatické zřizování uzlů v novém clusteru pomocí příkazu
az aks createa nastavením příznaku--node-provisioning-modenaAuto. Následující příkaz také nastaví--network-pluginnaazure,--network-plugin-modenaoverlaya--network-dataplanenacilium.az aks create \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --node-provisioning-mode Auto \ --network-plugin azure \ --network-plugin-mode overlay \ --network-dataplane cilium \ --generate-ssh-keys
Vytvořte soubor s názvem
nap.jsona přidejte následující konfiguraci šablony ARM s polemproperties.nodeProvisioningProfile.modenastaveným na hodnotuAuto, která umožňuje NAP. (Výchozí nastavení jeManual.){ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "metadata": {}, "parameters": {}, "resources": [ { "type": "Microsoft.ContainerService/managedClusters", "apiVersion": "2025-05-01", "sku": { "name": "Base", "tier": "Standard" }, "name": "napcluster", "location": "uksouth", "identity": { "type": "SystemAssigned" }, "properties": { "networkProfile": { "networkPlugin": "azure", "networkPluginMode": "overlay", "networkPolicy": "cilium", "networkDataplane":"cilium", "loadBalancerSku": "Standard" }, "dnsPrefix": "napcluster", "agentPoolProfiles": [ { "name": "agentpool", "count": 3, "vmSize": "standard_d2s_v3", "osType": "Linux", "mode": "System" } ], "nodeProvisioningProfile": { "mode": "Auto" } } } ] }Povolte automatické zřizování uzlů v novém clusteru pomocí příkazu
az deployment group createa příznaku--template-filenastaveného na cestu k souboru šablony ARM.az deployment group create --resource-group $RESOURCE_GROUP --template-file ./nap.json
Povolit NAP na existujícím clusteru
Povolte automatické zřizování uzlů v existujícím clusteru pomocí příkazu
az aks updates příznakem--node-provisioning-modenastaveným naAuto.az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --node-provisioning-mode Auto
Zakázání automatického provisioningu uzlů (NAP) v AKS clusteru
Důležité
NAP můžete na clusteru zakázat pouze v případě splnění následujících podmínek:
- Neexistují žádné uzly NAP. Pomocí příkazu můžete
kubectl get nodes -l karpenter.sh/nodepoolzkontrolovat existující uzly spravované architekturou NAP. - Všechny existující Karpenter
NodePoolsmají svéspec.limits.cpupole nastavené na0. Tato akce zabrání vytvoření nových uzlů, ale nenaruší aktuálně spuštěné uzly.
Nastavte pole
spec.limits.cpuna0pro každý existující KarpenterNodePool. Například:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: limits: cpu: 0Důležité
Pokud nechcete před zakázáním architektury NAP bezpečně migrovat všechny pody spuštěné na uzlu NAP, můžete přeskočit kroky 2 a 3 a místo toho použít
kubectl delete nodepříkaz pro každý uzel spravovaný architekturou NAP. Nicméně nedoporučujeme tyto kroky přeskočovat, protože by některé pody mohly zůstat v čekajícím stavu a nebudou respektovat rozpočty přerušení podů (PDB).Při použití
kubectl delete nodepříkazu dávejte pozor jenom na odstranění uzlů spravovaných architekturou NAP. Uzly spravované architekturoukubectl get nodes -l karpenter.sh/nodepoolNAP můžete identifikovat pomocí příkazu.Přidejte
karpenter.azure.com/disable:NoScheduletaint ke každému KarpenteruNodePool. Například:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: template: spec: ... taints: - key: karpenter.azure.com/disable effect: NoScheduleTato akce spustí proces migrace úloh na uzlech spravovaných architekturou NAP na uzly bez architektury NAP, které dodržují limity souborů PDB a přerušení. Pody migrují na uzly bez NAP, pokud se tam vejdou. Pokud není dostatek pevně stanovené kapacity, zůstanou některé uzly spravované NAP.
Navyšte kapacitu stávajících pevných velikostí
ManagedClusterAgentPoolsnebo vytvořte novou pevnou velikostAgentPools, která převezme zatížení ze spravovaných uzlů NAP. Při přidání těchto uzlů do clusteru se uzly spravované architekturou NAP vyprázdní a práce se migruje na uzly s pevnou velikostí.Pomocí příkazu
kubectl get nodes -l karpenter.sh/nodepoolodstraňte všechny NAP-spravované uzly. Pokud uzly spravované architekturou NAP stále existují, cluster pravděpodobně nemá kapacitu s pevnou velikostí. V takovém případě byste měli přidat další uzly, aby bylo možné migrovat zbývající úlohy.
Aktualizujte režim NAP na
Manualpomocí příkazu Azure CLIaz aks updates příznakem--node-provisioning-modenastaveným naManual.az aks update \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP \ --node-provisioning-mode Manual
Aktualizujte pole
properties.nodeProvisioningProfile.modenaManualve vaší šabloně ARM a znovu ho nasaďte.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "metadata": {}, "parameters": {}, "resources": [ { "type": "Microsoft.ContainerService/managedClusters", "apiVersion": "2025-05-01", "sku": { "name": "Base", "tier": "Standard" }, "name": "napcluster", "location": "uksouth", "identity": { "type": "SystemAssigned" }, "properties": { "networkProfile": { "networkPlugin": "azure", "networkPluginMode": "overlay", "networkPolicy": "cilium", "networkDataplane":"cilium", "loadBalancerSku": "Standard" }, "dnsPrefix": "napcluster", "agentPoolProfiles": [ { "name": "agentpool", "count": 3, "vmSize": "standard_d2s_v3", "osType": "Linux", "mode": "System" } ], "nodeProvisioningProfile": { "mode": "Manual" } } } ] }
Migrace ze samostatně hostovaného open-source nástroje Karpenter na spravované automatické provisionování uzlů (NAP)
Pokud byl Karpenter nainstalován z open source Helm chartu, můžete ve svém clusteru stále povolit NAP. Tyto kroky předpokládají, že je nainstalovaný graf Karpenter Helm.
Důležité
Před zahájením migrace se ujistěte, že používáte latest verzi Karpenteru. NAP vždy běží v nejnovější verzi.
Důležité
Při provádění tohoto procesu migrace dávejte pozor, abyste neodebrali identifikátory CRD Karpenter. Pokud se CRD odstraní, odstraní se i podkladové NodeClaims, což by mohlo narušit vaše úlohy.
Chcete-li zajistit, aby se CRD Karpenter v kroku 2 neodinstalovaly, odeberte štítky a anotace
managed-by=Helm.kubectl get crds -l app.kubernetes.io/managed-by=Helm -o name | grep karpenter.azure.com | xargs -I{} kubectl patch {} --type=json -p ' [ {"op":"remove","path":"/metadata/annotations/meta.helm.sh~1release-name"}, {"op":"remove","path":"/metadata/annotations/meta.helm.sh~1release-namespace"}, {"op":"remove","path":"/metadata/labels/app.kubernetes.io~1managed-by"} ]'Odinstalujte chart Helm a odeberte nasazení, službu, role a další prostředky používané open source Karpenter. V tuto chvíli Karpenter nereaguje na události škálování, ale stávající uzly nadále fungují.
helm uninstall karpenter -n kube-system # If you installed Karpenter into a different namespace than kube-system, specify that here instead of kube-systemPovolte NAP ve svém clusteru:
az aks update --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --node-provisioning-mode Auto --node-provisioning-default-pools NoneTento příkaz zakáže výchozí uzly NodePools, protože máte existující UzlyPools a chcete je dál používat. Pokud chcete povolit výchozí fondy automatického zřizování uzlů, můžete z příkazu
az aks updatevynechat--node-provisioning-default-pools None.Ověřte, že je migrace dokončena: Když se
az aks updatez kroku 3 úspěšně dokončí, migrace je hotová. Migraci můžete ověřit také tak, že zkontrolujete poznámky na karpenterových identifikátorech CRD. Měli byste vidět:meta.helm.sh/release-name: aks-managed-karpenter-overlay-base meta.helm.sh/release-namespace: kube-systemV tomto okamžiku je NAP povolen a automatické škálování by se mělo obnovit.
Automatické zřizování uzlů monitorování
Načtení protokolů a stavu Karpenteru
Z Karpenteru můžete načíst protokoly a aktualizace stavu, které vám pomůžou diagnostikovat a ladit události související s architekturou NAP. AKS spravuje automatické zřizování uzlů vaším jménem a spouští ho ve spravované řídicí rovině. Můžete povolit protokoly řídicí roviny, abyste viděli protokoly a operace Karpenteru z automatického zřizování uzlů. Další informace o protokolech řídicí roviny najdete v dokumentaci k protokolům řídicí roviny AKS.
Nastavte pravidlo pro protokoly prostředků za účelem odesílání protokolů automatického zřizování uzlů do Log Analytics pomocí pokyny uvedenými zde. Nezapomeňte zaškrtnout políčko
node-auto-provisioningpři výběru možností pro protokoly.Vyberte oddíl Protokol ve vašem clusteru.
Do Log Analytics zadejte následující příklad dotazu:
AKSControlPlane | where Category == "karpenter-events"Zobrazení událostí automatického zřizování uzlů v CLI:
kubectl get events --field-selector source=karpenter-events
Metriky automatického zřizování uzlů
Můžete povolit metriky řídící roviny (Preview) pro zobrazení konkrétních metrik a operací Karpenteru z automatického zřizování uzlů pomocí přídavku spravované služby Azure Monitor pro Prometheus.
Další kroky
Pro více informací o automatickém zřizování uzlů v AKS si přečtěte následující články: