Condividi tramite


Creare cluster Kubernetes usando l'interfaccia della riga di comando di Azure

Si applica a: Locale di Azure, versione 23H2

Questo articolo descrive come creare cluster Kubernetes in Locale di Azure usando l'interfaccia della riga di comando di Azure. Il flusso di lavoro prevede le fasi seguenti:

  1. Creare un cluster Kubernetes in Locale di Azure versione 23H2 usando l'interfaccia della riga di comando di Azure. Il cluster è connesso ad Azure Arc per impostazione predefinita.
  2. Durante la creazione del cluster, si fornisce un gruppo Microsoft Entra che contiene l'elenco di utenti di Microsoft Entra con accesso amministratore del cluster Kubernetes.
  3. Accedere al cluster usando kubectl e l'ID Microsoft Entra.
  4. Eseguire un'applicazione multi-contenitore di esempio con un front-end Web e un'istanza di Redis nel cluster.

Operazioni preliminari

  • Prima di iniziare, assicurarsi di avere i dettagli seguenti dall'amministratore dell'infrastruttura locale:
    • ID sottoscrizione di Azure: ID sottoscrizione di Azure in cui viene usato Locale di Azure per la distribuzione e la registrazione.
    • ID percorso personalizzato - ID di Azure Resource Manager della posizione personalizzata. Il percorso personalizzato viene configurato durante la distribuzione del cluster locale di Azure. L'amministratore dell'infrastruttura deve fornire l'ID resource manager della posizione personalizzata. Questo parametro è obbligatorio per creare cluster Kubernetes. È anche possibile ottenere l'ID di Resource Manager usando az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv, se l'amministratore dell'infrastruttura fornisce un nome di percorso personalizzato e un nome del gruppo di risorse.
    • ID di rete: ID di Azure Resource Manager della rete logica locale di Azure creata seguendo questa procedura. L'amministratore deve fornire l'ID della rete logica. Questo parametro è obbligatorio per creare cluster Kubernetes. È anche possibile ottenere l'ID di Azure Resource Manager usando az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv se si conosce il gruppo di risorse in cui è stata creata la rete logica.
  • È possibile eseguire i passaggi descritti in questo articolo in un computer di sviluppo locale per creare un cluster Kubernetes nella distribuzione locale di Azure remota. Assicurarsi di avere la versione più recente dell'interfaccia della riga di comando di Az nel computer di sviluppo. È anche possibile scegliere di aggiornare la versione dell'interfaccia della riga di comando di Az usando az upgrade.
  • Per connettersi al cluster Kubernetes da qualsiasi posizione, creare un gruppo Microsoft Entra e aggiungervi membri. Tutti i membri del gruppo Microsoft Entra hanno accesso come amministratore del cluster al cluster. Assicurarsi di aggiungere se stessi come membro al gruppo Microsoft Entra. Se non si aggiunge se stessi, non è possibile accedere al cluster Kubernetes usando kubectl. Per altre informazioni sulla creazione di gruppi di Microsoft Entra e sull'aggiunta di utenti, vedere Gestire i gruppi di Microsoft Entra e l'appartenenza ai gruppi.
  • Scaricare e installare kubectl nel computer di sviluppo. Lo strumento da riga di comando kubernetes kubectl consente di eseguire comandi nei cluster Kubernetes. È possibile usare kubectl per distribuire applicazioni, esaminare e gestire le risorse del cluster e visualizzare i log.

Installare l'estensione dell'interfaccia della riga di comando di Azure.

Eseguire il comando seguente per installare le estensioni dell'interfaccia della riga di comando di Azure necessarie:

az extension add -n aksarc --upgrade
az extension add -n customlocation --upgrade
az extension add -n stack-hci-vm --upgrade
az extension add -n connectedk8s --upgrade

Creare un cluster Kubernetes

Usare il az aksarc create comando per creare un cluster Kubernetes in AKS Arc. Assicurarsi di accedere ad Azure prima di eseguire questo comando. Se si hanno più sottoscrizioni di Azure, selezionare l'ID sottoscrizione appropriato usando il comando az account set.

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $logicnetId --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys 

Il comando viene completato dopo pochi minuti e vengono restituite informazioni in formato JSON sul cluster.

Nota

  • Il valore della chiave SSH è la chiave pubblica per l'accesso ai nodi nel cluster di cui è stato effettuato il provisioning. Per impostazione predefinita, questa chiave si trova in ~/.ssh/id_rsa.pub. È possibile specificare un percorso diverso usando il parametro durante la --ssh-key-value creazione del cluster.
  • Il --generate-ssh-keys parametro è obbligatorio se non è presente una chiave SSH preesistente nel computer locale. Se non si include questo parametro durante la creazione del cluster e non esiste alcuna chiave SSH, viene visualizzato un messaggio di errore.
  • Se nel computer locale è già presente una chiave SSH, il cluster del servizio Azure Kubernetes riutilizza tale chiave. In questo caso, specificando --generate-ssh-keyso omettendo tale parametro, non ha alcun effetto.

Importante

Per usare il controllo degli accessi in base al ruolo di Azure o l'identità del carico di lavoro per un cluster del servizio Azure Kubernetes, è necessario passare i parametri necessari durante la creazione del cluster usando l'interfaccia della riga di comando di Azure. Attualmente, l'aggiornamento di un cluster del servizio Azure Kubernetes esistente per abilitare l'identità del carico di lavoro e/o il controllo degli accessi in base al ruolo di Azure non è supportato. Per altre informazioni, vedere Usare il controllo degli accessi in base al ruolo di Azure per l'autorizzazione kubernetes o Distribuire e configurare l'identità del carico di lavoro per il cluster.

Connettersi al cluster Kubernetes

È ora possibile connettersi al cluster Kubernetes eseguendo il az connectedk8s proxy comando dal computer di sviluppo. Assicurarsi di accedere ad Azure prima di eseguire questo comando. Se si hanno più sottoscrizioni di Azure, selezionare l'ID sottoscrizione appropriato usando il comando az account set.

Questo comando scarica kubeconfig del cluster Kubernetes nel computer di sviluppo e apre un canale di connessione proxy al cluster Kubernetes locale. Il canale è aperto finché il comando viene eseguito. Consentire l'esecuzione di questo comando per tutto il tempo necessario per accedere al cluster. Se si verifica il timeout, chiudere la finestra dell'interfaccia della riga di comando, aprirne una nuova, quindi eseguire di nuovo il comando.

Per eseguire correttamente il comando seguente, è necessario disporre delle autorizzazioni di Collaboratore per il gruppo di risorse che ospita il cluster Kubernetes:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

Output previsto:

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using
kubeconfig at .\\aks-arc-kube-config
Press Ctrl+C to close proxy.

Mantenere questa sessione in esecuzione e connettersi al cluster Kubernetes da un terminale o un prompt dei comandi diverso. Verificare che sia possibile connettersi al cluster Kubernetes eseguendo il comando kubectl get. Questo comando restituisce un elenco dei nodi del cluster:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

L'esempio di output seguente mostra il nodo creato nei passaggi precedenti. Assicurarsi che lo stato del nodo sia Pronto:

NAME             STATUS ROLES                AGE VERSION
moc-l0ttdmaioew  Ready  control-plane,master 34m v1.24.11
moc-ls38tngowsl  Ready  <none>               32m v1.24.11

Distribuire l'applicazione

Un file manifesto Kubernetes definisce lo stato desiderato di un cluster, ad esempio le immagini del contenitore da eseguire.

È possibile usare un manifesto per creare tutti gli oggetti necessari per eseguire l'applicazione Azure Vote. Questo manifesto include due distribuzioni kubernetes:

  • Applicazioni Python di Azure Vote di esempio.
  • Istanza di Redis.

Vengono creati anche due servizi Kubernetes:

  • Servizio interno per l'istanza di Redis.
  • Un servizio esterno per accedere all'applicazione Azure Vote da Internet.

Creare un file denominato azure-vote.yaml e copiarlo nel manifesto seguente:

apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-back 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-back 
      template: 
        metadata: 
          labels: 
            app: azure-vote-back 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-back 
            image: <path to image>/oss/bitnami/redis:6.0.8 
            env: 
            - name: ALLOW_EMPTY_PASSWORD 
              value: "yes" 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 6379 
              name: redis 
    ---
    apiVersion: v1
    kind: Service 
    metadata: 
      name: azure-vote-back 
    spec: 
      ports: 
      - port: 6379 
      selector: 
        app: azure-vote-back 
    --- 
    apiVersion: apps/v1 
    kind: Deployment 
    metadata: 
      name: azure-vote-front 
    spec: 
      replicas: 1 
      selector: 
        matchLabels: 
          app: azure-vote-front 
      template: 
        metadata: 
          labels: 
            app: azure-vote-front 
        spec: 
          nodeSelector: 
            "kubernetes.io/os": linux 
          containers: 
          - name: azure-vote-front 
            image: <path to image>/azure-vote-front:v1 
            resources: 
              requests: 
                cpu: 100m 
                memory: 128Mi 
              limits: 
                cpu: 250m 
                memory: 256Mi 
            ports: 
            - containerPort: 80 
            env: 
            - name: REDIS 
              value: "azure-vote-back" 
    --- 
    apiVersion: v1 
    kind: Service 
    metadata: 
      name: azure-vote-front 
    spec: 
      type: LoadBalancer 
      ports: 
      - port: 80 
      selector: 
        app: azure-vote-front

Distribuire l'applicazione usando il comando kubectl apply e specificare il nome del file YAML:

kubectl apply -f azure-vote.yaml --kubeconfig .\\aks-arc-kube-config

L'output di esempio seguente mostra le distribuzioni e i servizi creati correttamente:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

Testare l'applicazione

Durante l'esecuzione dell'applicazione, un servizio Kubernetes espone il front-end dell'applicazione a Internet. Questo processo può richiedere alcuni minuti.

Monitorare lo stato di avanzamento usando il comando kubectl get service con l'argomento --watch .

kubectl get service azure-vote-front --watch --kubeconfig .\aks-arc-kube-config

L'output EXTERNAL-IP per il servizio azure-vote-front inizialmente viene visualizzato come in sospeso.

NAME             TYPE         CLUSTER-IP EXTERNAL-IP PORT(S)      AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending>   80:30572/TCP 6s

Quando l'indirizzo EXTERNAL-IP passa dall'indirizzo IP in sospeso a un indirizzo IP pubblico effettivo, usare CTRL-C per arrestare il processo di controllo kubectl. L'output di esempio seguente mostra un indirizzo IP pubblico valido assegnato al servizio:

azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m

Per visualizzare l'app Azure Vote in azione, aprire un browser Web all'indirizzo IP esterno del servizio.

Eliminare il cluster

Eseguire il az aksarc delete comando per pulire il cluster creato:

az aksarc delete --resource-group $aksclustername --name $resource_group

Passaggi successivi