Tworzenie i zarządzanie wieloma pulami węzłów dla klastra w usłudze Azure Kubernetes Service (AKS)Create and manage multiple node pools for a cluster in Azure Kubernetes Service (AKS)

W usłudze Azure Kubernetes Service (AKS) węzły tej samej konfiguracji są pogrupowane w Pule węzłów.In Azure Kubernetes Service (AKS), nodes of the same configuration are grouped together into node pools. Te pule węzłów zawierają bazowe maszyny wirtualne, na których działają aplikacje.These node pools contain the underlying VMs that run your applications. Początkowa liczba węzłów i ich rozmiar (SKU) są definiowane podczas tworzenia klastra AKS, który tworzy pulę węzłów systemowych.The initial number of nodes and their size (SKU) is defined when you create an AKS cluster, which creates a system node pool. Aby obsługiwać aplikacje, które mają różne wymagania dotyczące obliczeń lub magazynu, można utworzyć dodatkowe Pule węzłów użytkownika.To support applications that have different compute or storage demands, you can create additional user node pools. Pule węzłów systemu stanowią podstawowy cel hostingu krytycznych podstaw systemu, takich jak CoreDNS i tunnelfront.System node pools serve the primary purpose of hosting critical system pods such as CoreDNS and tunnelfront. Pule węzłów użytkowników stanowią podstawowy cel hostingu podstaw aplikacji.User node pools serve the primary purpose of hosting your application pods. Jednak w ramach klastra AKS można zaplanować pulę aplikacji w puli węzłów systemu.However, application pods can be scheduled on system node pools if you wish to only have one pool in your AKS cluster. Pule węzłów użytkowników to miejsce, w którym umieszczane są Twoje zasobniki specyficzne dla aplikacji.User node pools are where you place your application-specific pods. Na przykład można użyć tych dodatkowych pul węzłów użytkownika, aby udostępnić procesory GPU dla aplikacji intensywnie korzystających z mocy obliczeniowej lub uzyskać dostęp do magazynu SSD o wysokiej wydajności.For example, use these additional user node pools to provide GPUs for compute-intensive applications, or access to high-performance SSD storage.

Uwaga

Ta funkcja umożliwia większą kontrolę nad sposobem tworzenia wielu pul węzłów i zarządzania nimi.This feature enables higher control over how to create and manage multiple node pools. W związku z tym wymagane są osobne polecenia do tworzenia/aktualizowania/usuwania.As a result, separate commands are required for create/update/delete. Wcześniej operacje klastra przez az aks create lub az aks update używają interfejsu API managedCluster oraz były jedyną opcją zmiany płaszczyzny kontroli i puli jednego węzła.Previously cluster operations through az aks create or az aks update used the managedCluster API and were the only option to change your control plane and a single node pool. Ta funkcja uwidacznia oddzielny zestaw operacji dla pul agentów za pomocą interfejsu API nieznanej obiektu agentpool i wymaga użycia az aks nodepool polecenia ustawionego do wykonywania operacji w puli poszczególnych węzłów.This feature exposes a separate operation set for agent pools through the agentPool API and require use of the az aks nodepool command set to execute operations on an individual node pool.

W tym artykule pokazano, jak utworzyć wiele pul węzłów i zarządzać nimi w klastrze AKS.This article shows you how to create and manage multiple node pools in an AKS cluster.

Przed rozpoczęciemBefore you begin

Wymagany jest interfejs wiersza polecenia platformy Azure w wersji 2.2.0 lub nowszej.You need the Azure CLI version 2.2.0 or later installed and configured. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana.Run az --version to find the version. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.If you need to install or upgrade, see Install Azure CLI.

OgraniczeniaLimitations

Następujące ograniczenia są stosowane podczas tworzenia klastrów AKS i zarządzania nimi, które obsługują pule wielu węzłów:The following limitations apply when you create and manage AKS clusters that support multiple node pools:

  • Zobacz limity przydziałów, ograniczenia rozmiaru maszyny wirtualnej i dostępność regionów w usłudze Azure Kubernetes Service (AKS).See Quotas, virtual machine size restrictions, and region availability in Azure Kubernetes Service (AKS).
  • Pule węzłów systemowych można usunąć, pod warunkiem, że w klastrze AKS istnieje inna Pula węzłów systemu.You can delete system node pools, provided you have another system node pool to take its place in the AKS cluster.
  • Pule systemu muszą zawierać co najmniej jeden węzeł, a pule węzłów użytkownika mogą zawierać zero lub więcej węzłów.System pools must contain at least one node, and user node pools may contain zero or more nodes.
  • Klaster AKS musi używać usługi równoważenia obciążenia standardowej jednostki SKU do korzystania z wielu pul węzłów, ale ta funkcja nie jest obsługiwana w przypadku podstawowych modułów równoważenia obciążenia SKU.The AKS cluster must use the Standard SKU load balancer to use multiple node pools, the feature is not supported with Basic SKU load balancers.
  • Klaster AKS musi używać zestawów skalowania maszyn wirtualnych dla węzłów.The AKS cluster must use virtual machine scale sets for the nodes.
  • Nazwa puli węzłów może zawierać tylko małe znaki alfanumeryczne i musi zaczynać się małą literą.The name of a node pool may only contain lowercase alphanumeric characters and must begin with a lowercase letter. W przypadku pul węzłów systemu Linux długość musi należeć do zakresu od 1 do 12 znaków, długość musi mieć od 1 do 6 znaków.For Linux node pools the length must be between 1 and 12 characters, for Windows node pools the length must be between 1 and 6 characters.
  • Wszystkie pule węzłów muszą znajdować się w tej samej sieci wirtualnej.All node pools must reside in the same virtual network.
  • Podczas tworzenia wielu pul węzłów podczas tworzenia klastra wszystkie wersje Kubernetes używane przez pule węzłów muszą być zgodne z wersją ustawioną dla płaszczyzny kontroli.When creating multiple node pools at cluster create time, all Kubernetes versions used by node pools must match the version set for the control plane. Tę aktualizację można zaktualizować po zainicjowaniu obsługi administracyjnej klastra przy użyciu operacji dla puli węzłów.This can be updated after the cluster has been provisioned by using per node pool operations.

Tworzenie klastra AKSCreate an AKS cluster

Ważne

W przypadku uruchamiania jednej puli węzłów systemu dla klastra AKS w środowisku produkcyjnym zaleca się użycie co najmniej trzech węzłów dla puli węzłów.If you run a single system node pool for your AKS cluster in a production environment, we recommend you use at least three nodes for the node pool.

Aby rozpocząć, Utwórz klaster AKS z pulą jednego węzła.To get started, create an AKS cluster with a single node pool. W poniższym przykładzie za pomocą polecenia AZ Group Create można utworzyć grupę zasobów o nazwie Moja zasobów w regionie wschodnim .The following example uses the az group create command to create a resource group named myResourceGroup in the eastus region. Klaster AKS o nazwie myAKSCluster jest tworzony przy użyciu polecenia AZ AKS Create .An AKS cluster named myAKSCluster is then created using the az aks create command.

Uwaga

Jednostka SKU usługi równoważenia obciążenia w warstwie podstawowa nie jest obsługiwana w przypadku używania wielu pul węzłów.The Basic load balancer SKU is not supported when using multiple node pools. Domyślnie klastry AKS są tworzone z użyciem jednostki SKU modułu równoważenia obciążenia w ramach interfejsu wiersza polecenia platformy Azure i Azure Portal.By default, AKS clusters are created with the Standard load balancer SKU from the Azure CLI and 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

Utworzenie klastra trwa kilka minut.It takes a few minutes to create the cluster.

Uwaga

Aby zapewnić niezawodne działanie klastra, należy uruchomić co najmniej 2 (dwa) węzły w domyślnej puli węzłów, ponieważ podstawowe usługi systemowe działają w tej puli węzłów.To ensure your cluster operates reliably, you should run at least 2 (two) nodes in the default node pool, as essential system services are running across this node pool.

Gdy klaster jest gotowy, użyj polecenia AZ AKS Get-Credentials , aby uzyskać poświadczenia klastra do użycia z programem kubectl :When the cluster is ready, use the az aks get-credentials command to get the cluster credentials for use with kubectl:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

Dodawanie puli węzłówAdd a node pool

Klaster utworzony w poprzednim kroku ma pulę jednego węzła.The cluster created in the previous step has a single node pool. Dodajmy do drugiego pulę węzłów za pomocą polecenia AZ AKS nodepool Add .Let's add a second node pool using the az aks nodepool add command. Poniższy przykład tworzy pulę węzłów o nazwie mynodepool , która uruchamia 3 węzły:The following example creates a node pool named mynodepool that runs 3 nodes:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 3

Uwaga

Nazwa puli węzłów musi rozpoczynać się od małej litery i może zawierać tylko znaki alfanumeryczne.The name of a node pool must start with a lowercase letter and can only contain alphanumeric characters. W przypadku pul węzłów systemu Linux długość musi należeć do zakresu od 1 do 12 znaków, długość musi mieć od 1 do 6 znaków.For Linux node pools the length must be between 1 and 12 characters, for Windows node pools the length must be between 1 and 6 characters.

Aby wyświetlić stan pul węzłów, użyj polecenia AZ AKS Node Pool list i określ grupę zasobów i nazwę klastra:To see the status of your node pools, use the az aks node pool list command and specify your resource group and cluster name:

az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster

Następujące przykładowe dane wyjściowe pokazują, że mynodepool został pomyślnie utworzony z trzema węzłami w puli węzłów.The following example output shows that mynodepool has been successfully created with three nodes in the node pool. Gdy klaster AKS został utworzony w poprzednim kroku, utworzono domyślny nodepool1 z liczbą węzłów wynoszącą 2.When the AKS cluster was created in the previous step, a default nodepool1 was created with a node count of 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",
    ...
  }
]

Porada

Jeśli VmSize nie zostanie określony podczas dodawania puli węzłów, domyślny rozmiar jest Standard_D2s_v3 dla pul węzłów systemu Windows i Standard_DS2_v2 dla pul węzłów w systemie Linux.If no VmSize is specified when you add a node pool, the default size is Standard_D2s_v3 for Windows node pools and Standard_DS2_v2 for Linux node pools. Jeśli OrchestratorVersion nie jest określony, domyślnie jest to taka sama wersja, jak płaszczyzna kontroli.If no OrchestratorVersion is specified, it defaults to the same version as the control plane.

Dodawanie puli węzłów z unikatową podsiecią (wersja zapoznawcza)Add a node pool with a unique subnet (preview)

Obciążenie może wymagać dzielenia węzłów klastra na oddzielne pule na potrzeby izolacji logicznej.A workload may require splitting a cluster's nodes into separate pools for logical isolation. Izolacja ta może być obsługiwana w oddzielnym podsieciach przeznaczonych dla każdej puli węzłów w klastrze.This isolation can be supported with separate subnets dedicated to each node pool in the cluster. Może to dotyczyć wymagań, takich jak brak ciągłej przestrzeni adresowej sieci wirtualnej do podziału między pule węzłów.This can address requirements such as having non-contiguous virtual network address space to split across node pools.

OgraniczeniaLimitations

  • Wszystkie podsieci przypisane do nodepools muszą należeć do tej samej sieci wirtualnej.All subnets assigned to nodepools must belong to the same virtual network.
  • Aby zapewnić krytyczne funkcje, takie jak rozpoznawanie nazw DNS za pośrednictwem coreDNS, konieczne jest uzyskanie dostępu do wszystkich węzłów w klastrze.System pods must have access to all nodes in the cluster to provide critical functionality such as DNS resolution via coreDNS.
  • Przypisanie unikatowej podsieci na pulę węzłów jest ograniczone do usługi Azure CNI w trakcie okresu zapoznawczego.Assignment of a unique subnet per node pool is limited to Azure CNI during preview.
  • Korzystanie z zasad sieciowych z unikatową pulą podsieci na węzeł nie jest obsługiwane w ramach wersji zapoznawczej.Using network policies with a unique subnet per node pool is not supported during preview.

Aby utworzyć pulę węzłów z dedykowaną podsiecią, należy przekazać identyfikator zasobu podsieci jako dodatkowy parametr podczas tworzenia puli węzłów.To create a node pool with a dedicated subnet, pass the subnet resource ID as an additional parameter when creating a node pool.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 3 \
    --vnet-subnet-id <YOUR_SUBNET_RESOURCE_ID>

Uaktualnianie puli węzłówUpgrade a node pool

Uwaga

Operacje uaktualniania i skalowania w klastrze lub puli węzłów nie mogą występować jednocześnie, jeśli zostanie zwrócony błąd.Upgrade and scale operations on a cluster or node pool cannot occur simultaneously, if attempted an error is returned. W zamian każdy typ operacji musi zakończyć się w odniesieniu do zasobu docelowego przed następnym żądaniem tego samego zasobu.Instead, each operation type must complete on the target resource prior to the next request on that same resource. Więcej informacji na ten temat znajdziesz w naszym przewodniku rozwiązywania problemów.Read more about this on our troubleshooting guide.

W poleceniach w tej sekcji wyjaśniono, jak uaktualnić pojedynczą określoną pulę węzłów.The commands in this section explain how to upgrade a single specific node pool. Relacja między uaktualnianiem wersji Kubernetes płaszczyzny kontroli a pulą węzłów znajduje się w sekcji poniżej.The relationship between upgrading the Kubernetes version of the control plane and the node pool are explained in the section below.

Uwaga

Wersja obrazu systemu operacyjnego puli węzłów jest powiązana z wersją Kubernetes klastra.The node pool OS image version is tied to the Kubernetes version of the cluster. Uaktualnienia obrazu systemu operacyjnego są uzyskiwane tylko po uaktualnieniu klastra.You will only get OS image upgrades, following a cluster upgrade.

Ponieważ w tym przykładzie istnieją dwa pule węzłów, należy użyć AZ AKS nodepool upgrade , aby uaktualnić pulę węzłów.Since there are two node pools in this example, we must use az aks nodepool upgrade to upgrade a node pool. Aby wyświetlić dostępne uaktualnienia, użyj AZ AKS Get-UpgradesTo see the available upgrades use az aks get-upgrades

az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster

Uaktualnimy mynodepool.Let's upgrade the mynodepool. Użyj polecenia AZ AKS nodepool upgrade , aby uaktualnić pulę węzłów, jak pokazano w następującym przykładzie:Use the az aks nodepool upgrade command to upgrade the node pool, as shown in the following example:

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --kubernetes-version KUBERNETES_VERSION \
    --no-wait

Ponownie utwórz listę stan pul węzłów za pomocą polecenia AZ AKS Node Pool list .List the status of your node pools again using the az aks node pool list command. Poniższy przykład pokazuje, że mynodepool jest w stanie uaktualnienia do KUBERNETES_VERSION:The following example shows that mynodepool is in the Upgrading state to 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",
    ...
  }
]

Uaktualnienie węzłów do określonej wersji może potrwać kilka minut.It takes a few minutes to upgrade the nodes to the specified version.

Najlepszym rozwiązaniem jest uaktualnienie wszystkich pul węzłów w klastrze AKS do tej samej wersji Kubernetes.As a best practice, you should upgrade all node pools in an AKS cluster to the same Kubernetes version. Domyślnym zachowaniem programu az aks upgrade jest uaktualnienie wszystkich pul węzłów razem z płaszczyzną kontroli w celu osiągnięcia tego wyrównania.The default behavior of az aks upgrade is to upgrade all node pools together with the control plane to achieve this alignment. Możliwość uaktualnienia poszczególnych pul węzłów umożliwia przeprowadzenie uaktualnienia stopniowego i zaplanowanie między pulami węzłów, aby zachować czas działania aplikacji w ramach powyższych ograniczeń wymienionych powyżej.The ability to upgrade individual node pools lets you perform a rolling upgrade and schedule pods between node pools to maintain application uptime within the above constraints mentioned.

Uaktualnianie płaszczyzny kontroli klastra z wieloma pulami węzłówUpgrade a cluster control plane with multiple node pools

Uwaga

Kubernetes używa standardowego schematu obsługi wersji semantycznej .Kubernetes uses the standard Semantic Versioning versioning scheme. Numer wersji jest wyrażony jako x. y. z, gdzie x jest wersją główną, y jest wersją pomocniczą, a z to wersja poprawki.The version number is expressed as x.y.z, where x is the major version, y is the minor version, and z is the patch version. Na przykład w wersji 1.12.61 jest wersją główną, 12 jest wersją pomocniczą, a 6 to wersja poprawki.For example, in version 1.12.6, 1 is the major version, 12 is the minor version, and 6 is the patch version. Wersja Kubernetes płaszczyzny kontroli i początkowa Pula węzłów są ustawiane podczas tworzenia klastra.The Kubernetes version of the control plane and the initial node pool are set during cluster creation. Wszystkie dodatkowe pule węzłów mają ustawioną wersję Kubernetes po dodaniu ich do klastra.All additional node pools have their Kubernetes version set when they are added to the cluster. Wersje Kubernetes mogą się różnić między pulami węzłów, a także między pulą węzłów a płaszczyzną kontroli.The Kubernetes versions may differ between node pools as well as between a node pool and the control plane.

Klaster AKS ma dwa obiekty zasobów klastra z skojarzonymi wersjami Kubernetes.An AKS cluster has two cluster resource objects with Kubernetes versions associated.

  1. Kubernetes wersja płaszczyzny kontroli klastra.A cluster control plane Kubernetes version.
  2. Pula węzłów z wersją Kubernetes.A node pool with a Kubernetes version.

Płaszczyzna kontrolna jest mapowana na jedną lub wiele pul węzłów.A control plane maps to one or many node pools. Zachowanie operacji uaktualniania zależy od tego, które polecenie interfejsu wiersza polecenia platformy Azure jest używane.The behavior of an upgrade operation depends on which Azure CLI command is used.

Uaktualnianie płaszczyzny kontroli AKS wymaga użycia az aks upgrade .Upgrading an AKS control plane requires using az aks upgrade. To polecenie uaktualnia wersję płaszczyzny kontroli i wszystkie pule węzłów w klastrze.This command upgrades the control plane version and all node pools in the cluster.

Wydawanie az aks upgrade polecenia z --control-plane-only flagą uaktualnia tylko płaszczyznę kontroli klastra.Issuing the az aks upgrade command with the --control-plane-only flag upgrades only the cluster control plane. Żadna ze skojarzonych pul węzłów w klastrze nie zostanie zmieniona.None of the associated node pools in the cluster are changed.

Uaktualnianie poszczególnych pul węzłów wymaga użycia az aks nodepool upgrade .Upgrading individual node pools requires using az aks nodepool upgrade. To polecenie uaktualnia tylko pulę węzłów docelowych z określoną wersją KubernetesThis command upgrades only the target node pool with the specified Kubernetes version

Reguły walidacji dla uaktualnieńValidation rules for upgrades

Prawidłowe uaktualnienia Kubernetes dla płaszczyzny kontroli i pul węzłów klastra są weryfikowane przez następujące zestawy reguł.The valid Kubernetes upgrades for a cluster's control plane and node pools are validated by the following sets of rules.

  • Reguły dotyczące prawidłowych wersji do uaktualnienia pul węzłów:Rules for valid versions to upgrade node pools:

    • Wersja puli węzłów musi mieć taką samą wersję główną jak płaszczyzna kontroli.The node pool version must have the same major version as the control plane.
    • Wersja pomocnicza puli węzłów musi znajdować się w dwóch mniejszych wersjach wersji płaszczyzny kontroli.The node pool minor version must be within two minor versions of the control plane version.
    • Wersja puli węzłów nie może być większa niż wersja formantu major.minor.patch .The node pool version cannot be greater than the control major.minor.patch version.
  • Reguły przesyłania operacji uaktualniania:Rules for submitting an upgrade operation:

    • Nie można zmienić wersji Kubernetes płaszczyzny kontroli ani puli węzłów.You cannot downgrade the control plane or a node pool Kubernetes version.
    • Jeśli nie określono wersji Kubernetes puli węzłów, zachowanie zależy od używanego klienta.If a node pool Kubernetes version is not specified, behavior depends on the client being used. Deklaracja w szablonach Menedżer zasobów powraca do istniejącej wersji zdefiniowanej dla puli węzłów, jeśli jest używana, jeśli żadna z nich nie jest ustawiona, zostanie użyta wersja płaszczyzny kontroli.Declaration in Resource Manager templates falls back to the existing version defined for the node pool if used, if none is set the control plane version is used to fall back on.
    • Można uaktualnić lub skalować płaszczyznę kontroli lub pulę węzłów w danym momencie, nie można jednocześnie przesłać wielu operacji na pojedynczej płaszczyźnie kontroli lub w puli węzłów.You can either upgrade or scale a control plane or a node pool at a given time, you cannot submit multiple operations on a single control plane or node pool resource simultaneously.

Ręczne skalowanie puli węzłówScale a node pool manually

Gdy obciążenie aplikacji wymaga zmiany, może być konieczne skalowanie liczby węzłów w puli węzłów.As your application workload demands change, you may need to scale the number of nodes in a node pool. Liczbę węzłów można skalować w górę lub w dół.The number of nodes can be scaled up or down.

Aby skalować liczbę węzłów w puli węzłów, użyj polecenia AZ AKS Node Pool Scale .To scale the number of nodes in a node pool, use the az aks node pool scale command. Poniższy przykład skaluje liczbę węzłów w mynodepool do 5:The following example scales the number of nodes in mynodepool to 5:

az aks nodepool scale \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 5 \
    --no-wait

Ponownie utwórz listę stan pul węzłów za pomocą polecenia AZ AKS Node Pool list .List the status of your node pools again using the az aks node pool list command. Poniższy przykład pokazuje, że mynodepool jest w stanie skalowania z nową liczbą 5 węzłów:The following example shows that mynodepool is in the Scaling state with a new count of 5 nodes:

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",
    ...
  }
]

Ukończenie operacji skalowania może potrwać kilka minut.It takes a few minutes for the scale operation to complete.

Automatyczne skalowanie określonej puli węzłów przez włączenie automatycznego skalowania klastraScale a specific node pool automatically by enabling the cluster autoscaler

AKS oferuje osobną funkcję automatycznego skalowania pul węzłów za pomocą funkcji zwanej autoskalowaniem klastra.AKS offers a separate feature to automatically scale node pools with a feature called the cluster autoscaler. Tę funkcję można włączyć dla puli węzłów z unikatowymi minimalnymi i maksymalnymi liczbami skalowania na pulę węzłów.This feature can be enabled per node pool with unique minimum and maximum scale counts per node pool. Dowiedz się , jak korzystać z automatycznego skalowania klastra na pulę węzłów.Learn how to use the cluster autoscaler per node pool.

Usuwanie puli węzłówDelete a node pool

Jeśli pula nie jest już potrzebna, można ją usunąć i usunąć źródłowe węzły maszyn wirtualnych.If you no longer need a pool, you can delete it and remove the underlying VM nodes. Aby usunąć pulę węzłów, użyj polecenia AZ AKS Node Pool Delete i określ nazwę puli węzłów.To delete a node pool, use the az aks node pool delete command and specify the node pool name. Poniższy przykład usuwa mynoodepool utworzone w poprzednich krokach:The following example deletes the mynoodepool created in the previous steps:

Przestroga

Brak opcji odzyskiwania dla utraty danych, które mogą wystąpić po usunięciu puli węzłów.There are no recovery options for data loss that may occur when you delete a node pool. Jeśli nie można zaplanować puli dla innych pul węzłów, te aplikacje są niedostępne.If pods can't be scheduled on other node pools, those applications are unavailable. Upewnij się, że nie usuniesz puli węzłów, gdy aplikacje w użyciu nie mają kopii zapasowych danych ani nie mogą być uruchamiane na innych pulach węzłów w klastrze.Make sure you don't delete a node pool when in-use applications don't have data backups or the ability to run on other node pools in your cluster.

az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name mynodepool --no-wait

Następujące przykładowe dane wyjściowe z polecenia AZ AKS Node Pool list pokazują, że mynodepool jest w stanie usuwania :The following example output from the az aks node pool list command shows that mynodepool is in the Deleting state:

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",
    ...
  }
]

Usunięcie węzłów i puli węzłów może potrwać kilka minut.It takes a few minutes to delete the nodes and the node pool.

Określanie rozmiaru maszyny wirtualnej dla puli węzłówSpecify a VM size for a node pool

W poprzednich przykładach w celu utworzenia puli węzłów dla węzłów utworzonych w klastrze użyto domyślnego rozmiaru maszyny wirtualnej.In the previous examples to create a node pool, a default VM size was used for the nodes created in the cluster. Bardziej typowy scenariusz polega na tworzeniu pul węzłów o różnych rozmiarach i możliwościach maszyn wirtualnych.A more common scenario is for you to create node pools with different VM sizes and capabilities. Można na przykład utworzyć pulę węzłów zawierającą węzły z dużą ilością procesora lub pamięci albo pulę węzłów, która zapewnia obsługę procesora GPU.For example, you may create a node pool that contains nodes with large amounts of CPU or memory, or a node pool that provides GPU support. W następnym kroku należy użyć przystawek i tolerowania , aby poinformować usługę Kubernetes Scheduler, jak ograniczyć dostęp do zasobników, które mogą być uruchamiane w tych węzłach.In the next step, you use taints and tolerations to tell the Kubernetes scheduler how to limit access to pods that can run on these nodes.

W poniższym przykładzie Utwórz pulę węzłów opartą na procesorze GPU, która używa Standard_NC6 rozmiaru maszyny wirtualnej.In the following example, create a GPU-based node pool that uses the Standard_NC6 VM size. Te maszyny wirtualne są obsługiwane przez kartę NVIDIA Tesla K80.These VMs are powered by the NVIDIA Tesla K80 card. Aby uzyskać informacje na temat dostępnych rozmiarów maszyn wirtualnych, zobacz rozmiary maszyn wirtualnych z systemem Linux na platformie Azure.For information on available VM sizes, see Sizes for Linux virtual machines in Azure.

Utwórz pulę węzłów za pomocą polecenia AZ AKS Node Pool Add .Create a node pool using the az aks node pool add command again. Tym razem Określ nazwę gpunodepooli Użyj --node-vm-size parametru, aby określić rozmiar Standard_NC6 :This time, specify the name gpunodepool, and use the --node-vm-size parameter to specify the Standard_NC6 size:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunodepool \
    --node-count 1 \
    --node-vm-size Standard_NC6 \
    --no-wait

Następujące przykładowe dane wyjściowe z polecenia AZ AKS Node Pool list pokazują, że gpunodepool tworzy węzły o określonym VmSize:The following example output from the az aks node pool list command shows that gpunodepool is Creating nodes with the specified 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",
    ...
  }
]

Pomyślne utworzenie gpunodepool może potrwać kilka minut.It takes a few minutes for the gpunodepool to be successfully created.

Zaplanuj użycie zasobników z zmianami i tolerowaniemSchedule pods using taints and tolerations

W klastrze znajdują się teraz dwa pule węzłów — domyślna pula węzłów została początkowo utworzona i Pula węzłów oparta na procesorze GPU.You now have two node pools in your cluster - the default node pool initially created, and the GPU-based node pool. Użyj polecenia kubectl Pobierz węzły polecenie, aby wyświetlić węzły w klastrze.Use the kubectl get nodes command to view the nodes in your cluster. Następujące przykładowe dane wyjściowe przedstawiają węzły:The following example output shows the nodes:

kubectl get nodes
NAME                                 STATUS   ROLES   AGE     VERSION
aks-gpunodepool-28993262-vmss000000  Ready    agent   4m22s   v1.15.7
aks-nodepool1-28993262-vmss000000    Ready    agent   115m    v1.15.7

Harmonogram Kubernetes może używać przyniesień i tolerowanych elementów w celu ograniczenia obciążeń, które mogą być uruchamiane w węzłach.The Kubernetes scheduler can use taints and tolerations to restrict what workloads can run on nodes.

  • Do węzła jest stosowany obiekt, który wskazuje na ich zaplanowanie tylko określonych zasobników.A taint is applied to a node that indicates only specific pods can be scheduled on them.
  • Tolerowana jest następnie stosowana do elementu, który umożliwia im tolerowanie kształtu węzła.A toleration is then applied to a pod that allows them to tolerate a node's taint.

Aby uzyskać więcej informacji na temat korzystania z zaawansowanych funkcji usługi Kubernetes, zobacz najlepsze rozwiązania dotyczące zaawansowanych funkcji usługi Scheduler w AKSFor more information on how to use advanced Kubernetes scheduled features, see Best practices for advanced scheduler features in AKS

W tym przykładzie Zastosuj przybarwienie do węzła opartego na procesorach GPU przy użyciu polecenia--Node-.In this example, apply a taint to your GPU-based node using the --node-taints command. Określ nazwę węzła opartego na procesorze GPU z danych wyjściowych poprzedniego kubectl get nodes polecenia.Specify the name of your GPU-based node from the output of the previous kubectl get nodes command. Ten obiekt jest stosowany jako para klucz = wartość , a następnie opcja planowania.The taint is applied as a key=value pair and then a scheduling option. W poniższym przykładzie używa pary SKU = GPU i definiujemy w inny sposób możliwości noscheduler:The following example uses the sku=gpu pair and defines pods otherwise have the NoSchedule ability:

az aks nodepool add --node-taints aks-gpunodepool-28993262-vmss000000 sku=gpu:NoSchedule

Poniższy podstawowy przykład manifestu YAML korzysta z tolerowania, aby umożliwić usłudze Kubernetes Scheduler uruchamianie NGINX na węźle opartym na procesorze GPU.The following basic example YAML manifest uses a toleration to allow the Kubernetes scheduler to run an NGINX pod on the GPU-based node. Aby uzyskać bardziej odpowiedni, ale czasochłonny Przykładowo, aby uruchomić zadanie Tensorflow w odniesieniu do zestawu danych MNIST ręcznie, zobacz Korzystanie z procesorów GPU na potrzeby obciążeń intensywnie korzystających z obliczeń na AKS.For a more appropriate, but time-intensive example to run a Tensorflow job against the MNIST dataset, see Use GPUs for compute-intensive workloads on AKS.

