Condividi tramite


Preparare il cluster Kubernetes con abilitazione per Azure Arc

Un cluster Kubernetes abilitato per Azure Arc è un prerequisito per la distribuzione delle operazioni di Azure IoT. Questo articolo descrive come preparare un cluster prima di distribuire le operazioni di Azure IoT. Questo articolo include indicazioni per Ubuntu, Windows, Azure Local e Tanzu Kubernetes Grid (TKG).

I passaggi descritti in questo articolo preparano il cluster per una distribuzione di impostazioni sicure, che è un processo più lungo ma pronto per la produzione. Se si vuole distribuire rapidamente le operazioni IoT di Azure ed eseguire un carico di lavoro di esempio con solo le impostazioni di test, vedere la guida introduttiva: Eseguire operazioni IoT di Azure in GitHub Codespaces con K3s. Per altre informazioni sulle impostazioni di test e sulle impostazioni sicure, vedere Dettagli di distribuzione > Scegli le tue funzionalità.

Prerequisiti

Microsoft supporta il servizio Azure Kubernetes Edge Essentials per le distribuzioni in Windows, K3s per distribuzioni in Ubuntu, distribuzioni del servizio Azure Kubernetes in Azure locale e Tanzu Kubernetes (TKr) in TKG. Se si vuole distribuire le operazioni di Azure IoT in una soluzione multinodo, usare K3s in Ubuntu.

Per preparare un cluster Kubernetes abilitato per Azure Arc, è necessario:

  • Una sottoscrizione di Azure con il ruolo Owner o una combinazione del ruolo Collaboratore e del ruolo Amministratore di accesso utente. È possibile controllare il livello di accesso passando alla sottoscrizione, selezionando Controllo di accesso (IAM) sul lato sinistro del portale di Azure e quindi selezionando Visualizza l'accesso. Se non si dispone di sottoscrizione di Azure, crearne una gratuitamente prima di iniziare.

  • Un gruppo di risorse di Azure. Per ogni gruppo di risorse è supportata una sola istanza di Operazioni IoT di Azure. Per creare un nuovo gruppo di risorse, usare il comando az group create. Per trovare l'elenco delle aree Azure attualmente supportate, vedere Aree supportate.

    az group create --location <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID>
    
  • Interfaccia della riga di comando di Azure versione 2.62.0 o successiva installata nel computer cluster. Usare az --version per controllare la versione e az upgrade per aggiornarla, se necessario. Per altre informazioni, vedere Installare l'interfaccia della riga di comando di Azure.

  • La versione più recente dell'estensione connectedk8s per l'interfaccia della riga di comando di Azure:

    az extension add --upgrade --name connectedk8s
    

Creare e abilitare Arc per un cluster

Questa sezione illustra la procedura per creare cluster in ambienti convalidati in Linux e Windows.

Per preparare un cluster Kubernetes K3s in Ubuntu:

  1. Creare un cluster K3s a nodo singolo o multinodo. Per esempi, vedere la guida introduttiva di K3s o i progetti correlati a K3s.

  2. Verificare che kubectl sia stato installato come parte di K3s. In caso contrario, seguire le istruzioni per installare kubectl su Linux.

    kubectl version --client
    
  3. Seguire le istruzioni per installare Helm.

  4. Creare un file yaml di configurazione K3s in .kube/config:

    mkdir ~/.kube
    sudo KUBECONFIG=~/.kube/config:/etc/rancher/k3s/k3s.yaml kubectl config view --flatten > ~/.kube/merged
    mv ~/.kube/merged ~/.kube/config
    chmod  0600 ~/.kube/config
    export KUBECONFIG=~/.kube/config
    #switch to k3s context
    kubectl config use-context default
    sudo chmod 644 /etc/rancher/k3s/k3s.yaml
    
  5. Eseguire il comando seguente per aumentare i limiti di controllo/istanza dell'utente.

    echo fs.inotify.max_user_instances=8192 | sudo tee -a /etc/sysctl.conf
    echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    
  6. Per prestazioni migliori, aumentare il limite del descrittore di file:

    echo fs.file-max = 100000 | sudo tee -a /etc/sysctl.conf
    
    sudo sysctl -p
    

Abilitare Arc per il cluster

Connettere il cluster ad Azure Arc in modo che possa essere gestito in remoto.

  1. Da un computer che ha kubectl accesso al cluster, accedere all'interfaccia della riga di comando di Azure con l'account utente Microsoft Entra con i ruoli necessari per la sottoscrizione di Azure:

    az login
    

    Se in qualsiasi momento viene visualizzato un errore che indica che il dispositivo deve essere gestito per accedere alla risorsa, eseguire di nuovo az login e assicurarsi di accedere in modo interattivo con un browser.

  2. Dopo l'accesso, l'interfaccia della riga di comando di Azure visualizza tutte le sottoscrizioni e indica la sottoscrizione predefinita con un asterisco *. Per continuare con la sottoscrizione predefinita, selezionare Enter. In caso contrario, digitare il numero della sottoscrizione di Azure che si vuole usare.

  3. Registrare i provider di risorse necessari nella sottoscrizione.

    Annotazioni

    Questo passaggio deve essere eseguito una volta sola per ogni sottoscrizione. Per registrare i provider di risorse, è necessaria l'autorizzazione per eseguire l'operazione /register/action, inclusa nei ruoli Collaboratore e Proprietario della sottoscrizione. Per altre informazioni, vedere Provider e tipi di risorse di Azure.

    az provider register -n "Microsoft.ExtendedLocation"
    az provider register -n "Microsoft.Kubernetes"
    az provider register -n "Microsoft.KubernetesConfiguration"
    az provider register -n "Microsoft.IoTOperations"
    az provider register -n "Microsoft.DeviceRegistry"
    az provider register -n "Microsoft.SecretSyncController"
    
  4. Usare il comando az connectedk8s connect per abilitare il cluster Kubernetes per Arc e gestirlo come parte del gruppo di risorse di Azure.

    az connectedk8s connect --name <CLUSTER_NAME> -l <REGION> --resource-group <RESOURCE_GROUP> --subscription <SUBSCRIPTION_ID> --enable-oidc-issuer --enable-workload-identity --disable-auto-upgrade
    

    Per impedire gli aggiornamenti non pianificati in Azure Arc e le estensioni Arc di sistema usate da Operazioni IoT di Azure come dipendenze, questo comando disabilita il downgrade automatico. Invece, Aggiornare manualmente gli agenti in base alle esigenze.

    Importante

    Se l'ambiente usa un server proxy o Azure Arc Gateway, modificare il comando az connectedk8s connect con le informazioni del proxy:

    1. Seguire le istruzioni riportate in Connettersi usando un server proxy in uscita o Eseguire l'onboarding di cluster Kubernetes in Azure Arc con Azure Arc Gateway.
    2. Aggiungere 169.254.169.254 al parametro --proxy-skip-range del comando az connectedk8s connect. Registro dispositivi di Azure usa questo endpoint locale per ottenere i token di accesso per l'autorizzazione.

    Le operazioni di Azure IoT non supportano i server proxy che richiedono un certificato attendibile.

  5. Ottenere l'URL dell'autorità di certificazione del cluster.

    az connectedk8s show --resource-group <RESOURCE_GROUP> --name <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
    

    Salvare l'output di questo comando da usare nei passaggi successivi.

  6. Creare un file di configurazione k3s.

    sudo nano /etc/rancher/k3s/config.yaml
    
  7. Aggiungere il contenuto seguente al file config.yaml, sostituendo il segnaposto <SERVICE_ACCOUNT_ISSUER> con l'URL dell'autorità di certificazione del cluster.

    kube-apiserver-arg:
     - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
     - service-account-max-token-expiration=24h
    
  8. Salvare il file e uscire dall'editor nano.

  9. Prepararsi per abilitare il servizio Azure Arc, la posizione personalizzata, nel cluster Arc recuperando l'ID oggetto percorso personalizzato e salvandolo come variabile di ambiente, OBJECT_ID. Per eseguire correttamente il comando, non un'entità servizio, è necessario accedere all'interfaccia della riga di comando di Azure con un account utente di Microsoft Entra. Eseguire il comando seguente esattamente come scritto, senza modificare il valore GUID.

    export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
    

    Annotazioni

    Se viene visualizzato l'errore: "Impossibile recuperare l'oid dell'app 'custom-locations'. Procedere senza abilitare la funzionalità. Privilegi insufficienti per completare l'operazione", l'entità servizio potrebbe non disporre delle autorizzazioni necessarie per recuperare l'ID oggetto della posizione personalizzata. Accedere all'interfaccia della riga di comando di Azure con un account utente di Microsoft Entra che soddisfi i prerequisiti. Per altre informazioni, vedere Creare e gestire posizioni personalizzate.

  10. Usare il comando az connectedk8s enable-features per abilitare la funzionalità di posizione personalizzata nel cluster Arc. Questo comando usa la variabile di ambiente OBJECT_ID salvata dal passaggio precedente per impostare il valore per il parametro custom-locations-oid. Eseguire questo comando nel computer in cui è stato distribuito il cluster Kubernetes:

    az connectedk8s enable-features -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
    
  11. Riavviare K3s.

    systemctl restart k3s
    

Configurare cluster multinodo per Archiviazione contenitori di Azure

Nei cluster Ubuntu multinodo con almeno tre nodi è possibile abilitare la tolleranza di errore per l'archiviazione con Archiviazione azure Container abilitata da Azure Arc quando si distribuiscono le operazioni di Azure IoT.

Se si vuole abilitare la tolleranza di errore durante la distribuzione, configurare i cluster seguendo la procedura descritta in Preparare Linux per i volumi Edge usando un cluster Ubuntu multinodo.

Se si esegue il cluster in una distribuzione Kubernetes diversa da k3s, vedere le indicazioni per Preparare Linux con altre piattaforme.

Configurazione avanzata

A questo punto, quando si dispone di un cluster Kubernetes abilitato per Azure Arc, ma prima di distribuire operazioni IoT di Azure, è possibile configurare il cluster per scenari avanzati.

Passaggi successivi

Ora che si dispone di un cluster Kubernetes abilitato per Azure Arc, è possibile distribuire Operazioni di Azure IoT.