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

  1. Navigieren Sie zur Homepage des Azure-Portals.
  2. Wählen Sie Ressource erstellen>Container aus.
  3. Wählen Sie für die Ressource Azure Kubernetes Service (AKS) die Option Erstellen aus.
  4. 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.
  5. Wählen Sie Weiter: Knotenpools aus, und aktivieren Sie *Virtuelle Knoten aktivieren. Screenshot that shows creating a cluster with virtual nodes enabled on the Azure portal. The option 'Enable virtual nodes' is highlighted.
  6. Klicken Sie auf Überprüfen + erstellen.
  7. 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.

  1. Mit dem Befehl az aks get-credentials können Sie kubectl 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
    
  2. Ü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

  1. 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.

  2. Führen Sie die Anwendung mit dem Befehl kubectl apply aus.

    kubectl apply -f virtual-node.yaml
    
  3. 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 Pod virtual-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.

  1. 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
    
  2. Installieren Sie curl im Pod mithilfe des folgenden apt-get-Befehls:

    apt-get update && apt-get install -y curl
    
  3. 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>
    [...]
    
  4. 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: