Erstellen und Konfigurieren eines AKS-Clusters zur Verwendung von virtuellen Knoten im Azure-Portal

Dieser Artikel zeigt, wie Sie im Azure-Portal die virtuellen Netzwerkressourcen und einen AKS-Cluster mit aktivierten virtuellen Knoten erstellen und konfigurieren.

Hinweis

In diesem Artikel erhalten Sie eine Übersicht über die regionale Verfügbarkeit und die Einschränkungen bei der Verwendung virtueller Knoten.

Voraussetzungen

Die virtuellen Knoten ermöglichen die Netzwerkkommunikation zwischen Pods, die in Azure Container Instances (ACI) und dem AKS-Cluster 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. Standardmäßig werden AKS-Cluster mit grundlegenden Netzwerkfunktionen (kubenet) erstellt. Dieser Artikel zeigt, wie Sie ein virtuelles Netzwerk und virtuelle Subnetze erstellen und dann einen AKS-Cluster bereitstellen, der erweiterte Netzwerkfunktionen verwendet.

Wenn Sie ACI noch nicht genutzt haben, registrieren Sie den Dienstanbieter mit Ihrem Abonnement. Sie können den Status der ACI-Anbieterregistrierung mit dem Befehl az provider list überprüfen, wie im folgenden Beispiel gezeigt:

az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table

Der Anbieter Microsoft.ContainerInstance sollte als Registriert gemeldet werden, wie in der folgenden Beispielausgabe gezeigt:

Namespace                    RegistrationState    RegistrationPolicy
---------------------------  -------------------  --------------------
Microsoft.ContainerInstance  Registered           RegistrationRequired

Wenn der Anbieter als Nicht registriert angezeigt wird, registrieren Sie den Anbieter mit dem az provider register, wie im folgenden Beispiel gezeigt:

az provider register --namespace Microsoft.ContainerInstance

Anmelden bei Azure

Melden Sie sich unter https://portal.azure.com beim Azure-Portal an.

Erstellen eines AKS-Clusters

Klicken Sie im Azure-Portal oben links auf Ressource erstellen>Kubernetes Service.

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, z.B. myResourceGroup. Geben Sie unter Kubernetes cluster name (Name des Kubernetes-Clusters) einen Namen ein, etwa myAKSCluster.
  • CLUSTERDETAILS:Wählen Sie eine Region und eine Kubernetes-Version für den AKS-Cluster aus.
  • PRIMÄRER KNOTENPOOL: Wählen Sie eine VM-Größe für die AKS-Knoten aus. Die VM-Größe kann nicht geändert werden, sobald ein AKS-Cluster bereitgestellt wurde.
    • Wählen Sie die Anzahl von Knoten für die Bereitstellung im Cluster aus. Legen Sie für diesen Artikel Knotenanzahl auf 1 fest. Die Knotenanzahl kann nach der Clusterbereitstellung angepasst werden.

Klicken Sie auf Weiter: Knotenpools.

Wählen Sie auf der Seite Knotenpools die Option Virtuelle Knoten aktivieren aus.

In a browser, shows creating a cluster with virtual nodes enabled on the Azure portal. The option 'Enable virtual nodes' is highlighted.

Standardmäßig wird eine Clusteridentität erstellt. Diese Clusteridentität wird für die Clusterkommunikation und die Integration in andere Azure-Dienste verwendet. Diese Clusteridentität ist standardmäßig eine verwaltete Identität. Weitere Informationen finden Sie unter Verwenden verwalteter Identitäten. Sie können auch einen Dienstprinzipal als Ihre Clusteridentität verwenden.

Der Cluster ist auch für den erweiterten Netzwerkbetrieb konfiguriert. Die virtuellen Knoten sind so konfiguriert, dass sie ihr eigenes virtuelles Azure-Netzwerksubnetz verwenden. Dieses Subnetz verfügt über delegierte Berechtigungen, um Azure-Ressourcen zwischen dem AKS-Cluster zu verbinden. Wenn Sie noch kein Subnetz delegiert haben, erstellt und konfiguriert das Azure-Portal das virtuelle Netzwerk und Subnetz von Azure für die Verwendung mit den virtuellen Knoten.

Klicken Sie auf Überprüfen + erstellen. Wählen Sie nach Abschluss der Validierung Erstellen aus.

Es dauert einige Minuten, bis der AKS-Clusters erstellt wurde und für die Verwendung bereit ist.

Herstellen einer Verbindung mit dem Cluster

Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel ausfü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.

Wählen Sie zum Öffnen von Cloud Shell oben rechts in einem Codeblock die Option Ausprobieren aus. Sie können Cloud Shell auch auf einem separaten Browsertab starten, indem Sie zu https://shell.azure.com/bash navigieren. Wählen Sie Kopieren, um die Blöcke mit dem Code zu kopieren. Fügen Sie ihn anschließend in Cloud Shell ein, und drücken Sie die EINGABETASTE, um ihn auszuführen.

Mit dem Befehl az aks get-credentials können Sie kubectl für das Herstellen einer Verbindung 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 Ihrem Cluster mithilfe des Befehls kubectl get, um eine Liste der Clusterknoten zurückzugeben.

kubectl get nodes

Die folgende Beispielausgabe zeigt den erstellten einzelnen VM-Knoten und dann den virtuellen Knoten für 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

Bereitstellen einer Beispiel-App

Erstellen Sie in der Azure Cloud Shell eine Datei mit dem Namen virtual-node.yaml, und fügen Sie den folgenden YAML-Code ein. Um den Container auf dem Knoten zu planen, werden Werte für nodeSelector und toleration definiert. Mit dieser Einstellungen kann der Pod auf dem virtuellen Knoten geplant und bestätigt werden, dass das Feature erfolgreich aktiviert wurde.

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

Führen Sie die Anwendung mithilfe des Befehls kubectl apply aus.

kubectl apply -f virtual-node.yaml

Verwenden Sie den Befehl kubectl get pods mit dem -o wide-Argument, um eine Liste von Pods und den geplanten Knoten auszugeben. Beachten Sie, dass der virtual-node-helloworld-Pod auf dem virtual-node-linux-Knoten geplant wurde.

kubectl get pods -o wide
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

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.

Hinweis

Wenn Sie Images verwenden, die in der Azure Container Registry gespeichert sind, konfigurieren und verwenden Sie ein Kubernetes-Geheimnis. Eine aktuelle Einschränkung der virtuellen Knoten ist, dass Sie die integrierte Authentifizierung des Azure AD-Dienstprinzipals 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 diese Konnektivität schnell von einem anderen Pod im AKS-Cluster aus testen. Erstellen Sie einen Testpod, und fügen Sie an diesen eine Terminalsitzung an:

kubectl run -it --rm virtual-node-test --image=mcr.microsoft.com/dotnet/runtime-deps:6.0

Installieren Sie curl mit apt-get im Pod:

apt-get update && apt-get install -y curl

Greifen Sie mithilfe von curl auf die Adresse Ihres Pods zu, z.B. http://10.241.0.4 . Geben Sie Ihre eigene interne IP-Adresse an, die im vorherigen kubectl get pods-Befehl gezeigt wurde:

curl -L http://10.241.0.4

Die Demoanwendung wird angezeigt, wie in der folgenden verkürzten Beispielausgabe veranschaulicht:

<html>
<head>
  <title>Welcome to Azure Container Instances!</title>
</head>
[...]

Schließen Sie die Terminalsitzung mit Ihrem Testpod mit exit. Wenn die Sitzung beendet ist, wird der Pod gelöscht.

Nächste Schritte

In diesem Artikel wurde ein Pod im virtuellen Knoten geplant, und dem Pod wurde ein 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: