Správa fondů systémových uzlů v Azure Kubernetes Service (AKS)

V Azure Kubernetes Service (AKS) jsou uzly stejné konfigurace seskupeny do uzlových fondů. Fondy uzlů obsahují základní virtuální počítače, na kterých běží vaše aplikace. Fondy systémových uzlů a fondy uzlů uživatelů jsou dva různé režimy fondu uzlů pro clustery AKS. Tento článek vysvětluje, jak spravovat fondy systémových uzlů v AKS. Informace o tom, jak používat více fondů uzlů, najdete v tématu vytvoření fondů uzlů.

  • Fondy systémových uzlů: Primárním účelem je hostovat kritické systémové pody jako CoreDNS a metrics-server. Fondy systémových uzlů by se neměly používat ke spuštění aplikace. Fondy systémových uzlů používají Ubuntu Linux nebo Azure Linux.
  • Fondy uzlů uživatele: Primárním účelem je zajišťovat hostování aplikačních podů a izolovat aplikace od fondu systémových uzlů. Tato izolace brání aplikaci v tom, aby způsobila nestabilitu ve fondu systémových uzlů vašeho clusteru. Fondy uzlů uživatelů můžou používat Ubuntu Linux, Azure Linux nebo Windows.

Produkční cluster AKS s jedním fondem systémových uzlů musí obsahovat alespoň dva uzly. Doporučení pro produkční cluster AKS s jedním fondem systémových uzlů je mít alespoň tři uzly pro lepší odolnost proti chybám a zvýšení dostupnosti. Výchozí počet uzlů příkazu az aks create je například tři a vytvoří nový cluster s jedním fondem uzlů systému Linux a třemi linuxovými uzly.

Je možné, ale nedoporučuje se plánovat pody aplikací ve fondu uzlů systému, pokud máte v clusteru AKS jenom jeden fond uzlů. Lepším řešením je vytvořit fond uzlů uživatele pro vaši aplikaci.

Než začnete

Potřebujete nainstalovanou a nakonfigurovanou verzi Azure CLI verze 2.3.1 nebo novější. Verzi najdete spuštěním az --version příkazu. Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI.

Omezení

Při vytváření a správě clusterů AKS, které podporují fondy systémových uzlů, platí následující omezení.

  • Viz Kvóty, omezení velikosti virtuálních počítačů a dostupnost oblastí v AKS.
  • K nastavení režimu fondu uzlů musí být použita verze 2020-03-01 rozhraní API nebo vyšší. Clustery vytvořené ve verzích rozhraní API starších než 2020-03-01 obsahují pouze fondy uzlů uživatele, ale je možné je migrovat tak, aby obsahovaly fondy systémových uzlů pomocí kroků režimu fondu aktualizací.
  • Název fondu uzlů může obsahovat pouze malá alfanumerická písmena a musí začínat malým písmenem. U fondů uzlů Linuxu musí být délka 1 až 12 znaků. U fondů uzlů Windows musí být délka mezi 1 a šesti znaky.
  • Režim fondu uzlů je požadovaná vlastnost a musí být explicitně nastavena při použití šablon ARM nebo přímých volání rozhraní API.

Pooly uzlů systému a uživatelů

V případě fondu systémových uzlů služba AKS automaticky přiřadí štítek kubernetes.azure.com/mode: system ke svým uzlům. To způsobí, že AKS preferuje plánování systémových podů v uzlových fondech, které obsahují tento popisek. Toto označení vám nebrání umisťovat aplikační pody ve fondech systémových uzlů. Doporučujeme ale izolovat důležité systémové pody od podů aplikací, abyste zabránili chybné konfiguraci nebo nežádoucím podům aplikací v nechtěném odstranění systémových podů.

Toto chování můžete vynutit vytvořením vyhrazeného fondu systémových uzlů. Pomocí taintu CriticalAddonsOnly=true:NoSchedule zabráníte tomu, aby byly pody aplikací naplánovány ve fondech systémových uzlů.

Půly systémového uzlu mají následující omezení:

  • Fondy systémových uzlů musí podporovat alespoň 30 podů, jak je popsáno ve vzorci minimální a maximální hodnoty pro pody.
  • Systémové fondy osType musí běžet na Linuxu.
  • Uživatelské pooly uzlů osType mohou být systémy Linux nebo Windows.
  • Systémové skupiny uzlů musí obsahovat alespoň dva uzly, ale doporučení je mít tři uzly. Pooly uzlů uživatele můžou obsahovat nula a více uzlů.
  • Fondy uzlů systému vyžadují SKU virtuálního počítače s minimálně 4 vCPU a 4 GB paměti.
  • Virtuální počítače řady B nejsou podporovány pro fondy systémových uzlů.
  • Doporučuje se minimálně tři uzly s 8 virtuálními procesory nebo dva uzly nejméně 16 virtuálních procesorů (například Standard_DS4_v2), zejména pro velké clustery (repliky podů s více jádry, 3 až 4+ doplňky atd.).
  • Uživatelské uzlové fondy jsou požadovány pro uzlové fondy typu Spot.
  • Přidáním dalšího fondu uzlů nebo změnou toho, který fond uzlů je systémovým fondem uzlů, se systémové pody automaticky nepřesouvají. Systémové pody mohou nadále běžet ve stejném fondu uzlů, i když ho přeměníte na uživatelský fond uzlů. Pokud odstraníte nebo zmenšíte fond uzlů spouštějící systémové pody, které byly dříve součástí systémového fondu uzlů, jsou tyto systémové pody nasazeny s upřednostňovaným plánováním do nového systémového fondu uzlů.

S fondy uzlů můžete provádět následující operace:

  • Vytvořte vyhrazený fond systémových uzlů (upřednostněte plánování systémových podů ve fondech uzlů mode:system)
  • Změňte fond systémových uzlů na fond uzlů uživatele, pokud máte jiný fond systémových uzlů, který se má provést v clusteru AKS.
  • Změňte fond uživatelských uzlů na fond systémových uzlů.
  • Odstraňte uživatelské uzlové fondy.
  • Fondy systémových uzlů můžete odstranit za předpokladu, že máte jiný fond systémových uzlů, který se má provést v clusteru AKS.
  • Cluster AKS může mít více fondů systémových uzlů a vyžaduje alespoň jeden fond systémových uzlů.
  • Pokud chcete změnit různá neměnná nastavení u stávajících fondů uzlů, můžete vytvořit nové fondy uzlů, které je nahradí. Jedním z příkladů je přidání nového fondu uzlů s novým maxPods nastavením a odstranění starého fondu uzlů.
  • Spřažení uzlů použijte k vyžadování nebo preferování uzlů, které je možné naplánovat na základě popisků uzlů. Můžete nastavit key na kubernetes.azure.com, operator na In a values buď user nebo system ve vašem YAML, aplikovat tuto definici pomocí kubectl apply -f yourYAML.yaml.

Vytvoření nového clusteru AKS s fondem systémových uzlů

Při vytváření nového clusteru AKS se počáteční fond uzlů ve výchozím nastavení nastaví na režim typu System. Při vytváření nových fondů uzlů s az aks nodepool addtěmito fondy uzlů jsou fondy uzlů uživatele, pokud explicitně nezadáte parametr režimu.

Vytvořte proměnné pro skupinu prostředků, název clusteru a umístění pro příkazy použité v tomto článku. Tento článek určuje hodnoty nebo můžete použít vlastní hodnoty.

export RESOURCE_GROUP="myResourceGroup"
export CLUSTER_NAME="myAKSCluster"
export LOCATION="eastus"
export NEW_SYSTEM_NP="systempool"
export NEW_NODE_POOL="mynodepool"

Následující příklad vytvoří skupinu prostředků myResourceGroup v regionu eastus.

az group create --name $RESOURCE_GROUP --location $LOCATION

az aks create Pomocí příkazu vytvořte cluster AKS. Následující příklad vytvoří cluster myAKSCluster s jedním vyhrazeným systémovým fondem obsahujícím dva uzly. U produkčních úloh se ujistěte, že používáte fondy systémových uzlů s alespoň třemi uzly. Dokončení této operace trvá několik minut.

az aks create --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --node-count 2 --generate-ssh-keys

Přidejte specializovaný fond systémových uzlů do existujícího clusteru AKS

Do existujících clusterů AKS můžete přidat jeden nebo více fondů systémových uzlů. Doporučuje se naplánovat pody aplikací ve fondech uzlů uživatelů a vyhradit fondy systémových uzlů pouze kritickým podům systému. Toto oddělení zabraňuje nechtěným podům aplikací v náhodném odstranění systémových podů. Vynucujte toto chování pomocí CriticalAddonsOnly=true:NoScheduletaintu pro fondy systémových uzlů.

