Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Virtuální uzly umožňují síťovou komunikaci mezi pody, které běží ve službě Azure Container Instances (ACI) a clustery AKS. Pokud chcete tuto komunikaci poskytnout, vytvoříte podsíť virtuální sítě a přiřadíte delegovaná oprávnění. Virtuální uzly fungují jenom s clustery AKS vytvořenými pomocí pokročilých sítí (Azure CNI). Ve výchozím nastavení se clustery AKS vytvářejí se základními sítěmi (kubenet). V tomto článku se dozvíte, jak vytvořit virtuální síť a podsítě a pak nasadit cluster AKS, který používá pokročilé sítě.
V tomto článku se dozvíte, jak pomocí Azure CLI vytvořit a nakonfigurovat prostředky virtuální sítě a cluster AKS s povolenými virtuálními uzly.
Než začnete
Důležité
Před použitím virtuálních uzlů s AKS si projděte omezení virtuálních uzlů AKS i omezení virtuálních sítí ACI. Tato omezení ovlivňují umístění, konfiguraci sítě a další podrobnosti konfigurace clusteru AKS i virtuálních uzlů.
Potřebujete poskytovatele služeb ACI zaregistrovaného ve vašem předplatném. Stav registrace poskytovatele ACI můžete zkontrolovat pomocí
az provider listpříkazu.az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o tableZprostředkovatel Microsoft.ContainerInstance by měl hlásit jako registrovaný, jak je znázorněno v následujícím příkladu výstupu:
Namespace RegistrationState RegistrationPolicy --------------------------- ------------------- -------------------- Microsoft.ContainerInstance Registered RegistrationRequiredPokud se poskytovatel zobrazí jako NotRegistered, zaregistrujte poskytovatele pomocí nástroje
az provider register.az provider register --namespace Microsoft.ContainerInstancePokud používáte Azure CLI, tento článek vyžaduje Azure CLI verze 2.0.49 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. Můžete také použít Azure Cloud Shell.
Spuštění služby Azure Cloud Shell
Azure Cloud Shell je bezplatné interaktivní prostředí, které můžete použít ke spuštění kroků v tomto článku. Má předinstalované a nakonfigurované běžné nástroje Azure.
Pokud chcete otevřít Cloud Shell, vyberte Vyzkoušet v pravém horním rohu bloku kódu. Cloud Shell můžete spustit také na samostatné kartě prohlížeče na adrese https://shell.azure.com/bash. Zkopírujte bloky kódu výběrem možnosti Kopírovat, vložte je do služby Cloud Shell a potom je spusťte stisknutím klávesy Enter.
Vytvoření skupiny zdrojů
Skupina prostředků Azure je logická skupina, ve které se nasazují a spravují prostředky Azure.
Pomocí příkazu
az group createvytvořte skupinu prostředků.az group create --name myResourceGroup --location eastus
Vytvoření virtuální sítě
Důležité
Virtuální uzel vyžaduje vlastní virtuální síť a přidruženou podsíť. Není možné ji přidružit ke stejné virtuální síti jako cluster AKS.
Vytvořte virtuální síť pomocí
az network vnet createpříkazu. Následující příklad vytvoří virtuální síť myVnet s předponou adresy 10.0.0.0/8 a podsítí s názvem myAKSSubnet. Předpona adresy této podsítě má výchozí hodnotu 10.240.0.0/16.az network vnet create \ --resource-group myResourceGroup \ --name myVnet \ --address-prefixes 10.0.0.0/8 \ --subnet-name myAKSSubnet \ --subnet-prefix 10.240.0.0/16Pomocí příkazu vytvořte další podsíť
az network vnet subnet createpro virtuální uzly. Následující příklad vytvoří podsíť s názvem myVirtualNodeSubnet s předponou adresy 10.241.0.0/16.az network vnet subnet create \ --resource-group myResourceGroup \ --vnet-name myVnet \ --name myVirtualNodeSubnet \ --address-prefixes 10.241.0.0/16
Vytvoření clusteru AKS se spravovanou identitou
Pomocí příkazu získejte ID
az network vnet subnet showpodsítě.az network vnet subnet show --resource-group myResourceGroup --vnet-name myVnet --name myAKSSubnet --query id -o tsvVytvořte cluster AKS pomocí
az aks createpříkazu a nahraďte<subnetId>ID získaným v předchozím kroku. Následující příklad vytvoří cluster myAKSCluster s pěti uzly.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 5 \ --network-plugin azure \ --vnet-subnet-id <subnetId> \ --generate-ssh-keysPo několika minutách se příkaz dokončí a vrátí informace o clusteru ve formátu JSON.
Další informace o spravovaných identitách najdete v tématu Použití spravovaných identit.
Povolení doplňku virtuálních uzlů
Poznámka:
Pokud máte vytvořený existující cluster Azure Kubernetes Service, který používá Azure CNI pro pokročilé sítě, měli byste být schopni povolit virtuální uzly jako doplněk pomocí rozhraní příkazového řádku.
Povolte virtuální uzly pomocí
az aks enable-addonspříkazu. Následující příklad používá podsíť s názvem myVirtualNodeSubnet vytvořená v předchozím kroku.az aks enable-addons \ --resource-group myResourceGroup \ --name myAKSCluster \ --addons virtual-node \ --subnet-name myVirtualNodeSubnet
Připojení ke clusteru
Nakonfigurujte
kubectlpro připojení k vašemu Kubernetes clusteru pomocí příkazuaz aks get-credentials. Tímto krokem se stáhnou přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes pro jejich použití.az aks get-credentials --resource-group myResourceGroup --name myAKSClusterPomocí příkazu ověřte připojení ke clusteru
kubectl get, který vrátí seznam uzlů clusteru.kubectl get nodesNásledující příklad výstupu ukazuje jeden uzel virtuálního počítače vytvořený a virtuální uzel pro Linux, virtual-node-aci-linux:
NAME STATUS ROLES AGE VERSION virtual-node-aci-linux Ready agent 28m v1.11.2 aks-agentpool-14693408-0 Ready agent 32m v1.11.2
Nasazení ukázkové aplikace
Vytvořte soubor s názvem
virtual-node.yamla zkopírujte ho v následujícím jazyce YAML. YAML naplánuje kontejner na uzlu definováním nodeSelectoru a tolerance.apiVersion: apps/v1 kind: Deployment metadata: name: aci-helloworld spec: replicas: 1 selector: matchLabels: app: aci-helloworld template: metadata: labels: app: aci-helloworld spec: containers: - name: aci-helloworld image: mcr.microsoft.com/azuredocs/aci-helloworld ports: - containerPort: 80 nodeSelector: kubernetes.io/role: agent kubernetes.io/os: linux type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists - key: azure.com/aci effect: NoScheduleSpusťte aplikaci pomocí
kubectl applypříkazu.kubectl apply -f virtual-node.yamlS použitím příkazu
kubectl get podss argumentem-o widezískáte seznam podů a naplánovaného uzlu.kubectl get pods -o widePod je naplánován na virtuální uzel virtual-node-aci-linux, jak ukazuje následující příklad výstupu:
NAME READY STATUS RESTARTS AGE IP NODE aci-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linuxPodu je přiřazena interní IP adresa z podsítě virtuální sítě Azure, která je delegována pro použití s virtuálními uzly.
Poznámka:
Pokud používáte image uložené ve službě Azure Container Registry, nakonfigurujte a použijte tajný klíč Kubernetes. Aktuální omezení virtuálních uzlů je, že nemůžete použít integrované ověřování instančního objektu Microsoft Entra. Pokud nepoužíváte tajný klíč, pody naplánované na virtuálních uzlech se nespustí a nahlásí chybu HTTP response status code 400 error code "InaccessibleImage".
Testování podu virtuálního uzlu
Otestujte pod spuštěný na virtuálním uzlu tak, že přejdete k ukázkové aplikaci pomocí webového klienta. Při přiřazení interní IP adresy podu můžete toto připojení rychle otestovat z jiného podu v clusteru AKS.
Vytvořte testovací pod a připojte k němu terminálovou relaci pomocí následujícího
kubectl run -itpříkazu.kubectl run -it --rm testvk --image=mcr.microsoft.com/dotnet/runtime-deps:6.0Nainstalujte
curldo podu pomocíapt-get.apt-get update && apt-get install -y curlPřístup k adrese podu pomocí
curl, například http://10.241.0.4. Zadejte vlastní interní IP adresu zobrazenou v předchozímkubectl get podspříkazu.curl -L http://10.241.0.4Zobrazí se ukázková aplikace, jak je znázorněno v následujícím zhuštěném ukázkovém výstupu:
<html> <head> <title>Welcome to Azure Container Instances!</title> </head> [...]Ukončete relaci terminálu s testovacím pod pomocí
exit. Po skončení relace se pod odstraní.
Odebrání virtuálních uzlů
Pomocí příkazu
aci-helloworldodstraňte pod spuštěný na virtuálním uzlukubectl delete.kubectl delete -f virtual-node.yamlPomocí příkazu zakažte virtuální uzly
az aks disable-addons.az aks disable-addons --resource-group myResourceGroup --name myAKSCluster --addons virtual-nodePomocí následujících příkazů odeberte prostředky virtuální sítě a skupinu prostředků.
# Change the name of your resource group, cluster and network resources as needed RES_GROUP=myResourceGroup AKS_CLUSTER=myAKScluster AKS_VNET=myVnet AKS_SUBNET=myVirtualNodeSubnet # Get AKS node resource group NODE_RES_GROUP=$(az aks show --resource-group $RES_GROUP --name $AKS_CLUSTER --query nodeResourceGroup --output tsv) # Get network profile ID NETWORK_PROFILE_ID=$(az network profile list --resource-group $NODE_RES_GROUP --query "[0].id" --output tsv) # Delete the network profile az network profile delete --id $NETWORK_PROFILE_ID -y # Grab the service association link ID SAL_ID=$(az network vnet subnet show --resource-group $RES_GROUP --vnet-name $AKS_VNET --name $AKS_SUBNET --query id --output tsv)/providers/Microsoft.ContainerInstance/serviceAssociationLinks/default # Delete the service association link for the subnet az resource delete --ids $SAL_ID --api-version 2021-10-01 # Delete the subnet delegation to Azure Container Instances az network vnet subnet update --resource-group $RES_GROUP --vnet-name $AKS_VNET --name $AKS_SUBNET --remove delegations
Další kroky
V tomto článku jste naplánovali pod na virtuálním uzlu a přiřadili jste privátní interní IP adresu. Místo toho můžete vytvořit nasazení služby a směrovat provoz do podu prostřednictvím nástroje pro vyrovnávání zatížení nebo kontroleru příchozího přenosu dat. Další informace najdete v tématu Vytvoření základního kontroleru příchozího přenosu dat v AKS.
Virtuální uzly jsou často jednou z komponent řešení škálování v AKS. Další informace o škálování řešení najdete v následujících článcích: