Usare servizio Azure Kubernetes nell'hub di Azure Stack con l'interfaccia della riga di comando

Questa è una guida per iniziare a usare il servizio servizio Azure Kubernetes (AKS) nell'hub di Azure Stack. Questo articolo descrive il set principale di scenari per acquisire familiarità con il servizio Azure Kubernetes nell'hub di Azure Stack. La funzionalità disponibile nell'hub di Azure Stack è un subset di ciò che è disponibile in Azure globale.

Nelle sezioni seguenti:

  1. Completare i prerequisiti per l'uso del servizio Azure Kubernetes nell'hub di Azure Stack.
  2. Completare le operazioni del ciclo di vita di un cluster del servizio Azure Kubernetes usando l'interfaccia della riga di comando di Azure e il portale utenti dell'hub di Azure Stack.

Installare l'interfaccia da riga di comando di Azure

Sarà necessario installare l'interfaccia della riga di comando di Azure con il supporto del servizio Azure Kubernetes per il computer. Preparare un computer pulito Linux o Windows per installare la versione di anteprima dell'interfaccia della riga di comando di Azure con il supporto del servizio Azure Kubernetes. Assicurarsi che nel computer non sia installata l'interfaccia della riga di comando di Azure per evitare conflitti con l'anteprima dell'interfaccia della riga di comando di Azure che verrà installata successivamente. La maggior parte delle istruzioni riportate di seguito presuppone l'uso di una macchina virtuale Linux, ma è possibile trovare i passaggi equivalenti in Windows nella documentazione del prodotto.

Non aggiornare l'interfaccia della riga di comando di Azure dopo l'installazione dell'interfaccia della riga di comando di Azure con il supporto del servizio Azure Kubernetes. Se si esegue l'aggiornamento, verrà sostituito dalla versione pronta per la produzione che non supporta il servizio Azure Kubernetes.

Per un computer Ubuntu, seguire le istruzioni in Installare l'interfaccia della riga di comando di Azure in Linux.

Dopo aver installato l'interfaccia della riga di comando di Azure con il supporto del servizio Azure Kubernetes, verificare che l'installazione sia corretta eseguendo il comando seguente dell'interfaccia della riga di comando di Azure:

    az --version

Questo è l'output di un computer Linux:

output da un computer Linux

L'interfaccia della riga di comando di Azure deve essere 2.28.0 o successiva.

Connettersi all'hub di Azure Stack

  1. Connettersi all'endpoint dell'hub di Azure Stack. È necessario usare l'interfaccia della riga di comando di Azure per stabilire l'ambiente specifico dell'hub di Azure Stack a cui ci si connette. Le istruzioni sono disponibili in Connettersi all'hub di Azure Stack

  2. Registrare l'ambiente in modo che l'interfaccia della riga di comando di Azure possa connettersi all'endpoint dell'hub di Azure Stack Resource Manager per l'istanza. Aggiornare gli URL nel frammento di codice seguente ed eseguire il comando seguente:

    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. Impostare l'ambiente attivo.

    az cloud set -n aks-preview-test
    
  4. Aggiornare la configurazione dell'ambiente.

    az cloud update --profile 2020-09-01-hybrid
    
  5. Connettersi all'ambiente.

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

    Nota

    Se si attiva un errore di verifica del certificato non riuscito, è possibile che il certificato usato per l'endpoint di azure Resource Manager non sia considerato attendibile dal computer client. In tal caso, è necessario esportare il certificato usato negli endpoint dell'hub di Azure Stack e considerarlo attendibile. È possibile trovare istruzioni in Esportare il certificato radice ca dell'hub di Azure Stack.

    In particolare, per i computer Linux, vedere: Microsoft Entra ID in Linux

  6. Impostare la sottoscrizione nella sessione dell'interfaccia della riga di comando di Azure come predefinita con:

    az account set --subscription <subscription-id>
    
  7. Registrare il provider di risorse servizio Azure Kubernetes. Elencare i provider di risorse disponibili nella sottoscrizione.

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

    L'output sarà simile al seguente:

    L'output dovrebbe essere simile al seguente

  8. Prendere nota del provider di risorse Microsoft.ContainerService e quindi registrare il provider:

    az provider register --namespace Microsoft.ContainerService
    
  9. Eseguire di nuovo il passaggio sette per verificare lo stato di registrazione del provider di risorse. Il completamento della registrazione può richiedere alcuni minuti.

Al termine di questi passaggi dei prerequisiti, è possibile procedere con i test degli scenari seguenti.

Creare un cluster AKS

Le istruzioni globali di Azure sono disponibili in Distribuire un cluster servizio Azure Kubernetes usando l'interfaccia della riga di comando di Azure. Le istruzioni riportate di seguito riflettono le limitazioni dell'uso del servizio Azure Kubernetes nell'hub di Azure Stack. È possibile usare l'interfaccia della riga di comando di Azure per creare un cluster del servizio Azure Kubernetes per contenitori Linux o Windows.

  1. Creare un gruppo di risorse:

    az group create --name myResourceGroup --location <Azure Stack Hub location>
    
  2. Assicurarsi di avere un ID entità servizio pronto con l'autorizzazione di collaboratore per la sottoscrizione per creare cluster.

    1. Per creare un'entità servizio (SPN) usando Microsoft Entra ID, seguire queste istruzioni.
    2. Per creare un nome SPN usando Active Directory Federated Services (AD FS), seguire queste istruzioni.
    3. Per assegnare il ruolo "Collaboratore" al nome SPN, vedere le istruzioni. Assicurarsi di selezionare il ruolo "Collaboratore".
  3. Creare un cluster del servizio Azure Kubernetes di tre nodi agente. Specificare i valori per i parametri seguenti, vengono forniti esempi. Eseguire:

    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
    

    L'output di questa operazione sarà in formato JSON e conterrà una specifica del cluster, inclusa la chiave pubblica SSH generata, il nome di dominio completo (FQDN) usato nel cluster tra le altre proprietà. Si noti che il comando restituirà un testo, ad esempio questo, che evidenzia la posizione della chiave privata: SSH key files '/home/azureuser/.ssh/id_rsa' e '/home/azureuser/.ssh/id_rsa.pub' che è stato generato in \~/.ssh per consentire l'accesso SSH alla macchina virtuale. Archiviare queste chiavi in una posizione sicura da usare nel caso in cui sia necessario connettersi tramite SSH nelle macchine virtuali, come nel caso in cui si verificano i problemi.

  4. È ora possibile ripetere i test per Scalabilità, distribuire un'app ed Eliminare.

Stabilire la connessione al cluster

  1. Per gestire un cluster Kubernetes, usare kubectl, il client da riga di comando di Kubernetes. Per installare kubectl in locale, usare il comando az aks install-cli (potrebbe essere necessario usare 'sudo' all'inizio per avere l'autorizzazione per installarlo):

    az aks install-cli
    
  2. Per configurare kubectl per la connessione al cluster Kubernetes, usare il az aks get-credentials comando . Questo comando scarica le credenziali e configura l'interfaccia della riga di comando di Kubernetes per usarli.

    az aks get-credentials --resource-group myResourceGroup --name myakscluster --admin
    
  3. Per verificare la connessione al cluster, usare il comando kubectl get per restituire un elenco dei nodi del cluster.

    kubectl get nodes
    

verificare la connessione al cluster

Ridimensionare un cluster

Un'altra attività di gestione del cluster consiste nel ridimensionare un cluster. È possibile ridimensionare un cluster in qualsiasi momento dopo che è stato creato usando il comando az aks scale. Per ridimensionare il cluster dai tre nodi iniziali a 4, eseguire:

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

Quando il cluster è stato ridimensionato correttamente, l'output conterrà un "agentPoolProfiles" simile all'esempio seguente:

    "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
        }
    ]

Eliminare il cluster

Dopo aver eseguito le operazioni precedenti, è possibile procedere all'eliminazione del cluster. Eseguire:

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

Creare un cluster del servizio Azure Kubernetes con una rete virtuale personalizzata

La creazione di un cluster da distribuire in una rete fornita dall'utente è uno scenario comune. La pianificazione della configurazione di rete richiede alcune operazioni di preparazione. Si noti anche che con il servizio Azure Kubernetes il plug-in di rete predefinito è Azure CNI, non Kubenet come avviene con il motore del servizio Azure Kubernetes. Con Azure CNI ogni pod ottiene un indirizzo IP dalla subnet e può essere accessibile direttamente (senza la necessità di una tabella di routing come avviene con Kubenet). Questi indirizzi IP devono essere univoci nello spazio di rete e devono essere pianificati. L'articolo seguente illustra il processo di pianificazione per la distribuzione della rete virtuale personalizzata. È possibile trovare diverse configurazioni di rete che funzionano per le proprie esigenze e testarle. Per un test iniziale, i due passaggi seguenti illustrano il processo di base:

  1. Seguire le istruzioni riportate in questo articolo per pianificare la distribuzione usando Azure CNI. Ad esempio, è possibile usare il portale per creare una rete virtuale denominata "myAKSVnet" con intervallo IP 10.0.0.0/8 con subnet "myAKSSubnet" e intervallo IP 10.240.0.0/16 in un gruppo di risorse denominato "myTest-rg". Usare quindi il passaggio successivo per la creazione del cluster.

    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. Si noti che il comando del cluster fornito nell'articolo di Azure funziona correttamente durante la distribuzione in Azure, per eseguire la distribuzione nell'hub di Azure Stack è necessario specificare parametri aggiuntivi come nell'esempio seguente. L'ID subnet della rete virtuale sarà simile a '/subscriptions/dfdfdff-5dfdf-dfdf-dfdfdfd/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. Seguire le istruzioni nella sezione "Connettersi al cluster" per connettersi al cluster Kubernetes e distribuire le applicazioni.

Verifica coerenza

Verifica coerenza tra Azure e l'hub di Azure Stack

  1. Selezionare una combinazione di comandi da quelli testati in precedenza, dalla sezione "Riferimento ai comandi" di seguito o dagli script quotidiani personalizzati.
  2. Applicarli ad Azure e versioni successive all'hub di Azure Stack. Prendere nota di eventuali discrepanze non previste e fornire commenti e suggerimenti.

Passaggi successivi

Informazioni sul servizio Azure Kubernetes nell'hub di Azure Stack