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čů.
  • 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 rozmezí od 1 do 12 znaků, v případě fondů uzlů systému Windows 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 rozmezí od 1 do 12 znaků, v případě fondů uzlů systému Windows 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í zadaný žádný VmSize , výchozí velikost se 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 upgradujte fond 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

Znovu vyhlédněte stav fondů uzlů pomocí příkazu az aks node pool list. Následující příklad ukazuje, že mynodepool je ve stavu Upgrade 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.

Osvědčeným postupem je upgradovat všechny fondy uzlů v clusteru AKS na stejnou verzi Kubernetes. Výchozím chováním nástroje je upgradovat všechny fondy uzlů společně s řídicí az aks upgrade rovinou, aby bylo možné dosáhnout tohoto zarovnání. Možnost upgradovat jednotlivé fondy uzlů umožňuje provádět inovace se zajištěním provozu a plánovat pody mezi fondy uzlů, aby se zachovala dostupnost aplikace v rámci výše uvedených omezení.

Upgrade řídicí roviny clusteru s více fondy uzlů

Poznámka

Kubernetes používá standardní schéma sémantických verzí. Číslo verze je vyjádřeno jako x.y.z, kde x je hlavní verze, y je podverie a z je verze opravy. Například ve verzi 1.12.6 je hlavní verzí 1, 12 je podverdní verze a 6 je verze opravy. Verze řídicí roviny Kubernetes a počáteční fond uzlů se nastavují během vytváření clusteru. Všechny další fondy uzlů mají po přidání do clusteru nastavenou verzi Kubernetes. Verze Kubernetes se mohou mezi fondy uzlů a fondem uzlů a řídicí rovinou lišit.

Cluster AKS má dva objekty prostředků clusteru s přidruženými verzemi Kubernetes.

  1. Verze Kubernetes řídicí roviny clusteru.
  2. Fond uzlů s verzí Kubernetes

Řídicí rovina se mapuje na jeden nebo více fondů uzlů. Chování operace upgradu závisí na tom, který příkaz Azure CLI se použije.

Upgrade řídicí roviny AKS vyžaduje použití az aks upgrade . Tento příkaz upgraduje verzi řídicí roviny a všechny fondy uzlů v clusteru.

Při vydání az aks upgrade příkazu s --control-plane-only příznakem se upgraduje pouze řídicí rovina clusteru. Žádný z přidružených fondů uzlů v clusteru se nezmění.

Upgrade jednotlivých fondů uzlů vyžaduje použití az aks nodepool upgrade nástroje . Tento příkaz upgraduje pouze cílový fond uzlů se zadanou verzí Kubernetes.

Ověřovací pravidla pro upgrady

Platné upgrady Kubernetes pro řídicí rovinu clusteru a fondy uzlů se ověřují pomocí následujících sad pravidel.

  • Pravidla pro platné verze pro upgrade fondů uzlů:

    • Verze fondu uzlů musí mít stejnou hlavní verzi jako řídicí rovina.
    • Podverzní verze fondu uzlů musí být ve dvou dílčích verzích verze řídicí roviny.
    • Verze fondu uzlů nemůže být větší než verze major.minor.patch řízení.
  • Pravidla pro odeslání operace upgradu:

    • Verzi Kubernetes ve fondu uzlů ani řídicí rovinu nemůžete downgradovat.
    • Pokud není zadaná verze Kubernetes fondu uzlů, závisí chování na použitém klientovi. Deklarace v Resource Manager se vrátí k existující verzi definované pro fond uzlů, pokud není nastavená žádná, verze řídicí roviny se použije k návratu.
    • V daném okamžiku můžete upgradovat nebo škálovat řídicí rovinu nebo fond uzlů. Současně není možné odeslat více operací na jednu řídicí rovinu nebo prostředek fondu uzlů.

Ruční škálování fondu uzlů

S rostoucími požadavky na úlohy vaší aplikace možná budete muset škálovat počet uzlů ve fondu uzlů. Počet uzlů je možné škálovat 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

Znovu vyhlédněte stav fondů uzlů 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četem 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í konkrétního fondu uzlů povolením automatického škálování clusteru

AKS nabízí samostatnou funkci pro automatické škálování fondů uzlů s funkcí nazvanou automatické škálování clusteru. Tuto funkci je možné povolit pro každý fond uzlů s jedinečným minimálním a maximálním počtem škálování na fond uzlů. Zjistěte, jak používat automatické škálování clusteru na fond uzlů.

Odstranění fondu uzlů

Pokud fond už nepotřebujete, můžete ho odstranit a odebrat základní uzly virtuálních počítače. 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ůže dojít při odstranění fondu uzlů. Pokud není možné pody naplánovat na jiné fondy uzlů, nejsou tyto aplikace k dispozici. Ujistěte se, že fond uzlů nechcete odstranit, pokud aplikace, které používají, nemají zálohy dat nebo možnost spouštět 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 z 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 k vytvoření fondu uzlů se pro uzly vytvořené v clusteru použila výchozí velikost virtuálního počítače. Častějším scénářem je vytvoření fondů 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í tagů, lablels 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 používat tainty a tolerace k omezení toho, jaké úlohy mohou běžet na uzlech.

  • Taint se použije na uzel, který indikuje, že je možné na nich naplánovat pouze konkrétní pody.
  • Na pod, který jim umožňuje tolerovat taint uzlu, se pak použije tolerace.

Další informace o používání pokročilých naplánovaných funkcí Kubernetes 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 taint sku=gpu:NoSchedule. Následující základní příklad manifestu YAML používá toleraci, která plánovači Kubernetes umožňuje spustit pod NGINX na uzlu v tomto fondu uzlů.

Vytvořte soubor s názvem a nginx-toleration.yaml zkopírujte ho v následujícím 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"

Pomocí příkazu naplánujte kubectl apply -f nginx-toleration.yaml pod:

kubectl apply -f nginx-toleration.yaml

Naplánování podu a natažení image NGINX trvá několik sekund. Pomocí příkazu kubectl describe pod zobrazte stav podu. Následující zkrácený příklad výstupu ukazuje použití sku=gpu:NoSchedule toleration. V části události plánovač přiřadil pod k 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

Na uzlech v taintnp je možné naplánovat pouze pody, u které je tato tolerace použitá. Jakýkoli jiný pod by byl naplánován ve fondu uzlů nodepool1. Pokud vytvoříte další fondy uzlů, můžete pomocí dalších taintů a tolerací omezit, které pody je možné na těchto uzlu naplánovat.

Nastavení popisků fondu uzlů

Popisky můžete do fondu uzlů přidat také během vytváření fondu uzlů. Popisky nastavené ve fondu uzlů se přidávají ke každému uzlu ve fondu uzlů. Tyto popisky jsou viditelné v Kubernetes pro zpracování pravidel plánování pro uzly.

Pokud chcete vytvořit fond uzlů s popiskem, použijte příkaz az aks nodepool add. Zadejte název labelnp a pomocí parametru pro popisky --labels zadejte dept=IT a costcenter=9999.

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ů při vytváření fondu uzlů. Popisky musí být také párem klíč/hodnota a musí mít platnou syntaxi.

Následující příklad výstupu z příkazu az aks nodepool list ukazuje, že labelnp je Vytváření uzlů se zadanými vlastnostmi 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 pro fond uzlů

Na fondy uzlů v clusteru AKS můžete použít značku Azure. Značky použité na fond uzlů se aplikují na každý uzel v rámci fondu uzlů a uchová se při upgradech. Značky se také použijí u nových uzlů přidaných do fondu uzlů během operací horizontálního navýšení velikosti. Přidání značky může pomoct s úkoly, jako je sledování zásad nebo odhad nákladů.

Značky Azure mají klíče, u kterých se u operací nelišují malá a velká písmena, například při načítání značky hledáním v klíči. V takovém případě se značka s daným klíčem aktualizuje nebo načte bez ohledu na velikost velká a malá písmena. V hodnotách značek se rozlišují velká a malá písmena.

Pokud je v AKS nastaveno více značek s identickými klíči, ale s různými velikostmi písmen, použitá značka je první v abecedním pořadí. Například výsledkem {"Key1": "val1", "kEy1": "val2", "key1": "val3"} je a Key1 val1 nastavení.

