Vytvoření a správa více fondů uzlů pro cluster ve službě Azure Kubernetes Service (AKS)
Ve službě Azure Kubernetes Service (AKS) jsou uzly stejné konfigurace seskupeny dohromady do fondů uzlů. Tyto fondy uzlů obsahují základní virtuální počítače, na kterých běží vaše aplikace. Počáteční počet uzlů a jejich velikost (SKU) je definován při vytváření clusteru AKS, který vytváří fond uzlů systému. Pokud chcete podporovat aplikace, které mají různé výpočetní prostředky nebo požadavky na úložiště, můžete vytvořit další fondy uživatelských uzlů. Fondy systémových uzlů slouží jako primární účel hostování důležitých systémových lusků, jako jsou například CoreDNS a tunnelfront. Fondy uživatelských uzlů slouží jako primární účel hostování aplikace. V případě, že chcete mít v clusteru AKS jenom jeden fond, je ale možné naplánovat použití lusků na uzlech systému. Fondy uživatelských uzlů jsou tam, kde umístíte jednotlivé lusky pro jednotlivé aplikace. Pomocí těchto dalších fondů uživatelských uzlů můžete například poskytnout GPU pro aplikace náročné na výpočetní výkon nebo přístup k vysoce výkonnému úložišti SSD.
Poznámka
Tato funkce umožňuje vyšší kontrolu nad tím, jak vytvořit a spravovat více fondů uzlů. V důsledku toho jsou pro vytvoření, aktualizaci nebo odstranění vyžadovány samostatné příkazy. Dříve clusterové operace prostřednictvím az aks create nebo az aks update používaly rozhraní managedCluster API a byly jedinou možností, jak změnit plochu ovládacího prvku a jeden fond uzlů. Tato funkce zpřístupňuje samostatnou sadu operací pro fondy agentů prostřednictvím rozhraní neznámá API a vyžaduje použití az aks nodepool sady příkazů ke spouštění operací ve fondu jednotlivých uzlů.
V tomto článku se dozvíte, jak vytvořit a spravovat více fondů uzlů v clusteru AKS.
Než začnete
Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI 2.2.0 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
Omezení
Při vytváření a správě clusterů AKS, které podporují více fondů uzlů, platí následující omezení:
- Podívejte se na téma kvóty, omezení velikosti virtuálních počítačů a dostupnost oblasti ve službě Azure Kubernetes Service (AKS).
- Můžete odstranit fondy systémových uzlů, pokud máte jiný fond uzlů systému, aby bylo možné provést místo v clusteru AKS.
- Systémové fondy musí obsahovat alespoň jeden uzel a fondy uživatelských uzlů můžou obsahovat nula nebo víc uzlů.
- Cluster AKS musí používat standardní nástroj pro vyrovnávání zatížení SKU pro použití více fondů uzlů, ale funkce nástroje pro vyrovnávání zatížení Basic SKU není podporována.
- Cluster AKS musí pro uzly používat sadu škálování virtuálních počítačů.
- Velikost virtuálního počítače fondu uzlů po jeho vytvoření nemůžete změnit.
- Název fondu uzlů může obsahovat jenom malé alfanumerické znaky a musí začínat malým písmenem. u fondů uzlů se systémem Linux musí být délka v rozsahu od 1 do 12 znaků, u Windows fondů uzlů musí být délka mezi 1 a 6 znaky.
- Všechny fondy uzlů se musí nacházet ve stejné virtuální síti.
- Při vytváření více fondů uzlů v době vytváření clusteru se musí všechny verze Kubernetes používané fondy uzlů shodovat s verzí nastavenou pro plochu ovládacího prvku. Dá se aktualizovat po zřízení clusteru pomocí operací pro fond uzlů.
Vytvoření clusteru AKS
Důležité
Pokud pro cluster AKS spustíte jeden fond uzlů systému v produkčním prostředí, doporučujeme pro fond uzlů použít aspoň tři uzly.
Začněte tím, že vytvoříte cluster AKS s jedním fondem uzlů. Následující příklad používá příkaz AZ Group Create k vytvoření skupiny prostředků s názvem myResourceGroup v oblasti eastus . Pomocí příkazu AZ AKS Create se pak vytvoří cluster AKS s názvem myAKSCluster .
Poznámka
SKU nástroje Load Balancer úrovně Basic není při použití více fondů uzlů podporována . Ve výchozím nastavení se clustery AKS s využitím služby Load Balancer úrovně Standard (SKU) z Azure CLI a Azure Portal.
# Create a resource group in East US
az group create --name myResourceGroup --location eastus
# Create a basic single-node AKS cluster
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--vm-set-type VirtualMachineScaleSets \
--node-count 2 \
--generate-ssh-keys \
--load-balancer-sku standard
Vytvoření clusteru bude trvat několik minut.
Poznámka
Aby se zajistilo, že váš cluster funguje spolehlivě, měli byste spustit aspoň 2 (dva) uzly ve výchozím fondu uzlů, protože v rámci tohoto fondu uzlů běží základní systémové služby.
Až bude cluster připravený, pomocí příkazu AZ AKS Get-Credentials Získejte přihlašovací údaje clusteru pro použití s kubectl :
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Přidání fondu uzlů
Cluster vytvořený v předchozím kroku má fond s jedním uzlem. Přidejte druhý fond uzlů pomocí příkazu AZ AKS nodepool Add . Následující příklad vytvoří fond uzlů s názvem mynodepool , který spouští 3 uzly:
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mynodepool \
--node-count 3
Poznámka
Název fondu uzlů musí začínat malým písmenem a může obsahovat jenom alfanumerické znaky. u fondů uzlů se systémem Linux musí být délka v rozsahu od 1 do 12 znaků, u Windows fondů uzlů musí být délka mezi 1 a 6 znaky.
Stav fondů uzlů zobrazíte pomocí příkazu AZ AKS Node Pool list a zadáním vaší skupiny prostředků a názvu clusteru:
az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster
Následující příklad výstupu ukazuje, že mynodepool byl úspěšně vytvořen se třemi uzly ve fondu uzlů. Když se v předchozím kroku vytvořil cluster AKS, vytvořil se výchozí nodepool1 s počtem uzlů 2.
[
{
...
"count": 3,
...
"name": "mynodepool",
"orchestratorVersion": "1.15.7",
...
"vmSize": "Standard_DS2_v2",
...
},
{
...
"count": 2,
...
"name": "nodepool1",
"orchestratorVersion": "1.15.7",
...
"vmSize": "Standard_DS2_v2",
...
}
]
Tip
pokud při přidávání fondu uzlů není zadána žádná VmSize , je výchozí velikost Standard_D2s_v3 pro fondy uzlů Windows a Standard_DS2_v2 pro fondy uzlů Linux. Pokud není zadán žádný OrchestratorVersion , použije se ve výchozím nastavení stejná verze jako plocha ovládacího prvku.
Přidat fond uzlů s jedinečnou podsítí (Preview)
Zatížení může vyžadovat rozdělení uzlů clusteru do samostatných fondů pro logickou izolaci. Tuto izolaci je možné podporovat samostatnými podsítěmi, které jsou vyhrazeny pro každý fond uzlů v clusteru. To může adresovat požadavky, jako je například nesouvislý adresní prostor virtuální sítě pro rozdělení mezi fondy uzlů.
Omezení
- Všechny podsítě přiřazené k nodepools musí patřit do stejné virtuální sítě.
- Systémové lusky musí mít přístup ke všem uzlům a luskům v clusteru, aby poskytovaly důležité funkce, jako je například rozlišení DNS a tunelování kubectl log/exec/reported proxy.
- Pokud po vytvoření clusteru rozšíříte virtuální síť, musíte aktualizovat cluster (provádět všechny spravované operace clusteru, ale operace fondu uzlů se nepočítají) před přidáním podsítě mimo původní CIDR. AKS se v tomto fondu agentů zobrazí chyba, přestože jsme ho původně povolili. Pokud si nejste jisti, jak sjednotit soubor clusteru a lístek podpory.
- Zásady sítě Calico se nepodporují.
- Zásady sítě Azure se nepodporují.
- Kube-proxy očekává jeden souvislý CIDR a použije ho pro tři optmizations. Zobrazit tento K.E.P. a--cluster-CIDR sem zobrazíte podrobnosti. V Azure CNI se vaše podsíť prvního fondu uzlů dostane k Kube-proxy.
Pokud chcete vytvořit fond uzlů s vyhrazenou podsítí, předejte ID prostředku podsítě jako další parametr při vytváření fondu uzlů.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mynodepool \
--node-count 3 \
--vnet-subnet-id <YOUR_SUBNET_RESOURCE_ID>
Upgrade fondu uzlů
Poznámka
Operace upgradu a škálování na clusteru nebo ve fondu uzlů se nemůžou vyskytovat současně, pokud se k chybě vrátí. Místo toho musí být každý typ operace dokončen u cílového prostředku před dalším požadavkem na stejný prostředek. Další informace najdete v našem Průvodci odstraňováním potíží.
Příkazy v této části vysvětlují, jak upgradovat jeden konkrétní fond uzlů. Vztah mezi upgradem verze Kubernetes roviny ovládacího prvku a fondem uzlů je vysvětlen v níže uvedené části.
Poznámka
Verze bitové kopie operačního systému fondu uzlů je svázána s verzí Kubernetes clusteru. Po upgradu clusteru budete dostávat jenom upgrady imagí operačního systému.
Vzhledem k tomu, že v tomto příkladu existují dva fondy uzlů, je pro upgrade fondu uzlů nutné použít příkaz AZ AKS nodepool upgrade . Pokud chcete zobrazit dostupné upgrady, použijte příkaz AZ AKS Get-Upgrades .
az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
Pojďme upgradovat na mynodepool. Pomocí příkazu AZ AKS nodepool upgrade provedete upgrade fondu uzlů, jak je znázorněno v následujícím příkladu:
az aks nodepool upgrade \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mynodepool \
--kubernetes-version KUBERNETES_VERSION \
--no-wait
Seznam stavů fondů uzlů znovu vypište pomocí příkazu AZ AKS Node Pool list . Následující příklad ukazuje, že mynodepool je ve stavu upgradu na KUBERNETES_VERSION:
az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
{
...
"count": 3,
...
"name": "mynodepool",
"orchestratorVersion": "KUBERNETES_VERSION",
...
"provisioningState": "Upgrading",
...
"vmSize": "Standard_DS2_v2",
...
},
{
...
"count": 2,
...
"name": "nodepool1",
"orchestratorVersion": "1.15.7",
...
"provisioningState": "Succeeded",
...
"vmSize": "Standard_DS2_v2",
...
}
]
Upgrade uzlů na zadanou verzi trvá několik minut.
V rámci osvědčeného postupu byste měli upgradovat všechny fondy uzlů v clusteru AKS na stejnou verzi Kubernetes. Výchozím chováním az aks upgrade je upgrade všech fondů uzlů společně s řídicí rovinou, aby bylo možné toto zarovnání dosáhnout. Možnost upgradovat fondy jednotlivých uzlů vám umožní provést postupný upgrade a naplánovat mezi fondy uzlů, aby se zachovala doba provozu aplikace v rámci výše zmíněných omezení.
Upgrade řídicí plochy clusteru s více fondy uzlů
Poznámka
Kubernetes používá standardní sémantickou verzi schématu správy verzí. Číslo verze se vyjádří jako x. y. z, kde x je hlavní verze, y je podverze a z je verze opravy. Například ve verzi 1.12.6 je 1 hlavní verze, 12 je dílčí verze a 6 je verze opravy. Při vytváření clusteru je nastavená verze Kubernetes řídicí roviny a počáteční fond uzlů. Všechny další fondy uzlů mají svou verzi Kubernetes nastavenou při jejich přidání do clusteru. Verze Kubernetes se mohou lišit mezi fondy uzlů i mezi fondem uzlů a rovinou ovládacího prvku.
Cluster AKS má dva objekty prostředků clusteru s přidruženými verzemi Kubernetes.
- Verze Kubernetes roviny ovládacího prvku clusteru
- Fond uzlů s verzí Kubernetes
Rovina ovládacího prvku se mapuje na jeden nebo více fondů uzlů. Chování operace upgradu závisí na použitém příkazu rozhraní příkazového řádku Azure.
Upgrade roviny ovládacího prvku AKS vyžaduje použití az aks upgrade . Tento příkaz provede upgrade verze řídicí roviny a všech fondů uzlů v clusteru.
Vydání az aks upgrade příkazu s --control-plane-only příznakem upgradu pouze na rovinu řízení clusteru. Žádný z přidružených fondů uzlů v clusteru se nemění.
Upgrade jednotlivých fondů uzlů vyžaduje použití az aks nodepool upgrade . Tento příkaz upgraduje pouze cílový fond uzlů s určenou verzí Kubernetes.
Ověřovací pravidla pro upgrady
Platné upgrady Kubernetes pro řídicí plochu clusteru a fondy uzlů jsou ověřovány následujícími sadami pravidel.
Pravidla pro platné verze pro upgrade fondů uzlů:
- Verze fondu uzlů musí mít stejnou Hlavní verzi jako rovina ovládacího prvku.
- Podverze fondu uzlů musí být ve dvou podverzích verze řídicí roviny.
- Verze fondu uzlů nemůže být větší než verze ovládacího prvku
major.minor.patch.
Pravidla pro odeslání operace upgradu:
- Nelze downgradovat plochu ovládacího prvku nebo Kubernetes verzi fondu uzlů.
- Pokud není zadána verze Kubernetes fondu uzlů, závisí chování na používaném klientovi. Deklarace v šablonách Správce prostředků se vrátí k existující verzi definované pro fond uzlů, pokud se použije, pokud není nastavená žádná hodnota řídicí roviny, která se použije k vrácení zpět.
- Můžete buď upgradovat, nebo škálovat plochu ovládacího prvku nebo fondu uzlů v daném čase, nemůžete současně odeslat více operací na jeden řídicí rovinu nebo prostředek fondu uzlů.
Ruční škálování fondu uzlů
V případě změny požadavků na úlohy aplikace možná budete muset škálovat počet uzlů ve fondu uzlů. Počet uzlů lze škálovat směrem nahoru nebo dolů.
Pokud chcete škálovat počet uzlů ve fondu uzlů, použijte příkaz AZ AKS Node Pool Scale . Následující příklad škáluje počet uzlů v mynodepool na 5:
az aks nodepool scale \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mynodepool \
--node-count 5 \
--no-wait
Seznam stavů fondů uzlů znovu vypište pomocí příkazu AZ AKS Node Pool list . Následující příklad ukazuje, že mynodepool je ve stavu škálování s novým počtem 5 uzlů:
az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
{
...
"count": 5,
...
"name": "mynodepool",
"orchestratorVersion": "1.15.7",
...
"provisioningState": "Scaling",
...
"vmSize": "Standard_DS2_v2",
...
},
{
...
"count": 2,
...
"name": "nodepool1",
"orchestratorVersion": "1.15.7",
...
"provisioningState": "Succeeded",
...
"vmSize": "Standard_DS2_v2",
...
}
]
Dokončení operace škálování trvá několik minut.
Automatické škálování určitého fondu uzlů povolením automatického škálování clusteru
AKS nabízí samostatnou funkci pro automatické škálování fondů uzlů pomocí funkce s názvem AutoScale clusteru. Tato funkce se dá povolit pro fond uzlů s jedinečným minimálním a maximálním počtem škálování na jeden fond uzlů. Naučte se používat automatické škálování clusteru pro každý fond uzlů.
Odstranění fondu uzlů
Pokud už fond nepotřebujete, můžete ho odstranit a odebrat příslušné uzly virtuálních počítačů. Pokud chcete odstranit fond uzlů, použijte příkaz AZ AKS Node Pool Delete a zadejte název fondu uzlů. Následující příklad odstraní mynoodepool vytvořená v předchozích krocích:
Upozornění
Neexistují žádné možnosti obnovení pro ztrátu dat, ke kterým může dojít při odstranění fondu uzlů. Pokud lusky není možné naplánovat na jiné fondy uzlů, nejsou tyto aplikace k dispozici. Ujistěte se, že neodstraníte fond uzlů v případě, že aplikace v aplikaci neobsahují zálohy dat nebo že je možné spustit na jiných fondech uzlů v clusteru.
az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name mynodepool --no-wait
Následující příklad výstupu příkazu AZ AKS Node Pool list ukazuje, že mynodepool je ve stavu odstranění :
az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
{
...
"count": 5,
...
"name": "mynodepool",
"orchestratorVersion": "1.15.7",
...
"provisioningState": "Deleting",
...
"vmSize": "Standard_DS2_v2",
...
},
{
...
"count": 2,
...
"name": "nodepool1",
"orchestratorVersion": "1.15.7",
...
"provisioningState": "Succeeded",
...
"vmSize": "Standard_DS2_v2",
...
}
]
Odstranění uzlů a fondu uzlů trvá několik minut.
Určení velikosti virtuálního počítače pro fond uzlů
V předchozích příkladech vytvoření fondu uzlů se pro uzly vytvořené v clusteru použila výchozí velikost virtuálního počítače. Častější scénář je vytvořit fondy uzlů s různými velikostmi a možnostmi virtuálních počítačů. Můžete například vytvořit fond uzlů, který obsahuje uzly s velkými objemy procesoru nebo paměti, nebo fond uzlů, který poskytuje podporu GPU. V dalším kroku použijete k informování plánovače Kubernetes, jak omezit přístup k luskům, které se na těchto uzlech můžou spouštět, pomocí chuti a tolerování .
V následujícím příkladu vytvořte fond uzlů založený na GPU, který používá velikost virtuálního počítače Standard_NC6 . Tyto virtuální počítače jsou napájené kartou NVIDIA Tesla K80. Informace o dostupných velikostech virtuálních počítačů najdete v tématu velikosti pro virtuální počítače se systémem Linux v Azure.
Vytvořte fond uzlů pomocí příkazu AZ AKS Node Pool Add . Tentokrát zadejte název gpunodepool a --node-vm-size parametr použijte k určení velikosti Standard_NC6 :
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name gpunodepool \
--node-count 1 \
--node-vm-size Standard_NC6 \
--no-wait
Následující příklad výstupu příkazu AZ AKS Node Pool list ukazuje, že gpunodepool vytváří uzly se zadaným VmSize:
az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
{
...
"count": 1,
...
"name": "gpunodepool",
"orchestratorVersion": "1.15.7",
...
"provisioningState": "Creating",
...
"vmSize": "Standard_NC6",
...
},
{
...
"count": 2,
...
"name": "nodepool1",
"orchestratorVersion": "1.15.7",
...
"provisioningState": "Succeeded",
...
"vmSize": "Standard_DS2_v2",
...
}
]
Úspěšné vytvoření gpunodepool trvá několik minut.
Určení značky, značky nebo značky pro fond uzlů
Při vytváření fondu uzlů můžete do tohoto fondu uzlů přidat značky, popisky nebo značky. Když přidáte značku, popisek nebo značku, budou mít všechny uzly v tomto fondu uzlů také tuto značku, popisek nebo značku.
Důležité
Přidání značek, popisků nebo značek do uzlů by se mělo provádět pro celý fond uzlů pomocí az aks nodepool . Použití značek, popisků nebo značek na jednotlivých uzlech ve fondu uzlů kubectl se nedoporučuje.
Nastavení nodepool chuti
Chcete-li vytvořit fond uzlů s příchuti, použijte příkaz AZ AKS nodepool Add. Zadejte název taintnp a použijte --node-taints parametr k určení SKU = GPU: inschedule pro chuti.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name taintnp \
--node-count 1 \
--node-taints sku=gpu:NoSchedule \
--no-wait
Poznámka
Soubor. chuti lze nastavit pouze pro fondy uzlů během vytváření fondu uzlů.
Následující příklad výstupu příkazu AZ AKS nodepool list ukazuje, že taintnp vytváří uzly se zadaným nodeTaints:
$ az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
{
...
"count": 1,
...
"name": "taintnp",
"orchestratorVersion": "1.15.7",
...
"provisioningState": "Creating",
...
"nodeTaints": [
"sku=gpu:NoSchedule"
],
...
},
...
]
Informace o chuti jsou viditelné v Kubernetes pro zpracování pravidel plánování pro uzly. Plánovač Kubernetes může pomocí chuti a omezení omezit, jaké úlohy je možné spouštět na uzlech.
- Pro uzel, který indikuje, že je možné naplánovat pouze určité lusky, se použije značka chuti .
- Tolerování se pak použije na uzel pod, který umožňuje tolerovat chuti v uzlu.
Další informace o použití pokročilých Kubernetes naplánovaných funkcí najdete v tématu osvědčené postupy pro pokročilé funkce plánovače v AKS .
V předchozím kroku jste při vytváření fondu uzlů použili nepoužitou položku pro SKU = GPU: a naplánujte . Následující základní příklad YAML manifestu používá tolerovat k tomu, aby mohl Plánovač Kubernetes spustit NGINX pod na uzlu v tomto fondu uzlů.
Vytvořte soubor s názvem nginx-toleration.yaml a zkopírujte ho do následujícího příkladu YAML:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine
name: mypod
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 1
memory: 2G
tolerations:
- key: "sku"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"
Naplánujte pod pomocí kubectl apply -f nginx-toleration.yaml příkazu:
kubectl apply -f nginx-toleration.yaml
Naplánování seznamu pod a vyžádání image NGINX trvá několik sekund. Chcete-li zobrazit stav pod, použijte příkaz kubectl popsat pod . Následující zhuštěný příklad výstupu ukazuje, že se používá nedovolená položka SKU = GPU:-Schedule . V části s událostmi přiřadil Scheduler do uzlu AKS-taintnp-28993262-vmss000000 :
kubectl describe pod mypod
[...]
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
sku=gpu:NoSchedule
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 4m48s default-scheduler Successfully assigned default/mypod to aks-taintnp-28993262-vmss000000
Normal Pulling 4m47s kubelet pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
Normal Pulled 4m43s kubelet Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
Normal Created 4m40s kubelet Created container
Normal Started 4m40s kubelet Started container
V uzlech v taintnp se dají naplánovat jenom lusky, které mají tuto tolerovánost nastavenou. Jakékoli jiné pod by se naplánovaly ve fondu uzlů nodepool1 . Pokud vytvoříte další fondy uzlů, můžete použít další příchuti a tolerování k omezení, které z nich je možné naplánovat na tyto prostředky uzlu.
Nastavení popisků nodepool
Při vytváření fondu uzlů můžete do fondu uzlů přidat také popisky. Popisky nastavené ve fondu uzlů se přidají do každého uzlu ve fondu uzlů. Tyto popisky jsou viditelné v Kubernetes pro zpracování pravidel plánování pro uzly.
Chcete-li vytvořit fond uzlů s popiskem, použijte příkaz AZ AKS nodepool Add. Zadejte název labelnp a použijte --labels parametr pro určení oddělení = IT a CostCenter = 9999 pro popisky.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name labelnp \
--node-count 1 \
--labels dept=IT costcenter=9999 \
--no-wait
Poznámka
Popisek lze nastavit pouze pro fondy uzlů během vytváření fondu uzlů. Popisky musí také obsahovat dvojici klíč/hodnota a mít platnou syntaxi.
Následující příklad výstupu příkazu AZ AKS nodepool list ukazuje, že labelnp vytváří uzly se zadaným nodeLabels:
$ az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
{
...
"count": 1,
...
"name": "labelnp",
"orchestratorVersion": "1.15.7",
...
"provisioningState": "Creating",
...
"nodeLabels": {
"dept": "IT",
"costcenter": "9999"
},
...
},
...
]
Nastavení značek Azure nodepool
V clusteru AKS můžete použít značku Azure na fondy uzlů. Značky použité pro fond uzlů se aplikují na každý uzel v rámci fondu uzlů a ukládají se prostřednictvím upgradů. Značky jsou také aplikovány na nové uzly přidané do fondu uzlů během operace škálování na více instancí. Přidání značky může pomáhat s úkoly, jako je sledování zásad nebo odhad nákladů.
Značky Azure obsahují klíče, které rozlišují velká a malá písmena pro operace, jako je například při načítání značky, hledáním klíče. V takovém případě bude značka s daným klíčem aktualizována nebo načtena bez ohledu na velikost písmen. Hodnoty značek rozlišují velká a malá písmena.
V AKS platí, že pokud je více značek nastaveno s identickými klíči, ale různými velikostmi písmen, použije se první tag v abecedním pořadí. Například výsledky se zadávají {"Key1": "val1", "kEy1": "val2", "key1": "val3"} Key1 a val1 nastavují.
Vytvořte fond uzlů pomocí direktivy AZ AKS nodepool Add. Zadejte název tagnodepool a použijte --tag parametr pro určení oddělení = IT a CostCenter = 9999 pro značky.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name tagnodepool \
--node-count 1 \
--tags dept=IT costcenter=9999 \
--no-wait
Poznámka
Parametr můžete použít také --tags při použití příkazu AZ AKS nodepool Update a při vytváření clusteru. Během vytváření clusteru parametr použije značku na počáteční fond uzlů --tags vytvořený s clusterem. Všechny názvy značek musí splňovat omezení v části Použití značek k uspořádání prostředků Azure. Aktualizace fondu uzlů pomocí --tags parametru aktualizuje všechny existující hodnoty značek a připojí všechny nové značky. Pokud by například fond uzlů měl značky dept=IT a costcenter=9999 a u značek jste ho aktualizovali na team=dev a costcenter=111, měli byste pro značky nodepool dept=IT, costcenter=111 a team=dev.
Následující příklad výstupu z příkazu az aks nodepool list ukazuje, že tagnodepool je Vytváření uzlů se zadanou značkou:
az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
{
...
"count": 1,
...
"name": "tagnodepool",
"orchestratorVersion": "1.15.7",
...
"provisioningState": "Creating",
...
"tags": {
"dept": "IT",
"costcenter": "9999"
},
...
},
...
]
Přidání fondu uzlů s podporou FIPS (Preview)
Standard FIPS (Federal Information Processing Standard) 140-2 je standard státní správy USA, který definuje minimální požadavky na zabezpečení kryptografických modulů v produktech a systémech informačních technologií. AKS umožňuje vytvářet linuxové fondy uzlů s povoleným FIPS 140-2. Nasazení spuštěná ve fondech uzlů s podporou FIPS mohou tyto kryptografické moduly použít k zajištění zvýšeného zabezpečení a ke splnění bezpečnostních prvků v rámci dodržování předpisů FedRAMP. Další podrobnosti o standardu FIPS 140-2 najdete v tématu Standard FIPS (Federal Information Processing Standard) 140-2.
Fondy uzlů s podporou FIPS jsou aktuálně ve verzi Preview.
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na základě samoobslužných možností. Verze Preview se poskytují "tak, jak jsou" a "jak jsou k dispozici" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview služby AKS částečně pokryje zákaznická podpora na základě maximálního úsilí. Proto nejsou tyto funkce určeny pro použití v produkčním prostředí. Další informace najdete v následujících článcích podpory:
Budete potřebovat rozšíření Azure CLI aks-preview verze 0.5.11 nebo novější. Nainstalujte rozšíření Azure CLI aks-preview pomocí příkazu az extension add. Nebo nainstalujte všechny dostupné aktualizace pomocí příkazu az extension update.
# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview
Pokud chcete tuto funkci používat, musíte ve svém předplatném také povolit FIPSPreview příznak funkce.
Zaregistrujte FIPSPreview příznak funkce pomocí příkazu az feature register, jak je znázorněno v následujícím příkladu:
az feature register --namespace "Microsoft.ContainerService" --name "FIPSPreview"
Zobrazení stavu Registrováno trvá několik minut. Pomocí příkazu az feature list ověřte stav registrace:
az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/FIPSPreview')].{Name:name,State:properties.state}"
Až budete připravení, aktualizujte registraci poskytovatele prostředků Microsoft.ContainerService pomocí příkazu az provider register:
az provider register --namespace Microsoft.ContainerService
Fondy uzlů s podporou FIPS mají následující omezení:
- V současné době můžete mít na Ubuntu 18.04 jenom linuxové fondy uzlů s podporou FIPS.
- Fondy uzlů s podporou FIPS vyžadují Kubernetes verze 1.19 a vyšší.
- Pokud chcete aktualizovat základní balíčky nebo moduly používané pro FIPS, musíte použít Node Image Upgrade.
Důležité
Image Linuxu s podporou FIPS je jiná image než výchozí image Linuxu používaná pro fondy uzlů založené na Linuxu. Pokud chcete povolit FIPS ve fondu uzlů, musíte vytvořit nový fond uzlů založený na Linuxu. FIPS nemůžete povolit u existujících fondů uzlů.
Image uzlů s podporou FIPS mohou mít jiná čísla verzí, například verzi jádra, než image, které nemají povolený protokol FIPS. Cyklus aktualizace pro fondy uzlů a image uzlů s podporou FIPS se také může lišit od fondů uzlů a imagí, které nejsou povolené pomocí FIPS.
Pokud chcete vytvořit fond uzlů s podporou FIPS, při vytváření fondu uzlů použijte příkaz az aks nodepool add s parametrem --enable-fips-image.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name fipsnp \
--enable-fips-image
Poznámka
Při vytváření clusteru můžete použít také parametr --enable-fips-image pomocí příkazu az aks create, který povolí FIPS ve výchozím fondu uzlů. Při přidávání fondů uzlů do clusteru vytvořeného tímto způsobem stále musíte při přidávání fondů uzlů použít parametr --enable-fips-image a vytvořit tak fond uzlů s podporou FIPS.
Pokud chcete ověřit, že je fond uzlů povolený pomocí FIPS, pomocí příkazu az aks show zkontrolujte hodnotu enableFIPS v agentPoolProfiles.
az aks show --resource-group myResourceGroup --cluster-name myAKSCluster --query="agentPoolProfiles[].{Name:name enableFips:enableFips}" -o table
Následující příklad výstupu ukazuje, že fond uzlů fipsnp má povolenou fiPS a nodepool1 není.
Name enableFips
--------- ------------
fipsnp True
nodepool1 False
Můžete také ověřit, že nasazení mají přístup k kryptografickým knihovnám FIPS pomocí na uzlu ve fondu uzlů s podporou kubectl debug FIPS. Pomocí kubectl get nodes zobrazíte seznam uzlů:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-fipsnp-12345678-vmss000000 Ready agent 6m4s v1.19.9
aks-fipsnp-12345678-vmss000001 Ready agent 5m21s v1.19.9
aks-fipsnp-12345678-vmss000002 Ready agent 6m8s v1.19.9
aks-nodepool1-12345678-vmss000000 Ready agent 34m v1.19.9
Ve výše uvedeném příkladu jsou uzly začínající na součástí fondu uzlů s podporou aks-fipsnp FIPS. Slouží ke spuštění nasazení s interaktivní relací na jednom z těchto uzlů ve fondu uzlů s podporou kubectl debug FIPS.
kubectl debug node/aks-fipsnp-12345678-vmss000000 -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11
V interaktivní relaci můžete ověřit, že jsou povolené kryptografické knihovny FIPS:
root@aks-fipsnp-12345678-vmss000000:/# cat /proc/sys/crypto/fips_enabled
1
Fondy uzlů s podporou FIPS mají také popisek kubernetes.azure.com/fips_enabled=true, který mohou nasazení používat k cílení na tyto fondy uzlů.
Správa fondů uzlů pomocí Resource Manager šablony
Pokud k vytváření a Azure Resource Manager prostředků použijete šablonu nástroje , můžete obvykle aktualizovat nastavení v šabloně a znovu nasadit a aktualizovat prostředek. U fondů uzlů v AKS není možné po vytvoření clusteru AKS aktualizovat počáteční profil fondu uzlů. Toto chování znamená, že nemůžete aktualizovat existující šablonu Resource Manager, provést změnu ve fondech uzlů a znovu provést nasazení. Místo toho musíte vytvořit samostatnou šablonu Resource Manager, která aktualizuje pouze fondy uzlů pro existující cluster AKS.
Vytvořte například šablonu a aks-agentpools.json vložte následující příklad manifestu. Tato příkladová šablona konfiguruje následující nastavení:
- Aktualizuje fond linuxových uzlů myagentpool tak, aby se spouštěly tři uzly.
- Nastaví uzly ve fondu uzlů tak, aby spouštěly Kubernetes verze 1.15.7.
- Definuje velikost uzlu jako Standard_DS2_v2.
Upravte tyto hodnoty podle potřeby pro aktualizaci, přidání nebo odstranění fondů uzlů:
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"clusterName": {
"type": "string",
"metadata": {
"description": "The name of your existing AKS cluster."
}
},
"location": {
"type": "string",
"metadata": {
"description": "The location of your existing AKS cluster."
}
},
"agentPoolName": {
"type": "string",
"defaultValue": "myagentpool",
"metadata": {
"description": "The name of the agent pool to create or update."
}
},
"vnetSubnetId": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "The Vnet subnet resource ID for your existing AKS cluster."
}
}
},
"variables": {
"apiVersion": {
"aks": "2020-01-01"
},
"agentPoolProfiles": {
"maxPods": 30,
"osDiskSizeGB": 0,
"agentCount": 3,
"agentVmSize": "Standard_DS2_v2",
"osType": "Linux",
"vnetSubnetId": "[parameters('vnetSubnetId')]"
}
},
"resources": [
{
"apiVersion": "2020-01-01",
"type": "Microsoft.ContainerService/managedClusters/agentPools",
"name": "[concat(parameters('clusterName'),'/', parameters('agentPoolName'))]",
"location": "[parameters('location')]",
"properties": {
"maxPods": "[variables('agentPoolProfiles').maxPods]",
"osDiskSizeGB": "[variables('agentPoolProfiles').osDiskSizeGB]",
"count": "[variables('agentPoolProfiles').agentCount]",
"vmSize": "[variables('agentPoolProfiles').agentVmSize]",
"osType": "[variables('agentPoolProfiles').osType]",
"storageProfile": "ManagedDisks",
"type": "VirtualMachineScaleSets",
"vnetSubnetID": "[variables('agentPoolProfiles').vnetSubnetId]",
"orchestratorVersion": "1.15.7"
}
}
]
}
Nasaďte tuto šablonu pomocí příkazu az deployment group create, jak je znázorněno v následujícím příkladu. Zobrazí se výzva k zadání názvu a umístění existujícího clusteru AKS:
az deployment group create \
--resource-group myResourceGroup \
--template-file aks-agentpools.json
Tip
Značku můžete do fondu uzlů přidat přidáním vlastnosti tag v šabloně, jak je znázorněno v následujícím příkladu.
...
"resources": [
{
...
"properties": {
...
"tags": {
"name1": "val1"
},
...
}
}
...
Aktualizace clusteru AKS může trvat několik minut v závislosti na nastavení fondu uzlů a operacích, které definujete v Resource Manager šabloně.
Přiřazení veřejné IP adresy na uzel pro fondy uzlů
Uzly AKS nevyžadují ke komunikaci vlastní veřejné IP adresy. Scénáře však mohou vyžadovat, aby uzly ve fondu uzlů přijímaly vlastní vyhrazené veřejné IP adresy. Běžný scénář je pro herní úlohy, kdy konzola musí vytvořit přímé připojení ke cloudovým virtuálním počítačům, aby se minimalizovaly segmenty směrování. Tohoto scénáře lze dosáhnout v AKS pomocí veřejné IP adresy uzlu.
Nejprve vytvořte novou skupinu prostředků.
az group create --name myResourceGroup2 --location eastus
Vytvořte nový cluster AKS a připojte veřejnou IP adresu pro uzly. Každý z uzlů ve fondu uzlů obdrží jedinečnou veřejnou IP adresu. Můžete to ověřit tak, že se podíváme na instance škálovací sady virtuálních počítačů.
az aks create -g MyResourceGroup2 -n MyManagedCluster -l eastus --enable-node-public-ip
Pro existující clustery AKS můžete také přidat nový fond uzlů a připojit veřejnou IP adresu pro vaše uzly.
az aks nodepool add -g MyResourceGroup2 --cluster-name MyManagedCluster -n nodepool2 --enable-node-public-ip
Použití předpony veřejné IP adresy
Používání předpony veřejné IP adresy má řadu výhod. AKS podporuje používání adres z existující předpony veřejné IP adresy pro vaše uzly předáním ID prostředku s příznakem při vytváření nového clusteru nebo přidání node-public-ip-prefix fondu uzlů.
Nejprve vytvořte předponu veřejné IP adresy pomocí příkazu az network public-ip prefix create:
az network public-ip prefix create --length 28 --location eastus --name MyPublicIPPrefix --resource-group MyResourceGroup3
Prohlédněte si výstup a poznamenejte si id předponu :
{
...
"id": "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup3/providers/Microsoft.Network/publicIPPrefixes/MyPublicIPPrefix",
...
}
Nakonec při vytváření nového clusteru nebo přidávání nového fondu uzlů použijte příznak a předejte ID prostředku node-public-ip-prefix předpony:
az aks create -g MyResourceGroup3 -n MyManagedCluster -l eastus --enable-node-public-ip --node-public-ip-prefix /subscriptions/<subscription-id>/resourcegroups/MyResourceGroup3/providers/Microsoft.Network/publicIPPrefixes/MyPublicIPPrefix
Vyhledání veřejných IP adresy pro uzly
Veřejné IP adresy uzlů můžete vyhledat různými způsoby:
- Použijte příkaz Azure CLI az vmss list-instance-public-ips.
- Použijte příkazy PowerShellu nebo Bashe.
- Veřejné IP adresy můžete zobrazit také v Azure Portal zobrazením instancí ve škálovací sadě virtuálních počítačů.
Důležité
Skupina prostředků uzlu obsahuje uzly a jejich veřejné IP adresy. Při provádění příkazů použijte skupinu prostředků uzlu, abyste našli veřejné IP adresy pro vaše uzly.
az vmss list-instance-public-ips -g MC_MyResourceGroup2_MyManagedCluster_eastus -n YourVirtualMachineScaleSetName
Vyčištění prostředků
V tomto článku jste vytvořili cluster AKS, který obsahuje uzly založené na GPU. Pokud chcete snížit zbytečné náklady, můžete odstranit gpunodepool nebo celý cluster AKS.
Pokud chcete odstranit fond uzlů založený na GPU, použijte příkaz az aks nodepool delete, jak je znázorněno v následujícím příkladu:
az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name gpunodepool
Pokud chcete odstranit samotný cluster, pomocí příkazu az group delete odstraňte skupinu prostředků AKS:
az group delete --name myResourceGroup --yes --no-wait
Můžete také odstranit další cluster, který jste vytvořili pro scénář veřejné IP adresy pro fondy uzlů.
az group delete --name myResourceGroup2 --yes --no-wait
Další kroky
Další informace o fondech systémových uzlů.
V tomto článku jste zjistili, jak vytvořit a spravovat více fondů uzlů v clusteru AKS. Další informace o tom, jak řídit pody napříč fondy uzlů, najdete v tématu Osvědčené postupy pro pokročilé funkce plánovače v AKS.
Informace o vytváření a používání Windows uzlů kontejneru serveru najdete v tématu Vytvoření kontejneru Windows Serveru v AKS.
Pomocí skupin umístění bezkontaktní blízkosti snižte latenci aplikací AKS.