Avvio rapido: Creare un cluster Kubernetes Nexus di Azure usando l'interfaccia della riga di comando di Azure
- Distribuire un cluster Kubernetes Nexus di Azure usando l'interfaccia della riga di comando di Azure.
Operazioni preliminari
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Avvio rapido su Bash in Azure Cloud Shell.
Se si preferisce eseguire i comandi di riferimento dell'interfaccia della riga di comando in locale, installare l'interfaccia della riga di comando di Azure. Per l'esecuzione in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se si usa un'installazione locale, accedere all'interfaccia della riga di comando di Azure con il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere tramite l'interfaccia della riga di comando di Azure.
Quando richiesto, al primo utilizzo installare l'estensione dell'interfaccia della riga di comando di Azure. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
Installare la versione più recente delle estensioni dell'interfaccia della riga di comando di Azure necessarie.
Questo articolo richiede la versione 2.61.0 o successiva dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.
Se si hanno più sottoscrizioni di Azure, selezionare l'ID sottoscrizione appropriato in cui devono essere fatturate le risorse, usando il comando
az account
.Per l'elenco degli SKU di VM supportati, vedere la tabella degli SKU della VM nella sezione di riferimento.
Per l'elenco delle versioni di Kubernetes supportate, vedere le versioni di Kubernetes supportate.
Creare un gruppo di risorse usando il comando
az group create
. Un gruppo di risorse di Azure è un gruppo logico in cui le risorse di Azure vengono distribuite e gestite. Quando si crea un gruppo di risorse, viene richiesto di specificare una posizione. Questa posizione è la posizione di archiviazione dei metadati del gruppo di risorse e dove le risorse vengono eseguite in Azure se non si specifica un'altra regione durante la creazione della risorsa. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.az group create --name myResourceGroup --location eastus
L'esempio di output seguente è simile alla corretta creazione del gruppo di risorse:
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null }
Per distribuire un file Bicep o un modello di ARM, è necessario l'accesso in scrittura alle risorse distribuite e l'accesso per tutte le operazioni sul tipo di risorsa Microsoft.Resources/deployments. Ad esempio, per distribuire un cluster, sono necessarie autorizzazioni Microsoft.NetworkCloud/kubernetesclusters/write e Microsoft.Resources/deployments/*. Per un elenco dei ruoli e delle autorizzazioni, vedere Ruoli predefiniti di Azure.
È necessario l'ID risorsa
custom location
del cluster Operatore Nexus di Azure.È necessario creare diverse reti in base ai requisiti specifici del carico di lavoro ed è essenziale avere gli indirizzi IP appropriati disponibili per i carichi di lavoro. Per garantire un'implementazione uniforme, è consigliabile consultare i team di supporto pertinenti per assistenza.
Questa guida introduttiva presuppone una comprensione di base dei concetti relativi a Kubernetes. Per altre informazioni, vedere Concetti di base relativi a Kubernetes per il servizio Azure Kubernetes.
Creare un cluster Kubernetes Nexus di Azure
L'esempio seguente crea un cluster denominato myNexusK8sCluster nel gruppo di risorse myResourceGroup nella posizione eastus.
Prima di eseguire i comandi, è necessario impostare diverse variabili per definire la configurazione per il cluster. Ecco le variabili da impostare, insieme ad alcuni valori predefiniti che è possibile usare per determinate variabili:
Variabile | Descrizione |
---|---|
LOCATION | Area di Azure in cui si desidera creare il cluster. |
RESOURCE_GROUP | Nome del gruppo di risorse di Azure in cui si desidera creare il cluster. |
SUBSCRIPTION_ID | ID della sottoscrizione di Azure. |
CUSTOM_LOCATION | Questo argomento specifica una posizione personalizzata dell'istanza Nexus. |
CSN_ARM_ID | L'ID CSN è l'identificatore univoco per la rete di servizi cloud che si desidera usare. |
CNI_ARM_ID | L'ID CNI è l'identificatore univoco dell'interfaccia di rete da usare dal runtime del contenitore. |
AAD_ADMIN_GROUP_OBJECT_ID | ID oggetto del gruppo Microsoft Entra che deve avere privilegi di amministratore nel cluster. |
CLUSTER_NAME | Nome da assegnare al cluster Kubernetes Nexus. |
K8S_VERSION | Versione di Kubernetes che si desidera usare. |
ADMIN_USERNAME | Nome utente per l'amministratore del cluster. |
SSH_PUBLIC_KEY | Chiave pubblica SSH usata per la comunicazione sicura con il cluster. |
CONTROL_PLANE_COUNT | Numero di nodi del piano di controllo per il cluster. |
CONTROL_PLANE_VM_SIZE | Le dimensioni della macchina virtuale per i nodi del piano di controllo. |
INITIAL_AGENT_POOL_NAME | Nome del pool di agenti iniziale. |
INITIAL_AGENT_POOL_COUNT | Numero di nodi nel pool di agenti iniziale. |
INITIAL_AGENT_POOL_VM_SIZE | Dimensioni della macchina virtuale per il pool di agenti iniziale. |
POD_CIDR | Intervallo di rete per i pod Kubernetes nel cluster, in notazione CIDR. |
SERVICE_CIDR | Intervallo di rete per i servizi Kubernetes nel cluster, in notazione CIDR. |
DNS_SERVICE_IP | L'indirizzo IP del servizio DNS di Kubernetes. |
Dopo aver definito queste variabili, è possibile eseguire il comando dell'interfaccia della riga di comando di Azure per creare il cluster. Aggiungere il flag --debug
alla fine per fornire un output più dettagliato a scopo di risoluzione dei problemi.
Per definire queste variabili, usare i seguenti comandi e sostituire i valori di esempio con i valori preferiti. È anche possibile usare i valori predefiniti per alcune delle variabili, come illustrato nell'esempio seguente:
RESOURCE_GROUP="myResourceGroup"
SUBSCRIPTION_ID="<Azure subscription ID>"
LOCATION="$(az group show --name $RESOURCE_GROUP --query location --subscription $SUBSCRIPTION_ID -o tsv)"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CSN_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
CNI_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
AAD_ADMIN_GROUP_OBJECT_ID="00000000-0000-0000-0000-000000000000"
CLUSTER_NAME="myNexusK8sCluster"
K8S_VERSION="v1.24.9"
ADMIN_USERNAME="azureuser"
SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
AGENT_POOL_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_COUNT="1"
CONTROL_PLANE_VM_SIZE="NC_G6_28_v1"
INITIAL_AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-1"
INITIAL_AGENT_POOL_COUNT="1"
INITIAL_AGENT_POOL_VM_SIZE="NC_P10_56_v1"
POD_CIDR="10.244.0.0/16"
SERVICE_CIDR="10.96.0.0/16"
DNS_SERVICE_IP="10.96.0.10"
Importante
È essenziale sostituire i segnaposto per CUSTOM_LOCATION, CSN_ARM_ID, CNI_ARM_ID e AAD_ADMIN_GROUP_OBJECT_ID con i valori effettivi prima di eseguire questi comandi.
Dopo aver definito queste variabili, è possibile creare il cluster Kubernetes eseguendo il comando seguente dell'interfaccia della riga di comando di Azure:
az networkcloud kubernetescluster create \
--name "${CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--subscription "${SUBSCRIPTION_ID}" \
--extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
--location "${LOCATION}" \
--kubernetes-version "${K8S_VERSION}" \
--aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
--admin-username "${ADMIN_USERNAME}" \
--ssh-key-values "${SSH_PUBLIC_KEY}" \
--control-plane-node-configuration \
count="${CONTROL_PLANE_COUNT}" \
vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
--initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${AGENT_POOL_SSH_PUBLIC_KEY}']}]" \
--network-configuration \
cloud-services-network-id="${CSN_ARM_ID}" \
cni-network-id="${CNI_ARM_ID}" \
pod-cidrs="[${POD_CIDR}]" \
service-cidrs="[${SERVICE_CIDR}]" \
dns-service-ip="${DNS_SERVICE_IP}"
Se non è disponibile una capacità sufficiente per distribuire i nodi del cluster richiesti, viene visualizzato un messaggio di errore. Tuttavia, questo messaggio non fornisce dettagli sulla capacità disponibile. Indica che la creazione del cluster non può continuare a causa di capacità insufficiente.
Nota
Il calcolo della capacità prende in considerazione l'intero cluster della piattaforma, anziché essere limitato ai singoli rack. Pertanto, se un pool di agenti viene creato in una zona (in cui un rack è uguale a una zona) con capacità insufficiente, ma un'altra zona ha una capacità sufficiente, la creazione del cluster continua ma alla fine si verifica un timeout. Questo approccio al controllo della capacità ha senso solo se non viene specificata una zona specifica durante la creazione del cluster o del pool di agenti.
Il comando viene completato dopo pochi minuti e vengono restituite informazioni sul cluster. Per altre opzioni avanzate, vedere Avvio rapido: Distribuire un cluster Kubernetes Nexus di Azure con Bicep.
Esaminare le risorse distribuite
Al termine della distribuzione, è possibile visualizzare le risorse usando l'interfaccia della riga di comando o il portale di Azure.
Per visualizzare i dettagli del cluster myNexusK8sCluster
nel gruppo di risorse myResourceGroup
, eseguire il comando dell'interfaccia della riga di comando di Azure seguente:
az networkcloud kubernetescluster show \
--name myNexusK8sCluster \
--resource-group myResourceGroup
Inoltre, per ottenere un elenco di nomi di pool di agenti associati al cluster myNexusK8sCluster
nel gruppo di risorse myResourceGroup
, è possibile usare il comando dell'interfaccia della riga di comando di Azure seguente.
az networkcloud kubernetescluster agentpool list \
--kubernetes-cluster-name myNexusK8sCluster \
--resource-group myResourceGroup \
--output table
Stabilire la connessione al cluster
Ora che il cluster Kubernetes Nexus è stato creato e connesso ad Azure Arc, è possibile connettersi facilmente usando la funzionalità di connessione del cluster. La connessione cluster consente di accedere e gestire in modo sicuro il cluster da qualsiasi posizione, semplificando lo sviluppo interattivo, il debug e le attività di amministrazione del cluster.
Per informazioni più dettagliate sulle opzioni disponibili, vedere Connettersi a un cluster Kubernetes Nexus dell'operatore di Azure.
Nota
Quando si crea un cluster Kubernetes Nexus, Nexus crea automaticamente un gruppo di risorse gestito dedicato all'archiviazione delle risorse del cluster, all'interno di questo gruppo, viene stabilita la risorsa cluster connessa Arc.
Per accedere al cluster, è necessario configurare la connessione del cluster kubeconfig
. Dopo aver eseguito l'accesso all'interfaccia della riga di comando di Azure con l'entità Microsoft Entra pertinente, è possibile ottenere il kubeconfig
necessario per comunicare con il cluster da qualsiasi posizione, anche all'esterno del firewall che lo circonda.
Impostare le variabili
CLUSTER_NAME
,RESOURCE_GROUP
eSUBSCRIPTION_ID
.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Eseguire query sul gruppo di risorse gestite con
az
e archiviare inMANAGED_RESOURCE_GROUP
az account set -s $SUBSCRIPTION_ID MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
Il comando seguente avvia un proxy connectedk8s che consente di connettersi al server API Kubernetes per il cluster Kubernetes Nexus specificato.
az connectedk8s proxy -n $CLUSTER_NAME -g $MANAGED_RESOURCE_GROUP &
Usare
kubectl
per inviare richieste al cluster:kubectl get pods -A
Verrà visualizzata una risposta dal cluster contenente l'elenco di tutti i nodi.
Nota
Se viene visualizzato il messaggio di errore "Failed to post access token to client proxyFailed to connect to MSI", potrebbe essere necessario eseguire un az login
per eseguire di nuovo l'autenticazione con Azure.
Aggiungi un pool di agenti
Il cluster creato nel passaggio precedente ha un singolo pool di nodi. Aggiungere un secondo pool di agenti usando il comando az networkcloud kubernetescluster agentpool create
. Nell'esempio seguente viene creato un pool di agenti denominato myNexusK8sCluster-nodepool-2
:
È anche possibile usare i valori predefiniti per alcune delle variabili, come illustrato nell'esempio seguente:
RESOURCE_GROUP="myResourceGroup"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CLUSTER_NAME="myNexusK8sCluster"
AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-2"
AGENT_POOL_VM_SIZE="NC_P10_56_v1"
AGENT_POOL_COUNT="1"
AGENT_POOL_MODE="User"
Dopo aver definito queste variabili, è possibile aggiungere un pool di agenti eseguendo il comando seguente dell'interfaccia della riga di comando di Azure:
az networkcloud kubernetescluster agentpool create \
--name "${AGENT_POOL_NAME}" \
--kubernetes-cluster-name "${CLUSTER_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--subscription "${SUBSCRIPTION_ID}" \
--extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
--count "${AGENT_POOL_COUNT}" \
--mode "${AGENT_POOL_MODE}" \
--vm-sku-name "${AGENT_POOL_VM_SIZE}"
Il comando viene completato dopo pochi minuti e vengono restituite informazioni sul pool di agenti. Per altre opzioni avanzate, vedere Avvio rapido: Distribuire un cluster Kubernetes Nexus di Azure con Bicep.
Nota
È possibile aggiungere diversi pool di agenti durante la creazione iniziale del cluster stesso usando le configurazioni iniziali del pool di agenti. Tuttavia, se si desidera aggiungere pool di agenti dopo la creazione iniziale, è possibile usare il comando precedente per creare pool di agenti aggiuntivi per il cluster Kubernetes Nexus.
L'esempio di output seguente è simile alla corretta creazione del pool di agenti.
$ az networkcloud kubernetescluster agentpool list --kubernetes-cluster-name myNexusK8sCluster --resource-group myResourceGroup --output table
This command is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Count Location Mode Name ProvisioningState ResourceGroup VmSkuName
------- ---------- ------ ---------------------------- ------------------- --------------- -----------
1 eastus System myNexusK8sCluster-nodepool-1 Succeeded myResourceGroup NC_P10_56_v1
1 eastus User myNexusK8sCluster-nodepool-2 Succeeded myResourceGroup NC_P10_56_v1
Pulire le risorse
Quando non è più necessario, eliminare il gruppo di risorse. Il gruppo di risorse e tutte le risorse nel gruppo di risorse vengono eliminati.
Usare il comando az group delete per rimuovere il gruppo di risorse, il cluster Kubernetes e tutte le risorse correlate, ad eccezione delle risorse di rete Operator Nexus.
az group delete --name myResourceGroup --yes --no-wait
Passaggi successivi
È ora possibile distribuire le funzioni di rete direttamente tramite la connessione del cluster o tramite Azure Operator Service Manager.