Freigeben über


Aktivieren von Azure Arc in einem Kubernetes-Cluster auf einem Azure Stack Edge Pro-GPU-Gerät

GILT FÜR:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

In diesem Artikel wird beschrieben, wie Sie Azure Arc in einem vorhandenen Kubernetes-Cluster auf Ihrem Azure Stack Edge Pro-Gerät aktivieren.

Bei diesem Verfahren wird davon ausgegangen, dass Sie die folgenden Artikel gelesen und verstanden haben:

Voraussetzungen

Stellen Sie sicher, dass die folgenden Voraussetzungen auf dem Azure Stack Edge Pro-Gerät und dem Client, den Sie für den Zugriff auf das Gerät verwenden, erfüllt sind:

Für das Gerät

  1. Sie verfügen über Anmeldeinformationen für ein Azure Stack Edge Pro-Gerät mit einem Knoten.

    1. Das Gerät ist aktiviert. Siehe Aktivieren des Geräts.
    2. Das Gerät verfügt über die über das Azure-Portal konfigurierte Computerolle und umfasst einen Kubernetes-Cluster. Siehe Konfigurieren der Computeumgebung.
  2. Sie haben Besitzerzugriff auf das Abonnement. Diesen Zugriff benötigen Sie beim Schritt der Rollenzuweisung für den Dienstprinzipal.

Für den Client, der auf das Gerät zugreift

  1. Sie verfügen über ein Windows-Clientsystem, das für den Zugriff auf das Azure Stack Edge Pro-Gerät verwendet wird.

    • Auf dem Client wird Windows PowerShell 5.0 oder höher ausgeführt. Informationen zum Herunterladen der neuesten Version von Windows PowerShell finden Sie unter Installieren von Windows PowerShell.

    • Sie können auch einen anderen Client mit einem unterstützten Betriebssystem verwenden. In diesem Artikel wird die Vorgehensweise bei Verwendung eines Windows-Clients beschrieben.

  2. Sie haben die unter Zugreifen auf den Kubernetes-Cluster auf dem Azure Stack Edge Pro-Gerät beschriebenen Schritte ausgeführt. Sie haben:

    • kubectl auf dem Client installiert.
    • Stellen Sie sicher, dass die kubectl-Clientversion um nicht mehr als eine Version von der Kubernetes-Masterversion abweicht, die auf dem Azure Stack Edge Pro-Gerät ausgeführt wird.
      • Verwenden Sie kubectl version, um die kubectl-Version zu überprüfen, die auf dem Client ausgeführt wird. Notieren Sie sich die Vollversion.

      • Wechseln Sie auf der lokalen Benutzeroberfläche des Azure Stack Edge Pro-Geräts zu Softwareupdate, und notieren Sie sich die Versionsnummer des Kubernetes-Servers.

        Screenshot zur Überprüfung der Kubernetes-Server-Versionsnummer.

      • Vergewissern Sie sich, dass diese beiden Versionen kompatibel sind.

Registrieren von Kubernetes-Ressourcenanbietern

Damit Sie Azure Arc im Kubernetes-Cluster aktivieren können, müssen Sie Microsoft.Kubernetes und Microsoft.KubernetesConfiguration für Ihr Abonnement aktivieren und registrieren.

  1. Wechseln Sie zum Aktivieren eines Ressourcenanbieters im Azure-Portal zu dem Abonnement, das für die Bereitstellung verwendet werden soll. Navigieren Sie zu Ressourcenanbieter.

  2. Suchen Sie im rechten Bereich nach den Anbietern, die hinzugefügt werden sollen, in diesem Beispiel Microsoft.Kubernetes und Microsoft.KubernetesConfiguration.

    Screenshot des Registrierens von Kubernetes-Ressourcenanbietern.

  3. Wählen Sie einen Ressourcenanbieter und dann oben auf der Befehlsleiste die Option Registrieren aus. Die Registrierung dauert einige Minuten.

    Screenshot der Registrierung von Kubernetes-Ressourcenanbietern 2.

  4. Aktualisieren Sie die Benutzeroberfläche, bis angezeigt wird, dass der Ressourcenanbieter registriert ist. Führen Sie diese Schritte für beide Ressourcenanbieter aus.

    Screenshot des Registrierens von Kubernetes-Ressourcenanbietern 3.

Sie können Ressourcenanbieter außerdem über az cli registrieren. Weitere Informationen finden Sie unter Registrieren der beiden Anbieter für Kubernetes mit Azure Arc-Unterstützung.

