Erstellen und Konfigurieren eines AKS-Clusters zur Verwendung von virtuellen Knoten im Azure-Portal
Die virtuellen Knoten ermöglichen die Netzwerkkommunikation zwischen Pods, die in Azure Container Instances (ACI) und AKS-Clustern (Azure Kubernetes Service) ausgeführt werden. Um diese Kommunikation bereitzustellen, wird ein virtuelles Subnetz erstellt, und delegierte Berechtigungen werden zugewiesen. Virtuelle Knoten funktionieren nur in AKS-Clustern, die mit erweiterten Netzwerkfunktionen (Azure CNI) erstellt wurden. AKS-Cluster werden standardmäßig mit grundlegenden Netzwerkfunktionen (kubenet) erstellt.
Dieser Artikel zeigt, wie Sie über das Azure-Portal ein virtuelles Netzwerk und virtuelle Subnetze erstellen und dann einen AKS-Cluster bereitstellen, der erweiterte Netzwerkfunktionen verwendet.
Hinweis
Eine Übersicht über die Verfügbarkeit und Einschränkungen von Regionen für virtuelle Knoten finden Sie unter Erstellen und Konfigurieren eines AKS-Clusters zur Verwendung von virtuellen Knoten.
Voraussetzungen
Sie benötigen den ACI-Dienstanbieter, der für Ihr Abonnement registriert ist.
Überprüfen Sie den Status der ACI-Anbieterregistrierung mithilfe des Befehls
az provider list
.az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table
Die folgende Beispielausgabe zeigt, dass der Anbieter Microsoft.ContainerInstanceregistriert (Registered) ist:
Namespace RegistrationState RegistrationPolicy --------------------------- ------------------- -------------------- Microsoft.ContainerInstance Registered RegistrationRequired
Ist der Anbieter nicht registriert (NotRegistered), registrieren Sie ihn mithilfe des Befehls
az provider register
.az provider register --namespace Microsoft.ContainerInstance
Erstellen eines AKS-Clusters
- Navigieren Sie zur Homepage des Azure-Portals.
- Wählen Sie Ressource erstellen>Container aus.
- Wählen Sie für die Ressource Azure Kubernetes Service (AKS) die Option Erstellen aus.
- Konfigurieren Sie auf der Seite Grundlagen die folgenden Optionen:
- Projektdetails: Wählen Sie ein Azure-Abonnement und dann eine Azure-Ressourcengruppe aus, bzw. erstellen Sie eine Ressourcengruppe, etwa myResourceGroup.
- Clusterdetails: Geben Sie unter Kubernetes cluster name (Name des Kubernetes-Clusters) einen Namen ein, etwa myAKSCluster. Wählen Sie eine Region und eine Kubernetes-Version für den AKS-Cluster aus.
- Wählen Sie Weiter: Knotenpools aus, und aktivieren Sie *Virtuelle Knoten aktivieren.
- Klicken Sie auf Überprüfen + erstellen.
- Wählen Sie nach Abschluss der Überprüfung die Option Erstellen aus.
Bei diesem Prozess wird standardmäßig eine verwaltete Clusteridentität erstellt, die für die Clusterkommunikation und Integration mit anderen Azure-Diensten verwendet wird. Weitere Informationen finden Sie unter Verwenden verwalteter Identitäten. Sie können auch einen Dienstprinzipal als Ihre Clusteridentität verwenden.
Bei diesem Prozess werden der Cluster für erweiterte Netzwerke und die virtuellen Knoten zur Verwendung eines eigenen Subnetzes des virtuellen Azure-Netzwerks konfiguriert. Das Subnetz verfügt über delegierte Berechtigungen, um Azure-Ressourcen zwischen dem AKS-Cluster zu verbinden. Wenn Sie noch kein delegiertes Subnetz haben, erstellt und konfiguriert das Azure-Portal ein virtuelles Netzwerk und Subnetz in Azure mit den virtuellen Knoten.
Herstellen einer Verbindung mit dem Cluster
Die Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel durchführen können. Sie verfügt über allgemeine vorinstallierte Tools und ist für die Verwendung mit Ihrem Konto konfiguriert. Verwenden Sie zum Verwalten eines Kubernetes-Clusters den Kubernetes-Befehlszeilenclient kubectl. Der kubectl
-Client ist in Azure Cloud Shell vorinstalliert.
Mit dem Befehl
az aks get-credentials
können Siekubectl
für die Verbindungsherstellung mit Ihrem Kubernetes-Cluster konfigurieren. Im folgenden Beispiel werden Anmeldeinformationen für den Clusternamen myAKSCluster in der Ressourcengruppe myResourceGroup abgerufen:az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Überprüfen Sie die Verbindung mit dem Cluster mithilfe von
kubectl get nodes
.kubectl get nodes
Die folgende Beispielausgabe zeigt den erstellten einzelnen VM-Knoten und den virtuellen Linux-Knoten 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
Bereitstellen einer Beispiel-App
Erstellen Sie in Azure Cloud Shell eine Datei mit dem Namen
virtual-node.yaml
, und fügen Sie den folgenden YAML-Code ein: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 beta.kubernetes.io/os: linux type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists
Der YAML-Code definiert nodeSelector und toleration, sodass der Pod auf dem virtuellen Knoten geplant werden kann. Dem Pod wird von dem Subnetz des virtuellen Azure-Netzwerks, das für die Verwendung mit virtuellen Knoten delegiert wurde, eine interne IP-Adresse zugewiesen.
Führen Sie die Anwendung mit dem Befehl
kubectl apply
aus.kubectl apply -f virtual-node.yaml
Zeigen Sie die auf dem Knoten geplanten Pods an, indem Sie den Befehl
kubectl get pods
mit dem Argument-o wide
verwenden.kubectl get pods -o wide
Die folgende Beispielausgabe zeigt den auf dem Knoten
virtual-node-linux
geplanten Podvirtual-node-helloworld
:NAME READY STATUS RESTARTS AGE IP NODE virtual-node-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linux
Hinweis
Wenn Sie Images verwenden, die in der Azure Container Registry gespeichert sind, konfigurieren und verwenden Sie ein Kubernetes-Geheimnis. Eine Einschränkung virtueller Knoten besteht darin, dass Sie die integrierte Microsoft Entra-Authentifizierung mit einem Dienstprinzipal nicht verwenden können. Wenn Sie kein Geheimnis verwenden, können auf virtuellen Knoten geplante Pods nicht starten und melden den Fehler HTTP response status code 400 error code "InaccessibleImage"
.
Testen des Pods des virtuellen Knotens
Um den Pod zu testen, der auf dem virtuellen Knoten ausgeführt werden soll, wechseln Sie in einem Webclient zur Demoanwendung. Da dem Pod eine interne IP-Adresse zugewiesen wurde, können Sie die Konnektivität von einem anderen Pod im AKS-Cluster einfach testen.
Erstellen Sie einen Testpod, und fügen Sie mithilfe des folgenden
kubectl run
-Befehls eine Terminalsitzung an ihn an:kubectl run -it --rm virtual-node-test --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
Installieren Sie
curl
im Pod mithilfe des folgendenapt-get
-Befehls:apt-get update && apt-get install -y curl
Greifen Sie mit dem folgenden
curl
-Befehl auf die Adresse Ihres Pods zu, und geben Sie Ihre interne IP-Adresse an.curl -L http://10.241.0.4
Die folgende verkürzte Beispielausgabe zeigt die Demoanwendung:
<html> <head> <title>Welcome to Azure Container Instances!</title> </head> [...]
Schließen Sie die Terminalsitzung mit Ihrem Testpod mit
exit
. Dadurch wird auch der Pod gelöscht.exit
Nächste Schritte
In diesem Artikel haben Sie einen Pod im virtuellen Knoten geplant und dem Pod eine private interne IP-Adresse zugewiesen. Sie können stattdessen auch eine Dienstbereitstellung erstellen und den Datenverkehr über ein Lastenausgleichsmodul oder einen Eingangscontroller an Ihren Pod weiterleiten. Weitere Informationen finden Sie unter Erstellen eines einfachen Eingangscontrollers in AKS.
Virtuelle Knoten sind eine Komponente einer Skalierungslösung in AKS. Weitere Informationen zu Skalierungslösungen finden Sie in den folgenden Artikeln:
- Verwenden der horizontalen automatischen Kubernetes-Podskalierung
- Verwenden der automatischen Kubernetes-Clusterskalierung
- Autoscale for virtual nodes (Autoskalierung für virtuelle Knoten)
- Virtual Kubelet open source library (Open Source-Bibliothek für Virtual Kubelet)
Azure Kubernetes Service