Verwenden von Azure Kubernetes Service in Azure Stack Hub mit der CLI

Dies ist ein Leitfaden für die ersten Schritte mit Azure Kubernetes Service (AKS) in Azure Stack Hub. In diesem Artikel werden die wichtigsten Szenarien beschrieben, mit denen Sie sich mit AKS in Azure Stack Hub vertraut machen können. Die in Azure Stack Hub verfügbare Funktionalität ist eine Teilmenge dessen, was im globalen Azure verfügbar ist.

In den folgenden Abschnitten werden Sie Folgendes ausführen:

  1. Vervollständigen Sie die Voraussetzungen, um AKS in Azure Stack Hub zu verwenden.
  2. Schließen Sie die Lebenszyklusvorgänge eines AKS-Clusters mithilfe der Azure CLI und dem Azure Stack Hub-Benutzerportal ab.

Installieren der Azure-Befehlszeilenschnittstelle

Sie müssen die Azure CLI mit AKS-Unterstützung für Ihren Computer installieren. Bereiten Sie einen neu installierten Computer mit Linux oder Windows vor, um die Vorschauversion der Azure CLI mit AKS-Unterstützung zu installieren. Stellen Sie sicher, dass auf dem Computer keine Azure CLI installiert ist, um Konflikte mit der Vorschauversion der Azure CLI zu vermeiden, die Sie als nächstes installieren werden. Bei den meisten der folgenden Anweisungen wird davon ausgegangen, dass Sie einen virtuellen Linux-Computer verwenden, aber Sie können die entsprechenden Schritte für Windows in der Produktdokumentation finden.

Führen Sie kein Upgrade der Azure CLI durch, nachdem Sie die Azure CLI mit AKS-Unterstützung installiert haben. Wenn Sie ein Upgrade durchführen, wird es durch die produktionsbereite Version ersetzt, die keine AKS-Unterstützung bietet.

Für einen Ubuntu-Computer folgen Sie den Anweisungen unter Installieren der Azure CLI unter Linux.

Nachdem Sie die Azure CLI mit AKS-Unterstützung installiert haben, überprüfen Sie, ob die Installation ordnungsgemäß erfolgt ist, indem Sie den folgenden Azure CLI-Befehl ausführen:

    az --version

Dies ist die Ausgabe eines Linux-Computers:

Ausgabe eines Linux-Computers

Die Azure CLI sollte Version 2.28.0 oder höher sein.

Herstellen einer Verbindung mit Azure Stack Hub

  1. Stellen Sie eine Verbindung mit Ihrem Azure Stack Hub-Endpunkt her. Sie müssen die Azure CLI verwenden, um die spezifische Azure Stack Hub-Umgebung einzurichten, mit der Sie eine Verbindung herstellen. Die Anweisungen finden Sie unter Herstellen einer Verbindung mit Azure Stack Hub.

  2. Registrieren Sie Ihre Umgebung, sodass die Azure CLI eine Verbindung mit dem Resource Manager-Endpunkt von Azure Stack Hub für Ihre Instanz herstellen kann. Aktualisieren Sie die URLs im folgenden Codeausschnitt, und führen Sie den folgenden Befehl aus:

    az cloud register \
        -n aks-preview-test \
        --endpoint-resource-manager "https://management.redmond.xbx.nxn.microsoft.com" \
        --suffix-storage-endpoint "redmond.xbx.nxn.microsoft.com" \
        --suffix-keyvault-dns ".vault.redmond.xbx.nxn.microsoft.com"
    
  3. Legen Sie die aktive Umgebung fest.

    az cloud set -n aks-preview-test
    
  4. Aktualisieren Sie Ihre Umgebungskonfiguration.

    az cloud update --profile 2020-09-01-hybrid
    
  5. Stellen Sie eine Verbindung mit der Umgebung her.

    az login -u 'user@contoso.onmicrosoft.com' -p 'xxxxxxx' --tenant 'contoso.onmicrosoft.com'
    

    Hinweis

    Wenn Sie einen Fehler bei der Zertifikatüberprüfung auslösen, kann es sein, dass das für den Azure Resource Manager-Endpunkt verwendete Zertifikat von Ihrem Clientcomputer nicht als vertrauenswürdig betrachtet wird. Sofern dies der Fall ist, müssen Sie das in den Azure Stack Hub-Endpunkten verwendete Zertifikat exportieren und es als vertrauenswürdig betrachten. Anweisungen finden Sie unter Exportieren des Zertifizierungsstellen-Stammzertifikats für Azure Stack Hub.

    Insbesondere für Linux-Computer siehe: Microsoft Entra-ID unter Linux

  6. Legen Sie das Abonnement in Ihrer Azure CLI-Sitzung wie folgt als Standard fest:

    az account set --subscription <subscription-id>
    
  7. Registrieren Sie den Azure Kubernetes Service-Ressourcenanbieter. Listen Sie die verfügbaren Ressourcenanbieter in Ihrem Abonnement auf.

    az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table
    

    Die Ausgabe sollte wie folgt aussehen:

    Wie die Ausgabe aussehen sollte

  8. Notieren Sie sich den Microsoft.ContainerService-Ressourcenanbieter, und registrieren Sie den Anbieter:

    az provider register --namespace Microsoft.ContainerService
    
  9. Führen Sie Schritt 7 erneut aus, um den Registrierungsstatus des Ressourcenanbieters zu überprüfen. Die Registrierung kann mehrere Minuten dauern.

Nachdem diese erforderlichen Schritte abgeschlossen sind, können Sie mit dem Testen der folgenden Szenarien fortfahren.

Erstellen eines AKS-Clusters

Die globalen Azure-Anweisungen finden Sie unter Bereitstellen eines Azure Kubernetes Service-Clusters über die Azure-Befehlszeilenschnittstelle. Die Anweisungen hier spiegeln die Einschränkungen bei der Verwendung von AKS in Azure Stack Hub wider. Sie können die Azure CLI verwenden, um einen AKS-Cluster für Linux- oder Windows-Container zu erstellen.

  1. Erstellen Sie eine Ressourcengruppe:

    az group create --name myResourceGroup --location <Azure Stack Hub location>
    
  2. Stellen Sie sicher, dass Sie über eine Dienstprinzipal-ID mit der Berechtigung „Mitwirkender“ für Ihr Abonnement verfügen, um Cluster in diesem Abonnement zu erstellen.

    1. Führen Sie diese Anweisungen aus, um einen Dienstprinzipal (SPN) mit Microsoft Entra ID zu erstellen.
    2. Um einen SPN mithilfe von Active Directory-Verbunddiensten (AD FS) zu erstellen, befolgen Sie diese Anweisungen.
    3. Für die Zuweisung der Rolle „Mitwirkender“ zum SPN finden Sie unter diesen Anweisungen. Stellen Sie sicher, dass Sie die Rolle „Mitwirkender“ auswählen.
  3. Erstellen Sie einen AKS-Cluster mit drei Agent-Knoten. Geben Sie Werte für die unten angegebenen Parameter an. Beispiele werden bereitgestellt. Führen Sie Folgendes aus:

    az aks create \
    --resource-group myResourceGroup \
    --name myakscluster \
    --dns-name-prefix myakscluster \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --location <Azure Stack Hub location> \
    --kubernetes-version 1.20.7
    

    Die Ausgabe dieses Vorgangs erfolgt im JSON-Format und enthält eine Spezifikation des Clusters, einschließlich des generierten öffentlichen SSH-Schlüssels, des vollqualifizierten Domänennamens (FQDN), der im Cluster verwendet wird, und anderer Eigenschaften. Beachten Sie, dass der Befehl einen Text wie den folgenden ausgibt, der den Speicherort des privaten Schlüssels hervorhebt: SSH key files '/home/azureuser/.ssh/id_rsa' und '/home/azureuser/.ssh/id_rsa.pub' wurden unter \~/.ssh generiert, um den SSH-Zugriff auf den virtuellen Computer zu ermöglichen. Bewahren Sie diese Schlüssel an einem sicheren Ort auf, um sie zu verwenden, falls Sie eine SSH-Verbindung mit den virtuellen Computern herstellen müssen, wie es bei der Problembehandlung der Fall ist.

  4. Jetzt können Sie die Tests für die Skalierung, das Bereitstellen einer App und das Löschen wiederholen.

Herstellen einer Verbindung mit dem Cluster

  1. Verwenden Sie zum Verwalten eines Kubernetes-Clusters den Kubernetes-Befehlszeilenclient kubectl. Für die lokale Installation von kubectl verwenden Sie den Befehl „az aks install-cli“ (möglicherweise müssen Sie am Anfang „sudo“ verwenden, um die Berechtigung zur Installation zu erhalten):

    az aks install-cli
    
  2. Um kubectl zum Herstellen der Verbindung mit Ihrem Kubernetes-Cluster zu konfigurieren, verwenden Sie den Befehl az aks get-credentials. Mit diesem Befehl werden die Anmeldeinformationen heruntergeladen, und die Kubernetes-Befehlszeilenschnittstelle wird für deren Verwendung konfiguriert.

    az aks get-credentials --resource-group myResourceGroup --name myakscluster --admin
    
  3. Überprüfen Sie die Verbindung mit Ihrem Cluster mithilfe des Befehls kubectl get, um eine Liste der Clusterknoten zurückzugeben.

    kubectl get nodes
    

Überprüfen der Verbindung mit Ihrem Cluster

Skalieren von Clustern

Eine weitere Aufgabe der Clusterverwaltung ist das Skalieren eines Clusters. Sie können einen Cluster jederzeit skalieren, nachdem er mit dem Befehl „az aks scale“ erstellt wurde. Führen Sie Folgendes aus, um den Cluster von den anfänglichen drei Knoten auf vier Knoten zu skalieren:

    az aks scale --resource-group myResourceGroup --name myakscluster --node-count 4

Wenn der Cluster erfolgreich skaliert wurde, enthält die Ausgabe ein „agentPoolProfiles“ ähnlich dem folgenden Beispiel:

    "agentPoolProfiles": [
        {
        "availabilityZones": null,
        "count": 4,
        "enableAutoScaling": null,
        "enableNodePublicIp": false,
        "maxCount": null,
        "maxPods": 110,
        "minCount": null,
        "mode": "System",
        "name": "mynodepool",
        "nodeLabels": {},
        "nodeTaints": null,
        "orchestratorVersion": "1.20.7",
        "osDiskSizeGb": 100,
        "osType": "Linux",
        "provisioningState": "Succeeded",
        "scaleSetEvictionPolicy": null,
        "scaleSetPriority": null,
        "spotMaxPrice": null,
        "tags": null,
        "type": "VirtualMachineScaleSets",
        "vmSize": " Standard_DS2_v2",
        "vnetSubnetId": null
        }
    ]

Löschen von Clustern

Nachdem die vorherigen Vorgänge ausgeführt wurden, können Sie mit dem Löschen des Clusters fortfahren. Führen Sie Folgendes aus:

az aks delete --name myakscluster --resource-group myResourceGroup

Erstellen eines AKS-Clusters mit einem benutzerdefinierten VNet

Das Erstellen eines Clusters, der in einem vom Benutzer bereitgestellten Netzwerk bereitgestellt werden soll, ist ein häufiges Szenario. Die Planung der Netzwerkkonfiguration erfordert einige Vorbereitungen. Beachten Sie auch, dass bei AKS das Standardnetzwerk-Plug-In entsprechend Azure CNI ist und nicht Kubenet, wie es bei der AKS-Engine der Fall ist. Mit Azure CNI erhält jeder Pod eine IP-Adresse aus dem Subnetz und kann direkt aufgerufen werden (ohne dass eine Routingtabelle wie bei Kubenet benötigt wird). Diese IP-Adressen müssen in Ihrem Netzwerkadressraum eindeutig sein und geplant werden. Im folgenden Artikel wird die Planung Ihrer benutzerdefinierten VNet-Bereitstellung beschrieben. Sie können verschiedene Netzwerkkonfigurationen finden, die für Ihre Anforderungen geeignet sind, und diese testen. Für einen ersten Test zeigen Ihnen die folgenden beiden Schritte den grundlegenden Prozess:

  1. Folgen Sie den Anweisungen in diesem Artikel, um die Bereitstellung mithilfe von Azure CNI zu planen. Beispielsweise können Sie das Portal verwenden, um ein VNet namens „myAKSVnet“ mit dem IP-Adressbereich 10.0.0.0/8 mit dem Subnetz „myAKSSubnet“ und dem IP-Adressbereich 10.240.0.0/16 in einer Ressourcengruppe namens „myTest-rg“ zu erstellen. Verwenden Sie dann den nächsten Schritt für die Erstellung des Clusters.

    az network vnet create \
        --resource-group myTest-rg \
        --name myAKSVnet \
        --address-prefixes 10.0.0.0/8 \
        --subnet-name myAKSSubnet \
        --subnet-prefix 10.240.0.0/16    
    
  2. Beachten Sie, dass der im Azure-Artikel bereitgestellte Clusterbefehl bei der Bereitstellung in Azure einwandfrei funktioniert. Für die Bereitstellung in Azure Stack Hub müssen Sie zusätzliche Parameter angeben, wie im folgenden Beispiel gezeigt. Die VNet-Subnetz-ID sollte wie folgt aussehen: „/subscriptions/dfdfdff-5dfdf-dfdf-dfdf-dfdfdfdfdfd/resourceGroups/myTest-rg/providers/Microsoft.Network/virtualNetworks/myAKSVnet/subnets/myAKSSubnet“:

    az aks create  \ 
    --resource-group myTest-rg \
    --name aksvnet \
    --dns-name-prefix  aksvnet \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xvxvxvxvx-ffff-ffff-xvxvxvx-8xbxbxbx8  \
    --client-secret dccbcbcbcbcbcbcbcbbcbcbcbcbcbcbc-LNX \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --network-plugin azure \
    --vnet-subnet-id '<subnet-resource-id>' \
    --skip-subnet-role-assignment \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.0.0.10 \
    --location redmond
    
  3. Befolgen Sie die Anweisungen im Abschnitt „Herstellen einer Verbindung mit dem Cluster“, um eine Verbindung mit dem Kubernetes-Cluster herzustellen und Ihre Anwendungen bereitzustellen.

Konsistenzprüfung

Konsistenzprüfung zwischen Azure und Azure Stack Hub

  1. Wählen Sie eine Kombination von Befehlen aus den oben getesteten Befehlen, aus dem Abschnitt „Befehlsreferenz“ unten oder aus Ihren eigenen täglichen Skripts aus.
  2. Wenden Sie sie auf Azure und später auf Azure Stack Hub an. Vermerken Sie alle nicht erwarteten Abweichungen, und stellen Sie ein Feedback bereit.

Nächste Schritte

Informationen zu AKS in Azure Stack Hub