Utwórz plik o nazwie gpu-toleration.yaml i skopiuj w poniższym przykładzie YAML:Create a file named gpu-toleration.yaml and copy in the following example YAML:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - image: nginx:1.15.9
    name: mypod
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 1
        memory: 2G
  tolerations:
  - key: "sku"
    operator: "Equal"
    value: "gpu"
    effect: "NoSchedule"

Zaplanuj przy użyciu kubectl apply -f gpu-toleration.yaml polecenia:Schedule the pod using the kubectl apply -f gpu-toleration.yaml command:

kubectl apply -f gpu-toleration.yaml

Zaplanowanie i ściągnięcie obrazu NGINX może potrwać kilka sekund.It takes a few seconds to schedule the pod and pull the NGINX image. Użyj polecenia polecenia kubectl opisz pod , aby wyświetlić stan pod.Use the kubectl describe pod command to view the pod status. Następujące wąskie przykładowe dane wyjściowe pokazują, że jest stosowane tolerowanie jednostki SKU = GPU: NoSchedule .The following condensed example output shows the sku=gpu:NoSchedule toleration is applied. W sekcji Events Scheduler przypisano do węzła AKS-gpunodepool-28993262-vmss000000 procesora GPU:In the events section, the scheduler has assigned the pod to the aks-gpunodepool-28993262-vmss000000 GPU-based node:

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-gpunodepool-28993262-vmss000000
  Normal  Pulling    4m47s  kubelet, aks-gpunodepool-28993262-vmss000000  pulling image "nginx:1.15.9"
  Normal  Pulled     4m43s  kubelet, aks-gpunodepool-28993262-vmss000000  Successfully pulled image "nginx:1.15.9"
  Normal  Created    4m40s  kubelet, aks-gpunodepool-28993262-vmss000000  Created container
  Normal  Started    4m40s  kubelet, aks-gpunodepool-28993262-vmss000000  Started container

Na węzłach w gpunodepoolmożna zaplanować tylko te, dla których zastosowano to tolerowanie.Only pods that have this toleration applied can be scheduled on nodes in gpunodepool. Wszystkie inne na stronie zaplanowano w puli węzłów nodepool1 .Any other pod would be scheduled in the nodepool1 node pool. W przypadku tworzenia dodatkowych pul węzłów można użyć dodatkowych przydziałów i tolerowania, aby ograniczyć liczbę elementów, które można zaplanować w tych zasobach węzła.If you create additional node pools, you can use additional taints and tolerations to limit what pods can be scheduled on those node resources.

Określ przebarwienie, etykietę lub tag dla puli węzłówSpecify a taint, label, or tag for a node pool

Podczas tworzenia puli węzłów można dodawać do niej takie same, etykiety lub Tagi.When creating a node pool, you can add taints, labels, or tags to that node pool. Po dodaniu opcji przeciąganie, etykietka lub tag wszystkie węzły w puli węzłów również pobierają ten obiekt, etykietę lub tag.When you add a taint, label, or tag, all nodes within that node pool also get that taint, label, or tag.

Aby utworzyć pulę węzłów z przebarwieniem, użyj AZ AKS nodepool Add.To create a node pool with a taint, use az aks nodepool add. Określ nazwę taintnp i użyj parametru, --node-taints Aby określić jednostkę SKU = GPU: NoSchedule dla zmiany czasu.Specify the name taintnp and use the --node-taints parameter to specify sku=gpu:NoSchedule for the taint.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name taintnp \
    --node-count 1 \
    --node-taints sku=gpu:NoSchedule \
    --no-wait

Następujące przykładowe dane wyjściowe z polecenia AZ AKS nodepool list pokazują, że taintnp tworzy węzły z określonym nodeTaints:The following example output from the az aks nodepool list command shows that taintnp is Creating nodes with the specified nodeTaints:

$ az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster

[
  {
    ...
    "count": 1,
    ...
    "name": "taintnp",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "nodeTaints":  [
      "sku=gpu:NoSchedule"
    ],
    ...
  },
 ...
]

Informacje o zasobie są widoczne w Kubernetes na potrzeby obsługi reguł planowania dla węzłów.The taint information is visible in Kubernetes for handling scheduling rules for nodes.

Podczas tworzenia puli węzłów można również dodać etykiety do puli węzłów.You can also add labels to a node pool during node pool creation. Etykiety ustawione w puli węzłów są dodawane do każdego węzła w puli węzłów.Labels set at the node pool are added to each node in the node pool. Te etykiety są widoczne w Kubernetes na potrzeby obsługi reguł planowania dla węzłów.These labels are visible in Kubernetes for handling scheduling rules for nodes.

Aby utworzyć pulę węzłów za pomocą etykiety, użyj AZ AKS nodepool Add.To create a node pool with a label, use az aks nodepool add. Określ nazwę labelnp i użyj parametru, --labels Aby określić Wydział = IT i costcenter = 9999 dla etykiet.Specify the name labelnp and use the --labels parameter to specify dept=IT and costcenter=9999 for labels.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name labelnp \
    --node-count 1 \
    --labels dept=IT costcenter=9999 \
    --no-wait

Uwaga

Etykietę można ustawić tylko dla pul węzłów podczas tworzenia puli węzłów.Label can only be set for node pools during node pool creation. Etykiety muszą być również parą klucz/wartość i mieć prawidłową składnię.Labels must also be a key/value pair and have a valid syntax.

Następujące przykładowe dane wyjściowe z polecenia AZ AKS nodepool list pokazują, że labelnp tworzy węzły z określonym nodeLabels:The following example output from the az aks nodepool list command shows that labelnp is Creating nodes with the specified 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"
    },
    ...
  },
 ...
]

Możesz zastosować tag platformy Azure do pul węzłów w klastrze AKS.You can apply an Azure tag to node pools in your AKS cluster. Tagi zastosowane do puli węzłów są stosowane do każdego węzła w puli węzłów i są utrwalane za pomocą uaktualnień.Tags applied to a node pool are applied to each node within the node pool and are persisted through upgrades. Tagi są również stosowane do nowych węzłów dodanych do puli węzłów podczas operacji skalowania w poziomie.Tags are also applied to new nodes added to a node pool during scale-out operations. Dodanie tagu może ułatwić wykonywanie zadań, takich jak śledzenie zasad lub szacowanie kosztów.Adding a tag can help with tasks such as policy tracking or cost estimation.

