Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Virtuele knooppunten maken netwerkcommunicatie mogelijk tussen pods die worden uitgevoerd in ACI-clusters (Azure Container Instances) en AKS. Als u deze communicatie wilt opgeven, maakt u een subnet voor een virtueel netwerk en wijst u gedelegeerde machtigingen toe. Virtuele knooppunten werken alleen met AKS-clusters die zijn gemaakt met behulp van geavanceerde netwerken (Azure CNI). AKS-clusters worden standaard gemaakt met basisnetwerken (kubenet). In dit artikel leest u hoe u een virtueel netwerk en subnetten maakt en vervolgens een AKS-cluster implementeert dat gebruikmaakt van geavanceerde netwerken.
In dit artikel leest u hoe u de Azure CLI gebruikt voor het maken en configureren van resources voor virtuele netwerken en een AKS-cluster dat is ingeschakeld met virtuele knooppunten.
Voordat u begint
Belangrijk
Voordat u virtuele knooppunten met AKS gebruikt, bekijkt u zowel de beperkingen van virtuele AKS-knooppunten als de beperkingen voor virtuele netwerken van ACI. Deze beperkingen zijn van invloed op de locatie, netwerkconfiguratie en andere configuratiedetails van zowel uw AKS-cluster als de virtuele knooppunten.
U hebt de ACI-serviceprovider nodig die is geregistreerd bij uw abonnement. U kunt de status van de registratie van de ACI-provider controleren met behulp van de
az provider listopdracht.az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o tableDe Microsoft.ContainerInstance-provider moet rapporteren als Geregistreerd, zoals wordt weergegeven in de volgende voorbeelduitvoer:
Namespace RegistrationState RegistrationPolicy --------------------------- ------------------- -------------------- Microsoft.ContainerInstance Registered RegistrationRequiredAls de provider wordt weergegeven als NotRegistered, registreert u de provider met behulp van
az provider register.az provider register --namespace Microsoft.ContainerInstanceAls u Azure CLI gebruikt, is voor dit artikel Versie 2.0.49 of hoger van Azure CLI vereist. Voer
az --versionuit om de versie te bekijken. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren. U kunt ook Azure Cloud Shell gebruiken.
Azure Cloud Shell starten
Azure Cloud Shell is een gratis interactieve shell die u kunt gebruiken om de stappen in dit artikel uit te voeren. Veelgebruikte Azure-hulpprogramma's zijn vooraf geïnstalleerd en geconfigureerd.
Als u Cloud Shell wilt openen, selecteert u Proberen in de rechterbovenhoek van een codeblok. U kunt Cloud Shell ook openen in een afzonderlijk browsertabblad door naar https://shell.azure.com/bash te gaan. Klik op Kopiëren om de codeblokken te kopiëren, plak deze in Cloud Shell en druk vervolgens op Enter om de code uit te voeren.
Een brongroep maken
Een Azure-resourcegroep is een logische groep waarin Azure-resources worden geïmplementeerd en beheerd.
Maak een resourcegroep met behulp van de
az group createopdracht.az group create --name myResourceGroup --location eastus
Een virtueel netwerk maken
Belangrijk
Voor een virtueel knooppunt zijn een aangepast virtueel netwerk en gekoppeld subnet vereist. Het kan niet worden gekoppeld aan hetzelfde virtuele netwerk als het AKS-cluster.
Maak een virtueel netwerk met behulp van de
az network vnet createopdracht. In het volgende voorbeeld wordt een virtueel netwerk gemaakt met de naam myVnet met een adresvoorvoegsel 10.0.0.0/8 en een subnet met de naam myAKSSubnet. Het adresvoorvoegsel van dit subnet is standaard ingesteld op 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/16Maak een extra subnet voor de virtuele knooppunten met behulp van de
az network vnet subnet createopdracht. In het volgende voorbeeld wordt een subnet met de naam myVirtualNodeSubnet gemaakt met een adresvoorvoegsel 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
Een AKS-cluster met beheerde identiteit maken
Haal de subnet-id op met behulp van de
az network vnet subnet showopdracht.az network vnet subnet show --resource-group myResourceGroup --vnet-name myVnet --name myAKSSubnet --query id -o tsvMaak een AKS-cluster met behulp van de
az aks createopdracht en vervang deze door<subnetId>de id die u in de vorige stap hebt verkregen. In het volgende voorbeeld wordt een cluster met de naam myAKSCluster gemaakt met vijf knooppunten.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 5 \ --network-plugin azure \ --vnet-subnet-id <subnetId> \ --generate-ssh-keysNa enkele minuten is de opdracht voltooid en retourneert deze informatie over het cluster in JSON-indeling.
Zie Beheerde identiteiten gebruiken voor meer informatie over beheerde identiteiten.
Schakel de add-on voor virtuele knooppunten in
Notitie
Als u een bestaand Azure Kubernetes Service-cluster hebt gemaakt dat gebruikmaakt van Azure CNI voor geavanceerde netwerken, kunt u virtuele knooppunten inschakelen als een invoegtoepassing met behulp van de CLI.
Schakel virtuele knooppunten in met behulp van de
az aks enable-addonsopdracht. In het volgende voorbeeld wordt het subnet myVirtualNodeSubnet gebruikt dat in een vorige stap is gemaakt.az aks enable-addons \ --resource-group myResourceGroup \ --name myAKSCluster \ --addons virtual-node \ --subnet-name myVirtualNodeSubnet
Verbinding maken met het cluster
Configureer
kubectlom verbinding te maken met uw Kubernetes-cluster met deaz aks get-credentialsopdracht. In deze stap worden referenties gedownload en wordt Kubernetes CLI geconfigureerd voor het gebruik van deze referenties.az aks get-credentials --resource-group myResourceGroup --name myAKSClusterControleer de verbinding met uw cluster met behulp van de
kubectl getopdracht, die een lijst met de clusterknooppunten retourneert.kubectl get nodesIn de volgende voorbeelduitvoer ziet u het enkele VM-knooppunt dat is gemaakt en het virtuele knooppunt voor 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
Een voorbeeld-app implementeren
Maak een bestand met de naam
virtual-node.yamlen kopieer dit in de volgende YAML. De YAML plant de container op het knooppunt door een nodeSelector en tolerantie te definiëren.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: NoScheduleVoer de toepassing uit met behulp van de
kubectl applyopdracht.kubectl apply -f virtual-node.yamlHaal een lijst met pods en het geplande knooppunt op met behulp van de
kubectl get podsopdracht met het-o wideargument.kubectl get pods -o wideDe pod is gepland op het virtuele knooppunt virtual-node-aci-linux, zoals wordt weergegeven in de volgende voorbeelduitvoer:
NAME READY STATUS RESTARTS AGE IP NODE aci-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linuxAan de pod wordt een intern IP-adres toegewezen van het subnet van het virtuele Azure-netwerk dat is gedelegeerd voor gebruik met virtuele knooppunten.
Notitie
Als u afbeeldingen gebruikt die zijn opgeslagen in Azure Container Registry, configureert en gebruikt u een Kubernetes-geheim. Een huidige beperking van virtuele knooppunten is dat u geen geïntegreerde verificatie van de Microsoft Entra-service-principal kunt gebruiken. Als u geen geheim gebruikt, kunnen pods die zijn gepland op virtuele knooppunten niet worden gestart en wordt de fout HTTP response status code 400 error code "InaccessibleImage"gerapporteerd.
De pod van het virtuele knooppunt testen
Test de pod die wordt uitgevoerd op het virtuele knooppunt door de demotoepassing te openen met een webbrowser. Wanneer aan de pod een intern IP-adres is toegewezen, kunt u deze connectiviteit snel testen vanaf een andere pod in het AKS-cluster.
Maak een testpod en koppel er een terminalsessie aan met behulp van de volgende
kubectl run -itopdracht.kubectl run -it --rm testvk --image=mcr.microsoft.com/dotnet/runtime-deps:6.0Installeren
curlin de pod met behulp vanapt-get.apt-get update && apt-get install -y curlGebruik het adres van uw pod met behulp van
curl, zoals http://10.241.0.4. Geef uw eigen interne IP-adres op dat wordt weergegeven in de vorigekubectl get podsopdracht.curl -L http://10.241.0.4De demotoepassing wordt weergegeven, zoals wordt weergegeven in de volgende verkorte voorbeelduitvoer:
<html> <head> <title>Welcome to Azure Container Instances!</title> </head> [...]Sluit de terminalsessie naar je testpod met
exit. Wanneer uw sessie is beëindigd, wordt de pod verwijderd.
Virtuele knooppunten verwijderen
Verwijder de
aci-helloworldpod die wordt uitgevoerd op het virtuele knooppunt met behulp van dekubectl deleteopdracht.kubectl delete -f virtual-node.yamlSchakel de virtuele knooppunten uit met behulp van de
az aks disable-addonsopdracht.az aks disable-addons --resource-group myResourceGroup --name myAKSCluster --addons virtual-nodeVerwijder de virtuele netwerkbronnen en resourcegroep met behulp van de volgende opdrachten.
# 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
Volgende stappen
In dit artikel hebt u een pod gepland op het virtuele knooppunt en een privé intern IP-adres toegewezen. U kunt in plaats daarvan een service-implementatie maken en verkeer naar uw pod routeren via een load balancer of ingangscontroller. Zie Een eenvoudige ingangscontroller maken in AKS voor meer informatie.
Virtuele knooppunten zijn vaak één onderdeel van een schaaloplossing in AKS. Zie de volgende artikelen voor meer informatie over het schalen van oplossingen: