Share via


Schnellstart: Erstellen eines Azure Nexus Kubernetes-Clusters mithilfe der Azure CLI

  • Stellen Sie ein Azure Nexus Kubernetes-Cluster mithilfe der Azure CLI bereit.

Voraussetzungen

Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

  • Installieren Sie die aktuelle Version der notwendigen Azure CLI-Erweiterung.

  • Für diesen Artikel ist mindestens Version 2.49.0 der Azure CLI erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.

  • Wenn Sie über mehrere Azure-Abonnements verfügen, wählen Sie mithilfe des Befehls az account die ID des Abonnements aus, in dem die Ressourcen fakturiert werden sollen.

  • Die Liste der unterstützten VM-SKUs finden Sie in der VM-SKU-Tabelle im Referenzabschnitt.

  • Die unterstützten Kubernetes-Versionen finden Sie in der Liste der unterstützten Kubernetes-Versionen.

  • Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe. Eine Azure-Ressourcengruppe ist eine logische Gruppe, in der Azure-Ressourcen bereitgestellt und verwaltet werden. Wenn Sie eine Ressourcengruppe erstellen, werden Sie zur Angabe eines Speicherorts aufgefordert. An diesem Speicherort werden die Metadaten Ihrer Ressourcengruppe gespeichert. Darüber hinaus werden dort die Ressourcen in Azure ausgeführt, wenn Sie während der Ressourcenerstellung keine andere Region angeben. Das folgende Beispiel erstellt eine Ressourcengruppe mit dem Namen myResourceGroup am Standort eastus.

    az group create --name myResourceGroup --location eastus
    

    Das folgende Ausgabebeispiel ähnelt der erfolgreichen Erstellung der Ressourcengruppe:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  • Zum Bereitstellen einer Bicep-Datei oder ARM-Vorlage benötigen Sie Schreibzugriff auf die Ressourcen, die Sie bereitstellen, und Zugriff auf alle Vorgänge für den Ressourcentyp Microsoft.Resources/deployments. Um beispielsweise einen Cluster bereitzustellen, benötigen Sie die Berechtigungen „Microsoft.NetworkCloud/kubernetesclusters/write“ und „Microsoft.Resources/deployments/*“. Eine Liste der Rollen und Berechtigungen finden Sie unter Integrierte Azure-Rollen.

  • Sie benötigen die custom location-Ressourcen-ID Ihres Azure Operator Nexus-Clusters.

  • Sie müssen verschiedene Netzwerke gemäß Ihren spezifischen Workloadanforderungen erstellen, und es ist wichtig, dass die entsprechenden IP-Adressen für Ihre Workloads verfügbar sind. Um eine reibungslose Implementierung zu gewährleisten, ist es ratsam, sich für Unterstützung an die entsprechenden Supportteams zu wenden.

  • Für diese Schnellstartanleitung werden Grundkenntnisse in Bezug auf die Kubernetes-Konzepte vorausgesetzt. Weitere Informationen finden Sie unter Grundlegende Kubernetes-Konzepte für Azure Kubernetes Service (AKS).

Erstellen eines Azure Nexus Kubernetes-Clusters

Das folgende Beispiel erstellt ein Cluster namens myNexusK8sCluster in der Ressourcengruppe myResourceGroup am Standort eastus.

Bevor Sie die Befehle ausführen, müssen Sie mehrere Variablen festlegen, um die Konfiguration für Ihren Cluster zu definieren. Hier sind die Variablen, die Sie festlegen müssen, sowie einige Standardwerte, die Sie für bestimmte Variablen verwenden können:

Variable BESCHREIBUNG
LOCATION Der Azure-Speicherort, an dem Sie Ihren Cluster erstellen möchten.
RESOURCE_GROUP Der Name der Azure-Ressourcengruppe, in der Sie den Cluster erstellen möchten.
SUBSCRIPTION_ID Die ID Ihres Azure-Abonnements.
CUSTOM_LOCATION Dieses Argument gibt einen benutzerdefinierten Speicherort der Nexus-Instanz an.
CSN_ARM_ID Die CSN-ID ist der eindeutige Bezeichner für das Clouddienstnetzwerk, das Sie verwenden möchten.
CNI_ARM_ID Die CNI-ID ist der eindeutige Bezeichner für die Netzwerkschnittstelle, die von der Containerruntime verwendet werden soll.
AAD_ADMIN_GROUP_OBJECT_ID Die Objekt-ID der Microsoft Entra-Gruppe, die über Administratorrechte für den Cluster verfügen soll.
CLUSTER_NAME Der Name, den Sie Ihrem Nexus Kubernetes-Cluster geben möchten.
K8S_VERSION Die Version von Kubernetes, die Sie verwenden möchten.
ADMIN_USERNAME Der Benutzername für den Clusteradministrator.
SSH_PUBLIC_KEY Der öffentliche SSH-Schlüssel, der für die sichere Kommunikation mit dem Cluster verwendet wird.
CONTROL_PLANE_COUNT Die Anzahl der Knoten auf Steuerungsebene für den Cluster.
CONTROL_PLANE_VM_SIZE Die Größe des virtuellen Computers für die Knoten auf Steuerungsebene.
INITIAL_AGENT_POOL_NAME Der Name des anfänglichen Agentpools.
INITIAL_AGENT_POOL_COUNT Die Anzahl der Knoten im anfänglichen Agentpool.
INITIAL_AGENT_POOL_VM_SIZE Die Größe des virtuellen Computers für den anfänglichen Agentpool.
POD_CIDR Der Netzwerkbereich für die Kubernetes-Pods im Cluster in der CIDR-Notation.
SERVICE_CIDR Der Netzwerkbereich für die Kubernetes-Dienste im Cluster in der CIDR-Notation.
DNS_SERVICE_IP Die IP-Adresse für den Kubernetes-DNS-Dienst.

Nachdem Sie diese Variablen definiert haben, können Sie den Azure CLI-Befehl ausführen, um den Cluster zu erstellen. Fügen Sie das --debug-Flag am Ende hinzu, um eine ausführlichere Ausgabe für die Problembehandlung bereitzustellen.

Verwenden Sie zum Definieren dieser Variablen die folgenden Befehle, und ersetzen Sie die Beispielwerte durch Ihre bevorzugten Werte. Sie können auch die Standardwerte für einige der Variablen verwenden, wie im folgenden Beispiel gezeigt:

RESOURCE_GROUP="myResourceGroup"
SUBSCRIPTION_ID="<Azure subscription ID>"
LOCATION="$(az group show --name $RESOURCE_GROUP --query location --subscription $SUBSCRIPTION_ID -o tsv)"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CSN_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
CNI_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
AAD_ADMIN_GROUP_OBJECT_ID="00000000-0000-0000-0000-000000000000"
CLUSTER_NAME="myNexusK8sCluster"
K8S_VERSION="v1.24.9"
ADMIN_USERNAME="azureuser"
SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_COUNT="1"
CONTROL_PLANE_VM_SIZE="NC_G6_28_v1"
INITIAL_AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-1"
INITIAL_AGENT_POOL_COUNT="1"
INITIAL_AGENT_POOL_VM_SIZE="NC_P10_56_v1"
POD_CIDR="10.244.0.0/16"
SERVICE_CIDR="10.96.0.0/16"
DNS_SERVICE_IP="10.96.0.10"

Wichtig

Es ist wichtig, dass Sie die Platzhalter für CUSTOM_LOCATION, CSN_ARM_ID, CNI_ARM_ID und AAD_ADMIN_GROUP_OBJECT_ID durch Ihre tatsächlichen Werte ersetzen, bevor Sie diese Befehle ausführen.

Nachdem Sie diese Variablen definiert haben, können Sie den Kubernetes-Cluster erstellen, indem Sie den folgenden Azure CLI-Befehl ausführen:

az networkcloud kubernetescluster create \
  --name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --location "${LOCATION}" \
  --kubernetes-version "${K8S_VERSION}" \
  --aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
  --admin-username "${ADMIN_USERNAME}" \
  --ssh-key-values "${SSH_PUBLIC_KEY}" \
  --control-plane-node-configuration \
    count="${CONTROL_PLANE_COUNT}" \
    vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
  --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE}}]" \
  --network-configuration \
    cloud-services-network-id="${CSN_ARM_ID}" \
    cni-network-id="${CNI_ARM_ID}" \
    pod-cidrs="[${POD_CIDR}]" \
    service-cidrs="[${SERVICE_CIDR}]" \
    dns-service-ip="${DNS_SERVICE_IP}"

Wenn nicht genügend Kapazität zum Bereitstellen angeforderter Clusterknoten vorhanden ist, wird eine Fehlermeldung angezeigt. Diese Meldung enthält jedoch keine Details zur verfügbaren Kapazität. Es gibt an, dass die Clustererstellung aufgrund unzureichender Kapazität nicht fortgesetzt werden kann.

Hinweis

Bei der Kapazitätsberechnung wird der gesamte Plattformcluster berücksichtigt, sie ist nicht auf einzelne Racks beschränkt. Wenn also ein Agentpool in einer Zone (wobei ein Rack einer Zone entspricht) mit unzureichender Kapazität erstellt wird, aber eine andere Zone über genügend Kapazität verfügt, wird die Clustererstellung fortgesetzt, es kommt aber letztendlich zum Timeout. Dieser Ansatz zur Kapazitätsüberprüfung ist nur sinnvoll, wenn während der Erstellung des Cluster- oder Agentpools keine bestimmte Zone angegeben wird.

Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Cluster zurückgegeben. Erweiterte Optionen finden Sie unter Schnellstart: Bereitstellen eines Azure Nexus Kubernetes-Clusters mit Bicep.

Überprüfen der bereitgestellten Ressourcen

Nach Abschluss der Bereitstellung können Sie die Ressourcen mithilfe der CLI oder des Azure-Portals anzeigen.

Führen Sie den folgenden Azure CLI-Befehl aus, um die Details des myNexusK8sCluster-Clusters in der Ressourcengruppe „myResourceGroup“ anzuzeigen:

az networkcloud kubernetescluster show \
  --name myNexusK8sCluster \
  --resource-group myResourceGroup

Darüber hinaus können Sie den folgenden Azure CLI-Befehl verwenden, um eine Liste der Agentpoolnamen abzurufen, die dem myNexusK8sCluster-Cluster in der Ressourcengruppe „myResourceGroup“ zugeordnet sind.

az networkcloud kubernetescluster agentpool list \
  --kubernetes-cluster-name myNexusK8sCluster \
  --resource-group myResourceGroup \
  --output table

Herstellen einer Verbindung mit dem Cluster

Nachdem der Nexus Kubernetes-Cluster erfolgreich erstellt und mit Azure Arc verbunden wurde, können Sie mithilfe der Clusterverbindungsfunktion problemlos eine Verbindung mit diesem Cluster herstellen. Mit der Clusterverbindungsfunktion können Sie von überall aus sicher auf Ihren Cluster zugreifen und ihn verwalten, was die interaktive Entwicklung, das Debugging und die Clusterverwaltung erleichtert.

Detaillierte Informationen zu verfügbaren Optionen finden Sie unter Herstellen einer Verbindung mit einem Azure Operator Nexus Kubernetes-Cluster.

Hinweis

Wenn Sie einen Nexus Kubernetes-Cluster erstellen, erstellt Nexus automatisch eine verwaltete Ressourcengruppe, die zum Speichern der Clusterressourcen bestimmt ist. Innerhalb dieser Gruppe wird die mit Arc verbundene Clusterressource eingerichtet.

Um auf Ihren Cluster zuzugreifen, müssen Sie die Clusterverbindung kubeconfig festlegen. Nachdem Sie sich mit der entsprechenden Microsoft Entra-Entität bei Azure CLI angemeldet haben, können Sie die kubeconfig abrufen, die notwendig ist, um von überall aus mit dem Cluster zu kommunizieren, sogar außerhalb der Firewall, die ihn umgibt.

  1. Legen Sie die Variablen CLUSTER_NAME, RESOURCE_GROUP und SUBSCRIPTION_ID fest.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Abfragen einer verwalteten Ressourcengruppe mit az und Speichern in MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. Der folgende Befehl startet einen connectedk8s-Proxy, mit dem Sie mit dem Kubernetes-API-Server für den angegebenen Nexus Kubernetes-Cluster eine Verbindung herstellen können.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Verwenden Sie kubectl, um Anforderungen an den Cluster zu senden:

    kubectl get pods -A
    

    Sie sollten jetzt eine Antwort des Clusters sehen, die die Liste aller Knoten enthält.

Hinweis

Wenn Sie die Fehlermeldung „Zugriffstoken konnte nicht für den Client proxyFailed veröffentlicht werden, um eine Verbindung mit MSI herzustellen“ sehen, müssen Sie möglicherweise ein az login durchführen, um sich erneut bei Azure zu authentifizieren.

Hinzufügen eines Agentpools

Der im vorherigen Schritt erstellte Cluster verfügt über einen einzelnen Knotenpool. Fügen Sie als Nächstes einen zweiten Knotenpool mit dem Befehl „az networkcloud kubernetescluster agentpool create“ hinzu. Im folgenden Beispiel wird ein Agentpool namens „myNexusK8sCluster-nodepool-2“ erstellt:

Sie können auch die Standardwerte für einige der Variablen verwenden, wie im folgenden Beispiel gezeigt:

RESOURCE_GROUP="myResourceGroup"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CLUSTER_NAME="myNexusK8sCluster"
AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-2"
AGENT_POOL_VM_SIZE="NC_P10_56_v1"
AGENT_POOL_COUNT="1"
AGENT_POOL_MODE="User"

Nachdem Sie diese Variablen definiert haben, können Sie einen Agentpool hinzufügen, indem Sie den folgenden Azure CLI-Befehl ausführen:

az networkcloud kubernetescluster agentpool create \
  --name "${AGENT_POOL_NAME}" \
  --kubernetes-cluster-name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --count "${AGENT_POOL_COUNT}" \
  --mode "${AGENT_POOL_MODE}" \
  --vm-sku-name "${AGENT_POOL_VM_SIZE}"

Nach wenigen Minuten ist die Ausführung des Befehls abgeschlossen, und es werden Informationen zum Agentpool zurückgegeben. Erweiterte Optionen finden Sie unter Schnellstart: Bereitstellen eines Azure Nexus Kubernetes-Clusters mit Bicep.

Hinweis

Sie können mehrere Agentpools während der ersten Erstellung Ihres Clusters hinzufügen, indem Sie die anfänglichen Agentpoolkonfigurationen verwenden. Wenn Sie Agentpools nach der ersten Erstellung hinzufügen möchten, können Sie den obigen Befehl verwenden, um zusätzliche Agentpools für Ihren Nexus Kubernetes-Cluster zu erstellen.

Das folgende Ausgabebeispiel ähnelt der erfolgreichen Erstellung des Agentpools.

$ az networkcloud kubernetescluster agentpool list --kubernetes-cluster-name myNexusK8sCluster --resource-group myResourceGroup --output table
This command is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Count    Location    Mode    Name                          ProvisioningState    ResourceGroup    VmSkuName
-------  ----------  ------  ----------------------------  -------------------  ---------------  -----------
1        eastus      System  myNexusK8sCluster-nodepool-1  Succeeded            myResourceGroup  NC_P10_56_v1
1        eastus      User    myNexusK8sCluster-nodepool-2  Succeeded            myResourceGroup  NC_P10_56_v1

Bereinigen von Ressourcen

Löschen Sie die Ressourcengruppe, wenn Sie sie nicht mehr benötigen. Die Ressourcengruppe und alle Ressourcen in der Ressourcengruppe werden gelöscht.

Verwenden Sie den Befehl az group delete, um die Ressourcengruppe, den Kubernetes-Cluster und alle zugehörigen Ressourcen, außer der Operator Nexus-Netzwerkressource, zu löschen.

az group delete --name myResourceGroup --yes --no-wait

Nächste Schritte

Sie können die CNFs jetzt entweder direkt über die Clusterverbindung oder über Azure Operator Service Manager bereitstellen.