Erstellen des Dienstprinzipals und Zuweisen einer Rolle

  1. Achten Sie darauf, dass Sie die Subscription ID und den Namen der Ressourcengruppe verwenden, die Sie für die Ressourcenbereitstellung für den Azure Stack Edge-Dienst verwendet haben. Navigieren Sie zum Abrufen der Abonnement-ID im Azure-Portal zu Ihrer Azure Stack Edge-Ressource. Navigieren Sie zu Übersicht > Essentials.

    Screenshot mit der Abonnement-ID.

    Wechseln Sie zum Abrufen des Ressourcengruppennamens zu Eigenschaften.

    Screenshot des Abrufens des Ressourcengruppennamens.

  2. Führen Sie den folgenden Befehl über az cli aus, um einen Dienstprinzipal zu erstellen.

    az ad sp create-for-rbac --name "<Informative name for service principal>"

    Informationen zum Anmelden bei az cli finden Sie unter Starten von Cloud Shell im Azure-Portal. Wenn Sie az cli auf einem lokalen Client verwenden, um den Dienstprinzipal zu erstellen, stellen Sie sicher, dass Sie mindestens Version 2.25 ausführen.

    Hier sehen Sie ein Beispiel.

    PS /home/user> az ad sp create-for-rbac --name "https://azure-arc-for-ase-k8s"
    {
      "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "displayName": "azure-arc-for-ase-k8s",
      "name": "https://azure-arc-for-ase-k8s",
      "password": "<password>",
      "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
    PS /home/user>
    
  3. Notieren Sie sich appId, name, password und tenantID, da Sie diese Werte im nächsten Befehl eingeben müssen.

    Es gibt mehrere Möglichkeiten, um zu erhalten appId. Die folgenden drei Optionen sind die bevorzugten Methoden. Wenn Sie eine der folgenden Optionen verwenden, können Sie die Schritte 1, 2 und 3 aus dem vorherigen Abschnitt überspringen und direkt zum folgenden Schritt 4 wechseln.

    • Option 1: Verwenden Sie Minishell, um das folgende PowerShell-Cmdlet auszuführen:

      [Device-IP]: PS> Get-AzureDataBoxEdgeApplicationId
      xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      [Device-IP]: PS>
      
    • Option 2 : Verwenden Sie die folgenden Schritte, um JSON-Details für Ihr Gerät im Azure-Portal anzuzeigen:

      1. Navigieren Sie zur Übersicht über Ihr Azure Stack Edge-Gerät , und wählen Sie dann oben rechts die JSON-Ansicht aus.

        Screenshot der Seite

      2. Notieren Sie sich in den Ressourcen-JSON-Details für Ihr Gerät die principalId.

        Screenshot der Ansicht der JSON-Details für Ihr Azure Stack Edge-Gerät.

    • Option 3 : Verwenden Sie PowerShell ohne Azure Stack Edge PowerShell auf einem Clientcomputer, um den folgenden Befehl auszuführen:

      // ASE resource group and resource name can be obtained from Azure portal
      PS C:\> $ASEResource= GetAzResource –ResourceGroupName <resource-group-name> -ResourceName <resource-name>
      PS C:\> $ASEResource.Identity.PrincipalId
      xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      PS C:\>
      
  4. Nachdem Sie den neuen Dienstprinzipal erstellt haben oder nachdem Sie ihn mithilfe einer dieser Optionen abgerufen haben, weisen Sie die Kubernetes Cluster - Azure Arc Onboarding Rolle dem neu erstellten Prinzipal zu. Dabei handelt es sich um eine integrierte Azure-Rolle (verwenden Sie im Befehl die Rollen-ID) mit eingeschränkten Berechtigungen. Verwenden Sie den folgenden Befehl:

    az role assignment create --role 34e09817-6cbe-4d01-b1a2-e0eac5743d41 --assignee <appId-from-service-principal> --scope /subscriptions/<SubscriptionID>/resourceGroups/<Resource-group-name>

    Hier sehen Sie ein Beispiel.

    PS /home/user> az role assignment create --role 34e09817-6cbe-4d01-b1a2-e0eac5743d41 --assignee xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --scope /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1
    {
      "canDelegate": null,
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
      "name": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "principalType": "ServicePrincipal",
      "resourceGroup": "myaserg1",
      "roleDefinitionId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Authorization/roleDefinitions/34e09817-6cbe-4d01-b1a2-e0eac5743d41",
      "scope": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1",
      "type": "Microsoft.Authorization/roleAssignments"
    }
    PS /home/user>
    

Aktivieren von Arc im Kubernetes-Cluster

Führen Sie folgende Schritte aus, um den Kubernetes-Cluster für die Azure Arc-Verwaltung zu konfigurieren:

  1. Stellen Sie auf Ihrem Gerät eine Verbindung mit der PowerShell-Schnittstelle her.

  2. Führen Sie den folgenden Befehl aus:

    Set-HcsKubernetesAzureArcAgent -SubscriptionId "<Your Azure Subscription Id>" -ResourceGroupName "<Resource Group Name>" -ResourceName "<Azure Arc resource name (shouldn't exist already)>" -Location "<Region associated with resource group>" -TenantId "<Tenant Id of service principal>" -ClientId "<App id of service principal>"

    Nachdem Sie diesen Befehl ausgeführt haben, wird eine folgende Aufforderung angezeigt, um ClientSecret anzugeben. Geben Sie das Dienstprinzipalkennwort an der Eingabeaufforderung an.

    Fügen Sie den Parameter CloudEnvironment hinzu, wenn Sie eine andere als die öffentliche Azure-Cloud verwenden. Sie können diesen Parameter auf AZUREPUBLICCLOUD, AZURECHINACLOUD, AZUREGERMANCLOUD und AZUREUSGOVERNMENTCLOUD festlegen.

    Überlegungen zur Nutzung:

    • Um Azure Arc auf Ihrem Gerät bereitzustellen, stellen Sie sicher, dass Sie eine unterstützte Region für Azure Arc verwenden.
    • Verwenden Sie den az account list-locations-Befehl, um den genauen Ortsnamen zu bestimmen, der im Set-HcsKubernetesAzureArcAgent Cmdlet übergeben werden soll. Standortnamen enthalten in der Regel keine Leerzeichen.

    Von Bedeutung

    Wenn Sie das Id abrufen, anstatt ein neues Dienstprinzip mit der älteren Methode zu erstellen, geben Sie ClientId, TenantId oder ClientSecret nicht an.

    Hier sehen Sie ein Beispiel:

    [10.100.10.10]: PS>Set-HcsKubernetesAzureArcAgent -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "myaserg1" -ResourceName "myasetestresarc" -Location "westeurope" -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ClientId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    
    WARNING: A script or application on the remote computer 10.126.76.0 is sending a prompt request. When you are prompted,
    enter sensitive information, such as credentials or passwords, only if you trust the remote computer and the
    application or script that is requesting the data.
    
    cmdlet Set-HcsKubernetesAzureArcAgent at command pipeline position 1
    
    Supply values for the following parameters:
    ClientSecret: **********************************
    [10.100.10.10]: PS>
    

    Im Azure-Portal soll eine Ressource mit dem Namen erstellt werden, den Sie im vorherigen Befehl angegeben haben.

    Screenshot zum Aufruf der Azure Arc-Ressource.

  3. Um zu überprüfen, ob Azure Arc erfolgreich aktiviert wurde, führen Sie folgenden Befehl über die PowerShell-Schnittstelle aus:

    kubectl get deployments,pods -n azure-arc

    In der folgenden Beispielausgabe sind die Azure Arc-Agents dargestellt, die in Ihrem Kubernetes-Cluster im Namespace azure-arc bereitgestellt wurden.

    [10.128.44.240]: PS>kubectl get deployments,pods -n azure-arc
    NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/cluster-metadata-operator   1/1     1            1           13d
    deployment.apps/clusterconnect-agent        1/1     1            1           13d
    deployment.apps/clusteridentityoperator     1/1     1            1           13d
    deployment.apps/config-agent                1/1     1            1           13d
    deployment.apps/controller-manager          1/1     1            1           13d
    deployment.apps/extension-manager           1/1     1            1           13d
    deployment.apps/flux-logs-agent             1/1     1            1           13d
    deployment.apps/kube-aad-proxy              1/1     1            1           13d
    deployment.apps/metrics-agent               1/1     1            1           13d
    deployment.apps/resource-sync-agent         1/1     1            1           13d
    
    NAME                                            READY   STATUS    RESTARTS   AGE
    pod/cluster-metadata-operator-9568b899c-2stjn   2/2     Running   0          13d
    pod/clusterconnect-agent-576758886d-vggmv       3/3     Running   0          13d
    pod/clusteridentityoperator-6f59466c87-mm96j    2/2     Running   0          13d
    pod/config-agent-7cbd6cb89f-9fdnt               2/2     Running   0          13d
    pod/controller-manager-df6d56db5-kxmfj          2/2     Running   0          13d
    pod/extension-manager-58c94c5b89-c6q72          2/2     Running   0          13d
    pod/flux-logs-agent-6db9687fcb-rmxww            1/1     Running   0          13d
    pod/kube-aad-proxy-67b87b9f55-bthqv             2/2     Running   0          13d
    pod/metrics-agent-575c565fd9-k5j2t              2/2     Running   0          13d
    pod/resource-sync-agent-6bbd8bcd86-x5bk5        2/2     Running   0          13d
    [10.128.44.240]: PS>
    

Eine konzeptionelle Übersicht über diese Agents finden Sie hier.

Entfernen von Arc aus dem Kubernetes-Cluster

Führen Sie die folgenden Schritte aus, um die Azure Arc-Verwaltung zu entfernen:

  1. Stellen Sie auf Ihrem Gerät eine Verbindung mit der PowerShell-Schnittstelle her.

  2. Führen Sie den folgenden Befehl aus:

    Remove-HcsKubernetesAzureArcAgent

Hinweis

Wenn die Ressource yamls standardmäßig aus dem Git-Repository gelöscht wird, werden die entsprechenden Ressourcen nicht aus dem Kubernetes-Cluster gelöscht. Sie müssen --sync-garbage-collection in den Operatorparametern von Arc festlegen, um das Löschen von Ressourcen beim Löschen aus dem Git-Repository zu ermöglichen. Weitere Informationen finden Sie unter Löschen einer Konfiguration.

Nächste Schritte

Informationen zum Ausführen einer Azure Arc-Bereitstellung finden Sie unter Bereitstellen einer zustandslosen PHP-Anwendung Guestbook mit Redis über GitOps auf einem Azure Stack Edge Pro-Gerät.