Pomocí příkazu az aks nodepool addvytvořte fond uzlů. Zadejte název tagnodepool a pomocí parametru zadejte --tag dept=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 --tags také při použití příkazu az aks nodepool update a také při vytváření clusteru. Při 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í uvedená 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 samoobslužné službě, na základě souhlasu. Verze Preview jsou k dispozici "tak jak jsou" a "jako dostupné" a jsou vyloučeny ze smluv o úrovni služeb a omezené záruky. AKS verze Preview jsou částečně pokryté zákaznickou podporou na základě nejlepších úsilí. V takovém případě tyto funkce nejsou určeny pro použití v produkčním prostředí. Funkce AKS ve verzi Preview nejsou k dispozici v cloudech Azure Government nebo Azure Čína 21Vianet. 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é kubernetes.azure.com/fips_enabled=true, který mohou nasazení používat k cílení na tyto fondy uzlů.

Správa fondů uzlů pomocí šablony Správce prostředků

Když použijete šablonu Azure Resource Manager k vytváření a správě prostředků, můžete obvykle aktualizovat nastavení v šabloně a znovu nasadit, aby se prostředek aktualizoval. U fondů uzlů v AKS nelze počáteční profil fondu uzlů aktualizovat po vytvoření clusteru AKS. Toto chování znamená, že nemůžete aktualizovat existující šablonu Správce prostředků, provést změnu v fondech uzlů a znovu nasadit. Místo toho je nutné vytvořit samostatnou šablonu Správce prostředků, která aktualizuje pouze fondy uzlů pro existující cluster AKS.

Vytvořte šablonu, například aks-agentpools.json a vložte následující vzorový manifest. Tato příklad šablony konfiguruje následující nastavení:

  • Aktualizuje fond uzlů pro Linux s názvem myagentpool , aby se spouštěly tři uzly.
  • Nastaví uzly ve fondu uzlů tak, aby běžely Kubernetes verze 1.15.7.
  • Definuje velikost uzlu jako Standard_DS2_v2.

Upravte tyto hodnoty podle potřeby, pokud potřebujete aktualizovat, přidat nebo odstranit fondy 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"
            }
        }
    ]
}

Tuto šablonu nasaďte 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í pro existující cluster AKS:

az deployment group create \
    --resource-group myResourceGroup \
    --template-file aks-agentpools.json

Tip

Do fondu uzlů můžete přidat značku přidáním vlastnosti tag do šablony, 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ích fondu uzlů a operacích, které definujete v šabloně Správce prostředků.

Přiřazení veřejné IP adresy na uzel pro vaše fondy uzlů

AKS uzly nevyžadují pro komunikaci své vlastní veřejné IP adresy. Scénáře ale můžou vyžadovat, aby uzly ve fondu uzlů přijímaly vlastní vyhrazené veřejné IP adresy. Běžným scénářem je použití herních úloh, kde konzola potřebuje vytvořit přímé připojení k virtuálnímu počítači v cloudu, aby se minimalizovaly segmenty směrování. Tento scénář lze dosáhnout v AKS pomocí veřejné IP adresy uzlu.

Nejdřív 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 vaše uzly. Každý uzel ve fondu uzlů obdrží jedinečnou veřejnou IP adresu. Můžete to ověřit tak, že prohlížíte instance sady škálování 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 pro své uzly připojit veřejnou IP adresu.

az aks nodepool add -g MyResourceGroup2 --cluster-name MyManagedCluster -n nodepool2 --enable-node-public-ip

Použít předponu veřejné IP adresy

Existuje několik výhod používání předpony veřejné IP adresy. 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 node-public-ip-prefix při vytváření nového clusteru nebo přidáním fondu uzlů.

Nejdřív vytvořte předponu veřejné IP adresy pomocí AZ Network Public-IP prefix Create:

az network public-ip prefix create --length 28 --location eastus --name MyPublicIPPrefix --resource-group MyResourceGroup3

Podívejte se na 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ání nového fondu uzlů použijte příznak node-public-ip-prefix a předejte mu ID prostředku 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

Vyhledat veřejné IP adresy pro uzly

Veřejné IP adresy pro uzly můžete vyhledat různými způsoby:

Důležité

Skupina prostředků uzlu obsahuje uzly a jejich veřejné IP adresy. Použijte skupinu prostředků uzlu při provádění příkazů k vyhledání veřejných IP adres 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í fondů uzlů kontejneru Windows 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.