Freigeben über


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

  • Stellen Sie einen Azure Nexus Kubernetes-Cluster mit Azure CLI bereit.

Bevor Sie anfangen

Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

  • Installieren Sie die neueste Version der erforderlichen Azure CLI-Erweiterungen.

  • Dieser Artikel erfordert Version 2.61.0 oder höher der Azure CLI. Wenn Sie Azure Cloud Shell verwenden, ist die neueste Version bereits installiert.

  • Wenn Sie über mehrere Azure-Abonnements verfügen, wählen Sie die entsprechende Abonnement-ID aus, in der die Ressourcen mit dem az account Befehl in Rechnung gestellt werden sollen.

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

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

  • Erstellen Sie eine Ressourcengruppe mit dem Befehl az group create. 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 Microsoft.NetworkCloud/kubernetesclusters/write und Microsoft.Resources/deployments/* Berechtigungen. Eine Liste der Rollen und Berechtigungen finden Sie in den integrierten Azure-Rollen.

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

  • Sie müssen verschiedene Netzwerke entsprechend Ihren spezifischen Workloadanforderungen erstellen, und es ist wichtig, dass die entsprechenden IP-Adressen für Ihre Workloads verfügbar sind. Um eine reibungslose Implementierung sicherzustellen, empfiehlt es sich, die entsprechenden Supportteams zur Unterstützung zu konsultieren.

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

Erstellen eines Azure Nexus Kubernetes-Clusters

Im folgenden Beispiel wird ein Cluster namens "myNexusK8sCluster" in der Ressourcengruppe "myResourceGroup " am Eastus-Speicherort erstellt.

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, zusammen mit einigen Standardwerten, die Sie für bestimmte Variablen verwenden können:

Variable Description
LAGERPLATZ Die Azure-Region, in der Sie Ihren Cluster erstellen möchten.
Ressourcengruppe 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 eine benutzerdefinierte Position der Nexus-Instanz an.
CSN_ARM_ID CSN-ID ist der eindeutige Bezeichner für das Clouddienstenetzwerk, das Sie verwenden möchten.
CNI_ARM_ID CNI-ID ist der eindeutige Bezeichner für die Netzwerkschnittstelle, die von der Containerlaufzeit 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_BENUTZERNAME 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 Steuerebenenknoten für den Cluster.
CONTROL_PLANE_VM_SIZE Die Größe des virtuellen Computers für die Steuerebenenknoten.
ANFÄNGLICHER_AGENTENPOOL_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 CIDR-Notation.
SERVICE_CIDR Der Netzwerkbereich für die Kubernetes-Dienste im Cluster, in 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 Kennzeichen am Ende hinzu, um eine detailliertere Ausgabe für Problembehandlungszwecke bereitzustellen.

Verwenden Sie zum Definieren dieser Variablen die folgenden Satzbefehle, 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_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
AGENT_POOL_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"

Von Bedeutung

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}" \
    ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
  --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${AGENT_POOL_SSH_PUBLIC_KEY}']}]" \
  --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, anstatt auf einzelne Racks beschränkt zu sein. Wenn also ein Agentpool in einer Zone (in der 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, wird aber letztendlich ein Timeout ausgeführt. 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 ein paar Minuten wird der Befehl abgeschlossen und gibt Informationen zum Cluster zurück. Weitere erweiterte Optionen finden Sie in der Schnellstartanleitung: 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 myResourceGroup Ressourcengruppe anzuzeigen:

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

Um eine Liste der Agentpoolnamen abzurufen, die dem myNexusK8sCluster Cluster in der myResourceGroup Ressourcengruppe zugeordnet sind, können Sie außerdem den folgenden Azure CLI-Befehl verwenden.

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 mit der Clusterverbindungsfunktion problemlos eine Verbindung damit herstellen. Mithilfe von Clusterverbindungen können Sie von nahezu überall auf Ihren Cluster zugreifen und diesen verwalten, was ideal für interaktive Entwicklungs-, Debugging- und Clusterverwaltungsaufgaben ist.

Ausführlichere 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 in dieser Gruppe dient, wird die mit Arc verbundene Clusterressource eingerichtet.

Um auf Ihren Cluster zuzugreifen, müssen Sie die Clusterverbindung kubeconfigeinrichten. Nachdem Sie sich bei Azure CLI mit der relevanten Microsoft Entra-Entität angemeldet haben, können Sie die kubeconfig erforderliche Kommunikation mit dem Cluster von praktisch überall aus abrufen, auch außerhalb der Firewall, die sie 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. Abfrage verwalteter 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 eine Verbindung mit dem Kubernetes-API-Server für den angegebenen Nexus Kubernetes-Cluster herstellen können.

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

    kubectl get pods -A
    

    Nun sollte eine Antwort des Clusters mit der Liste aller Knoten angezeigt werden.

Hinweis

Wenn die Fehlermeldung "Fehler beim Bereitstellen des Zugriffstokens an den Client-Proxy. Verbindung mit MSI konnte nicht hergestellt werden" angezeigt wird, müssen Sie sich möglicherweise bei Azure neu authentifizieren.

Hinzufügen eines Agentpools

Der im vorherigen Schritt erstellte Cluster verfügt über einen einzelnen Knotenpool. Fügen wir nun einen zweiten Agentpool mithilfe des az networkcloud kubernetescluster agentpool create Befehls hinzu. Im folgenden Beispiel wird ein Agentpool mit dem Namen myNexusK8sCluster-nodepool-2erstellt:

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 ein paar Minuten wird der Befehl abgeschlossen und gibt Informationen zum Agentpool zurück. Weitere erweiterte Optionen finden Sie in der Schnellstartanleitung: Bereitstellen eines Azure Nexus Kubernetes-Clusters mit Bicep.

Hinweis

Sie können während der ersten Erstellung Ihres Clusters mehrere Agentpools selbst hinzufügen, indem Sie die anfänglichen Agentpoolkonfigurationen verwenden. Wenn Sie jedoch 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

Wenn sie nicht mehr benötigt wird, löschen Sie die Ressourcengruppe. 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 den Operator Nexus-Netzwerkressourcen zu entfernen.

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

Nächste Schritte

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