Utwórz pulę węzłów za pomocą polecenia AZ AKS nodepool Add.Create a node pool using the az aks nodepool add. Określ nazwę tagnodepool i użyj parametru, --tag Aby określić Wydział = IT i costcenter = 9999 dla tagów.Specify the name tagnodepool and use the --tag parameter to specify dept=IT and costcenter=9999 for tags.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name tagnodepool \
    --node-count 1 \
    --tags dept=IT costcenter=9999 \
    --no-wait

Uwaga

Przy --tags użyciu polecenia AZ AKS nodepool Update można także użyć parametru, jak również podczas tworzenia klastra.You can also use the --tags parameter when using az aks nodepool update command as well as during cluster creation. Podczas tworzenia klastra --tags parametr stosuje tag do początkowej puli węzłów utworzonej w klastrze.During cluster creation, the --tags parameter applies the tag to the initial node pool created with the cluster. Wszystkie nazwy tagów muszą być zgodne z ograniczeniami w sposobie używania tagów do organizowania zasobów platformy Azure.All tag names must adhere to the limitations in Use tags to organize your Azure resources. Aktualizacja puli węzłów za pomocą --tags parametru aktualizuje wszystkie istniejące wartości tagów i dołącza wszelkie nowe tagi.Updating a node pool with the --tags parameter updates any existing tag values and appends any new tags. Na przykład jeśli Pula węzłów ma Wydział = IT i costcenter = 9999 dla tagów i Zaktualizowano ją z zespołem = dev i costcenter = 111 dla tagów, nodepool byłoby miały Wydział = IT, costcenter = 111i zespół = dev for Tags.For example, if your node pool had dept=IT and costcenter=9999 for tags and you updated it with team=dev and costcenter=111 for tags, you nodepool would have dept=IT, costcenter=111, and team=dev for tags.

Następujące przykładowe dane wyjściowe z polecenia AZ AKS nodepool list pokazują, że tagnodepool tworzy węzły z określonym tagiem:The following example output from the az aks nodepool list command shows that tagnodepool is Creating nodes with the specified tag:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 1,
    ...
    "name": "tagnodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "tags": {
      "dept": "IT",
      "costcenter": "9999"
    },
    ...
  },
 ...
]

Zarządzanie pulami węzłów przy użyciu szablonu Menedżer zasobówManage node pools using a Resource Manager template

W przypadku tworzenia i zarządzania zasobami przy użyciu szablonu Azure Resource Manager można zwykle zaktualizować ustawienia w szablonie i wdrożyć je ponownie w celu zaktualizowania zasobu.When you use an Azure Resource Manager template to create and managed resources, you can typically update the settings in your template and redeploy to update the resource. W przypadku pul węzłów w AKS nie można zaktualizować profilu początkowej puli węzłów po utworzeniu klastra AKS.With node pools in AKS, the initial node pool profile can't be updated once the AKS cluster has been created. To zachowanie oznacza, że nie można zaktualizować istniejącego szablonu Menedżer zasobów, wprowadzić zmiany w pulach węzłów i ponownie wdrożyć.This behavior means that you can't update an existing Resource Manager template, make a change to the node pools, and redeploy. Zamiast tego należy utworzyć oddzielny szablon Menedżer zasobów, który aktualizuje tylko pule węzłów dla istniejącego klastra AKS.Instead, you must create a separate Resource Manager template that updates only the node pools for an existing AKS cluster.

Utwórz szablon, taki jak aks-agentpools.json i wklej następujący przykładowy manifest.Create a template such as aks-agentpools.json and paste the following example manifest. Ten przykładowy szablon służy do konfigurowania następujących ustawień:This example template configures the following settings:

  • Aktualizuje pulę węzłów systemu Linux o nazwie myagentpool , aby uruchamiać trzy węzły.Updates the Linux node pool named myagentpool to run three nodes.
  • Ustawia węzły w puli węzłów do uruchomienia Kubernetes w wersji 1.15.7.Sets the nodes in the node pool to run Kubernetes version 1.15.7.
  • Określa rozmiar węzła jako Standard_DS2_v2.Defines the node size as Standard_DS2_v2.

W razie potrzeby należy edytować te wartości jako wymagające aktualizacji, dodania lub usunięcia pul węzłów:Edit these values as need to update, add, or delete node pools as needed:

{
    "$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"
            }
        }
    ]
}

Wdróż ten szablon przy użyciu polecenia AZ Group Deployment Create , jak pokazano w poniższym przykładzie.Deploy this template using the az group deployment create command, as shown in the following example. Zostanie wyświetlony monit o istniejącą nazwę i lokalizację klastra AKS:You are prompted for the existing AKS cluster name and location:

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

Porada

Możesz dodać tag do puli węzłów, dodając Właściwość tag w szablonie, jak pokazano w poniższym przykładzie.You can add a tag to your node pool by adding the tag property in the template, as shown in the following example.

...
"resources": [
{
  ...
  "properties": {
    ...
    "tags": {
      "name1": "val1"
    },
    ...
  }
}
...

Zaktualizowanie klastra AKS może potrwać kilka minut, w zależności od ustawień puli węzłów i operacji zdefiniowanych w szablonie Menedżer zasobów.It may take a few minutes to update your AKS cluster depending on the node pool settings and operations you define in your Resource Manager template.

Przypisz publiczny adres IP na węzeł dla pul węzłów (wersja zapoznawcza)Assign a public IP per node for your node pools (preview)

Ostrzeżenie

Aby korzystać z funkcji Public IP na węzeł, należy zainstalować rozszerzenie 0.4.43 w wersji zapoznawczej interfejsu wiersza polecenia.You must install the CLI preview extension 0.4.43 or greater to use the public IP per node feature.

Węzły AKS nie wymagają swoich własnych publicznych adresów IP do komunikacji.AKS nodes do not require their own public IP addresses for communication. Jednak scenariusze mogą wymagać, aby węzły w puli węzłów otrzymywały własne dedykowane publiczne adresy IP.However, scenarios may require nodes in a node pool to receive their own dedicated public IP addresses. Typowy scenariusz dotyczy obciążeń gier, gdzie konsola programu musi nawiązać bezpośrednie połączenie z maszyną wirtualną w chmurze, aby zminimalizować liczbę przeskoków.A common scenario is for gaming workloads, where a console needs to make a direct connection to a cloud virtual machine to minimize hops. Ten scenariusz można uzyskać w witrynie AKS, rejestrując się w celu uzyskania funkcji w wersji zapoznawczej, publicznego adresu IP węzła (wersja zapoznawcza).This scenario can be achieved on AKS by registering for a preview feature, Node Public IP (preview).

Aby zainstalować i zaktualizować najnowsze rozszerzenie AKS-Preview, użyj następujących poleceń interfejsu wiersza polecenia platformy Azure:To install and update the latest aks-preview extension, use the following Azure CLI commands:

az extension add --name aks-preview
az extension update --name aks-preview
az extension list

Zarejestruj się, aby uzyskać dostęp do funkcji publicznego adresu IP węzła przy użyciu następującego polecenia platformy Azure:Register for the Node Public IP feature with the following Azure CLI command:

az feature register --name NodePublicIPPreview --namespace Microsoft.ContainerService

Zarejestrowanie funkcji może potrwać kilka minut.It may take several minutes for the feature to register. Stan można sprawdzić za pomocą następującego polecenia:You can check the status with the following command:

 az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/NodePublicIPPreview')].{Name:name,State:properties.state}"

Po pomyślnej rejestracji Utwórz nową grupę zasobów.After successful registration, create a new resource group.

az group create --name myResourceGroup2 --location eastus

Utwórz nowy klaster AKS i Dołącz publiczny adres IP dla węzłów.Create a new AKS cluster and attach a public IP for your nodes. Każdy węzeł w puli węzłów otrzymuje unikatowy publiczny adres IP.Each of the nodes in the node pool receives a unique public IP. Można to sprawdzić, przeglądając wystąpienia zestawu skalowania maszyn wirtualnych.You can verify this by looking at the Virtual Machine Scale Set instances.

az aks create -g MyResourceGroup2 -n MyManagedCluster -l eastus  --enable-node-public-ip

W przypadku istniejących klastrów AKS można również dodać nową pulę węzłów i dołączyć publiczny adres IP dla węzłów.For existing AKS clusters, you can also add a new node pool, and attach a public IP for your nodes.

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

Ważne

W trakcie okresu zapoznawczego usługa Azure Instance Metadata Service nie obsługuje obecnie pobierania publicznych adresów IP dla jednostki SKU maszyny wirtualnej w warstwie Standardowa.During preview, the Azure Instance Metadata Service doesn't currently support retrieval of public IP addresses for the standard tier VM SKU. Ze względu na to ograniczenie nie można używać poleceń polecenia kubectl do wyświetlania publicznych adresów IP przypisanych do węzłów.Due to this limitation, you can't use kubectl commands to display the public IPs assigned to the nodes. Jednak adresy IP są przypisywane i funkcjonują zgodnie z oczekiwaniami.However, the IPs are assigned and function as intended. Publiczne adresy IP dla węzłów są dołączone do wystąpień w zestawie skalowania maszyn wirtualnych.The public IPs for your nodes are attached to the instances in your Virtual Machine Scale Set.

Publiczne adresy IP dla węzłów można znaleźć na różne sposoby:You can locate the public IPs for your nodes in various ways:

Ważne

Grupa zasobów węzła zawiera węzły i ich publiczne adresy IP.The node resource group contains the nodes and their public IPs. Użyj grupy zasobów węzła podczas wykonywania poleceń, aby znaleźć publiczne adresy IP dla węzłów.Use the node resource group when executing commands to find the public IPs for your nodes.

az vmss list-instance-public-ips -g MC_MyResourceGroup2_MyManagedCluster_eastus -n YourVirtualMachineScaleSetName

Oczyszczanie zasobówClean up resources

W tym artykule opisano tworzenie klastra AKS zawierającego węzły oparte na procesorach GPU.In this article, you created an AKS cluster that includes GPU-based nodes. Aby zmniejszyć niepotrzebny koszt, warto usunąć gpunodepoollub cały klaster AKS.To reduce unnecessary cost, you may want to delete the gpunodepool, or the whole AKS cluster.

Aby usunąć pulę węzłów opartą na procesorze GPU, użyj polecenia AZ AKS nodepool Delete , jak pokazano w poniższym przykładzie:To delete the GPU-based node pool, use the az aks nodepool delete command as shown in following example:

az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name gpunodepool

Aby usunąć klaster, użyj polecenia AZ Group Delete , aby usunąć grupę zasobów AKS:To delete the cluster itself, use the az group delete command to delete the AKS resource group:

az group delete --name myResourceGroup --yes --no-wait

Można również usunąć dodatkowy klaster utworzony dla publicznego adresu IP dla scenariusza pule węzłów.You can also delete the additional cluster you created for the public IP for node pools scenario.

az group delete --name myResourceGroup2 --yes --no-wait

Następne krokiNext steps

Dowiedz się więcej o pulach węzła systemowego.Learn more about system node pools.

W tym artykule przedstawiono sposób tworzenia wielu pul węzłów w klastrze AKS i zarządzania nimi.In this article, you learned how to create and manage multiple node pools in an AKS cluster. Aby uzyskać więcej informacji na temat sterowania zestawami w puli węzłów, zobacz najlepsze rozwiązania dotyczące zaawansowanych funkcji usługi Scheduler w AKS.For more information about how to control pods across node pools, see Best practices for advanced scheduler features in AKS.

Aby utworzyć i użyć pul węzłów kontenera systemu Windows Server, zobacz Tworzenie kontenera systemu Windows Server w AKS.To create and use Windows Server container node pools, see Create a Windows Server container in AKS.

Używaj grup umieszczania w sąsiedztwie , aby ograniczyć czas oczekiwania na aplikacje AKS.Use proximity placement groups to reduce latency for your AKS applications.