Následující příkaz přidá vyhrazený fond uzlů typu System se třemi uzly. Příkaz az aks nodepool add ve výchozím nastavení přidá tři uzly, ale pomocí --node-count parametru určíte požadovaný počet uzlů.

az aks nodepool add \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_SYSTEM_NP \
  --node-count 3 \
  --node-taints CriticalAddonsOnly=true:NoSchedule \
  --mode System

Zobrazit podrobnosti pro fond uzlů

Podrobnosti o fondu uzlů můžete zkontrolovat pomocí následujícího příkazu.

az aks nodepool show \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_SYSTEM_NP \
  --query "{Count:count, Mode:mode, NodePool:name, NodeTaint:nodeTaints, ResourceGroup:resourceGroup}"

Režim typu Systém je definován pro fondy systémových uzlů a režim typu Uživatel je definován pro fondy uzlů uživatele. V případě systemového poolu ověřte, že je vlastnost nodeTaints nastavená na CriticalAddonsOnly=true:NoSchedule, což brání rozvržení podů aplikací v tomto poolu uzlů.

{
  "Count": 3,
  "Mode": "System",
  "NodePool": "systempool",
  "NodeTaint": [
    "CriticalAddonsOnly=true:NoSchedule"
  ],
  "ResourceGroup": "myResourceGroup"
}

Aktualizace stávajícího clusterového systému a uživatelských fondů uzlů.

Poznámka:

K nastavení režimu fondu systémových uzlů musí být použita verze 2020-03-01 rozhraní API nebo vyšší. Clustery vytvořené ve verzích rozhraní API starších než 2020-03-01, v důsledku toho obsahují pouze fondy uzlů uživatelů. Pokud chcete dostávat funkce a výhody fondu systémových uzlů ve starších clusterech, aktualizujte režim stávajících fondů uzlů pomocí následujících příkazů na nejnovější verzi Azure CLI.

Režimy můžete změnit jak pro fondy systémových uzlů, tak pro fondy uzlů uživatele. Fond systémových uzlů můžete změnit na fond uzlů uživatele pouze v případě, že v clusteru AKS již existuje jiný fond systémových uzlů.

Spuštěním tohoto příkazu vytvořte nový fond uzlů v režimu systému.

az aks nodepool add \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL \
  --node-count 3 \
  --mode System

Režim můžete ověřit pomocí následujícího příkazu.

az aks nodepool show \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL \
  --query mode --output tsv
System

Spuštěním tohoto příkazu změňte fond systémových uzlů na fond uzlů uživatele.

az aks nodepool update \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL \
  --mode User

Změněný režim můžete ověřit pomocí následujícího příkazu.

az aks nodepool show \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL \
  --query mode --output tsv
User

Spuštěním tohoto příkazu změňte fond uzlů uživatele na fond systémových uzlů.

az aks nodepool update \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL \
  --mode System

Spuštěním předchozího příkazu ověřte, že se režim změnil.

Odstraňte fond systémových uzlů

Poznámka:

Pokud chcete použít fondy systémových uzlů v clusterech AKS před verzí 2020-03-01rozhraní API, přidejte nový fond systémových uzlů a odstraňte původní výchozí fond uzlů.

Abyste mohli některý z nich odstranit, musíte mít v clusteru AKS alespoň dva fondy systémových uzlů.

az aks nodepool delete \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NEW_NODE_POOL

Po odstranění fondu systémových uzlů byste měli mít původní fond systémových uzlů, který byl vytvořen společně s clusterem, a fond systémových uzlů, který jste vytvořili v části přidání vyhrazeného fondu systémových uzlů do existujícího clusteru AKS.

az aks nodepool list \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --query "[].{Name:name, Mode:mode}" --output table

Vyčištění prostředků

Když odstraníte skupinu prostředků clusteru AKS, odstraní se všechny prostředky clusteru a související skupina prostředků uzlu (MC_).

Pokud chcete cluster odstranit, pomocí příkazu az group delete odstraňte skupinu prostředků AKS:

az group delete --name $RESOURCE_GROUP --yes --no-wait

Další kroky

V tomto článku jste se naučili vytvářet a spravovat fondy systémových uzlů v clusteru AKS. Informace o tom, jak spustit a zastavit fondy uzlů AKS, najdete v tématu spuštění a zastavení fondů uzlů AKS.