Abilitare Azure Arc nel cluster Kubernetes nel dispositivo Azure Stack Edge Pro con GPU
SI APPLICA A: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Questo articolo illustra come abilitare Azure Arc in un cluster Kubernetes esistente nel dispositivo Azure Stack Edge Pro.
Questa procedura presuppone che si abbia letto e compreso gli articoli seguenti:
- Carichi di lavoro Kubernetes nel dispositivo Azure Stack Edge Pro
- Che cos’è Kubernetes abilitato per Azure Arc (anteprima)?
Prerequisiti
Assicurarsi di aver completato i prerequisiti seguenti nel dispositivo Azure Stack Edge Pro e nel client usato per accedere al dispositivo:
Per il dispositivo
Si dispone di credenziali di accesso a un dispositivo Azure Stack Edge Pro a 1 nodo.
- Il dispositivo viene attivato. Vedere Attivare il dispositivo.
- Il dispositivo ha il ruolo di calcolo configurato tramite il portale di Azure e ha un cluster Kubernetes. Vedere Configurare il calcolo.
Si dispone dell’accesso come proprietario alla sottoscrizione. Questo accesso è necessario durante il passaggio di assegnazione di ruolo per l’entità servizio.
Per l’accesso del client al dispositivo
Si dispone di un sistema client Windows usato per accedere al dispositivo Azure Stack Edge Pro.
Il client esegue Windows PowerShell 5.0 o versione successiva. Per scaricare la versione più recente di Windows PowerShell, passare a Installare Windows PowerShell.
È possibile avere anche qualsiasi altro client con un sistema operativo supportato. Questo articolo descrive la procedura quando si usa un client Windows.
È stata completata la procedura descritta in Accedere al cluster Kubernetes nel dispositivo Azure Stack Edge Pro. Precisamente:
- È stato installato
kubectl
nel client. - Assicurarsi che la versione del client
kubectl
non sia oltre una versione diversa, precedente o successiva, rispetto alla versione master di Kubernetes in esecuzione nel dispositivo Azure Stack Edge Pro.Usare
kubectl version
per controllare la versione di kubectl in esecuzione nel client. Prendere nota della versione completa.Nell’interfaccia utente locale del dispositivo Azure Stack Edge Pro, passare a Aggiornamento software e prendere nota del numero di versione del server Kubernetes.
Verificare che queste due versioni siano compatibili.
- È stato installato
Registrare i provider di risorse Kubernetes
Prima di abilitare Azure Arc nel cluster Kubernetes, è necessario abilitare e registrare Microsoft.Kubernetes
e Microsoft.KubernetesConfiguration
nella sottoscrizione.
Per abilitare un provider di risorse, passare alla sottoscrizione che si prevede di usare per la distribuzione nel portale di Azure. Passare a Provider di risorse.
Nel riquadro destro, cercare i provider da aggiungere. In questo esempio,
Microsoft.Kubernetes
eMicrosoft.KubernetesConfiguration
.Selezionare un provider di risorse e, nella parte superiore della barra dei comandi, selezionare Registra. La registrazione richiede alcuni minuti.
Aggiornare l’interfaccia utente finché non viene visualizzato che il provider di risorse è stato registrato. Ripetere il processo per entrambi i provider di risorse.
È anche possibile registrare i provider di risorse tramite az cli
. Per altre informazioni, vedere Registrare i due provider per Kubernetes abilitato per Azure Arc.
Creare un’entità servizio, assegnare il ruolo
Assicurarsi di avere
Subscription ID
e il nome del gruppo di risorse usato per la distribuzione delle risorse per il servizio Azure Stack Edge. Per ottenere l’ID sottoscrizione, passare alla risorsa Azure Stack Edge nel portale di Azure. Passare a Panoramica > Essenziali.Per ottenere il nome del gruppo di risorse, passare a Proprietà.
Per creare un’entità servizio, usare il comando seguente tramite
az cli
.az ad sp create-for-rbac --name "<Informative name for service principal>"
Per informazioni su come accedere ad
az cli
, Avviare Cloud Shell nel portale di Azure. Se si usaaz cli
in un client locale per creare l’entità servizio, assicurarsi di stare eseguendo la versione 2.25 o successiva.Ecco un esempio.
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>
Prendere nota di
appID
,name
,password
etenantID
perché si useranno questi valori come input per il comando successivo.Dopo aver creato la nuova entità servizio, assegnare il ruolo
Kubernetes Cluster - Azure Arc Onboarding
all’entità appena creata. Si tratta di un ruolo predefinito di Azure con autorizzazioni limitate (usare l’ID ruolo nel comando). Usare il comando seguente:az role assignment create --role 34e09817-6cbe-4d01-b1a2-e0eac5743d41 --assignee <appId-from-service-principal> --scope /subscriptions/<SubscriptionID>/resourceGroups/<Resource-group-name>
Ecco un esempio.
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/59272f92-e5ce-4aeb-9c0c-62532d8caf25", "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>
Abilitare Arc nel cluster Kubernetes
Seguire questa procedura per configurare il cluster Kubernetes per la gestione di Azure Arc:
Connettersi all’interfaccia di PowerShell del dispositivo.
Tipo:
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>"
Quando questo comando viene eseguito, verrà visualizzato un prompt di completamento per immettere
ClientSecret
. Specificare la password dell’entità servizio.Aggiungere il parametro
CloudEnvironment
se si usa un cloud diverso da quello pubblico di Azure. È possibile impostare questo parametro suAZUREPUBLICCLOUD
,AZURECHINACLOUD
,AZUREGERMANCLOUD
eAZUREUSGOVERNMENTCLOUD
.Nota
- Per distribuire Azure Arc nel dispositivo, assicurarsi di usare un’Area supportata per Azure Arc.
- Usare il comando
az account list-locations
per individuare il nome esatto della posizione da passare al cmdletSet-HcsKubernetesAzureArcAgent
. I nomi di posizione vengono in genere formattati senza spazi. - Sono necessari
ClientId
eClientSecret
.
Ecco un esempio:
[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>
Nel portale di Azure, deve essere creata una risorsa con il nome specificato nel comando precedente.
Per verificare che Azure Arc sia abilitato correttamente, eseguire il comando seguente dall’interfaccia di PowerShell:
kubectl get deployments,pods -n azure-arc
Ecco un output di esempio che mostra gli agenti di Azure Arc distribuiti nel cluster Kubernetes nello spazio dei nomi
azure-arc
.[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>
Una panoramica concettuale di questi agenti è disponibile qui.
Rimuovere Arc dal cluster Kubernetes
Per rimuovere la gestione di Azure Arc, seguire questa procedura:
-
- Connettersi all’interfaccia di PowerShell del dispositivo.
Tipo:
Remove-HcsKubernetesAzureArcAgent
Nota
Per impostazione predefinita, quando gli yamls
delle risorse vengono eliminati dal repository Git, le risorse corrispondenti non vengono eliminate dal cluster Kubernetes. È necessario impostare --sync-garbage-collection
in Arc OperatorParams per consentire l’eliminazione delle risorse quando vengono eliminate dal repository Git. Per altre informazioni, vedere Eliminare una configurazione
Passaggi successivi
Per informazioni su come eseguire una distribuzione di Azure Arc, vedere Distribuire un’applicazione PHP senza statoGuestbook
con Redis tramite GitOps in un dispositivo Azure Stack Edge Pro