Démarrage rapide : découvrir comment créer un cluster Azure Nexus Kubernetes en tirant parti d’Azure CLI
- Déployer un cluster Azure Nexus Kubernetes en utilisant Azure CLI.
Avant de commencer
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.
Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
Installez la dernière version des extensions Azure CLI nécessaires.
Cet article nécessite la version 2.49.0 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.
Si vous avez plusieurs abonnements Azure, sélectionnez l’ID d’abonnement approprié dans lequel les ressources doivent être facturées avec la commande
az account
.Reportez-vous à la table SKU des machines virtuelles dans la section référence pour obtenir la liste des références SKU de machine virtuelle prises en charge.
Consultez les versions de Kubernetes prises en charge pour obtenir la liste des versions de Kubernetes prises en charge.
Créez un groupe de ressources avec la commande
az group create
. Un groupe de ressources Azure est un groupe logique dans lequel des ressources Azure sont déployées et gérées. Lorsque vous créez un groupe de ressources, vous êtes invité à spécifier un emplacement. Cet emplacement est l'emplacement de stockage des métadonnées de votre groupe de ressources et l'endroit où vos ressources s'exécutent dans Azure si vous ne spécifiez pas une autre région lors de la création de la ressource. L’exemple suivant crée un groupe de ressources nommé myResourceGroup à l’emplacement eastus.az group create --name myResourceGroup --location eastus
L’exemple de sortie suivant montre la création réussie du groupe de ressources :
{ "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup", "location": "eastus", "managedBy": null, "name": "myResourceGroup", "properties": { "provisioningState": "Succeeded" }, "tags": null }
Pour déployer un fichier Bicep ou un modèle ARM, vous devez disposer d’un accès en écriture aux ressources que vous déployez et un accès à toutes les opérations sur le type de ressource Microsoft.Resources/deployments. Par exemple, pour le déploiement d’un cluster, vous avez besoin des autorisations Microsoft.NetworkCloud/kubernetesclusters/write et Microsoft.Resources/deployments/*. Pour obtenir la liste des rôles et autorisations, consultez Rôles intégrés Azure.
Vous devez avoir l’ID de ressource
custom location
de votre cluster Azure Operator Nexus.Vous devez créer différents réseaux en fonction de vos besoins de charge de travail spécifiques. Il est également indispensable de disposer des adresses IP appropriées pour vos charges de travail. Pour veiller à une implémentation fluide, il est recommandé de consulter les équipes de support pertinentes pour obtenir de l’aide.
Ce guide de démarrage rapide suppose une compréhension élémentaire des concepts liés à Kubernetes. Pour plus d’informations, consultez Concepts de base de Kubernetes pour AKS (Azure Kubernetes Service).
Créer un cluster Azure Nexus Kubernetes
L’exemple suivant crée un cluster nommé myNexusK8sCluster dans le groupe de ressources myResourceGroup de l’emplacement eastus.
Avant l’exécution des commandes, vous devez définir plusieurs variables pour définir la configuration de votre cluster. Voici les variables que vous devez définir, ainsi que certaines valeurs par défaut que vous pouvez utiliser pour certaines variables :
Variable | Description |
---|---|
LOCATION | Région Azure où vous souhaitez créer votre cluster. |
RESOURCE_GROUP | Nom du groupe de ressources Azure où vous souhaitez créer le cluster. |
SUBSCRIPTION_ID | ID de votre abonnement Azure. |
CUSTOM_LOCATION | Cet argument spécifie un emplacement personnalisé de l’instance Nexus. |
CSN_ARM_ID | L’ID CSN est l’identificateur unique du réseau de services cloud que vous souhaitez utiliser. |
CNI_ARM_ID | L’ID CNI est l’identificateur unique de l’interface réseau à utiliser par le runtime de conteneur. |
AAD_ADMIN_GROUP_OBJECT_ID | ID d’objet du groupe Microsoft Entra qui doit disposer de privilèges d’administrateur sur le cluster. |
CLUSTER_NAME | Nom que vous souhaitez donner à votre cluster Nexus Kubernetes. |
K8S_VERSION | Version de Kubernetes que vous souhaitez utiliser. |
ADMIN_USERNAME | Nom d’utilisateur de l’administrateur de cluster. |
SSH_PUBLIC_KEY | Clé publique SSH utilisée pour sécuriser la communication avec le cluster. |
CONTROL_PLANE_COUNT | Nombre de nœuds du plan de contrôle pour le cluster. |
CONTROL_PLANE_VM_SIZE | Type de machine virtuelle pour les nœuds du plan de contrôle. |
INITIAL_AGENT_POOL_NAME | Nom du pool d’agents initial. |
INITIAL_AGENT_POOL_COUNT | Nombre de nœuds dans le pool d’agents initial. |
INITIAL_AGENT_POOL_VM_SIZE | Taille de la machine virtuelle pour le pool d’agents initial. |
POD_CIDR | Plage réseau pour les pods Kubernetes dans le cluster, en notation CIDR. |
SERVICE_CIDR | Plage réseau pour les services Kubernetes dans le cluster, en notation CIDR. |
DNS_SERVICE_IP | Adresse IP du service DNS Kubernetes. |
Une fois ces variables définies, vous pouvez exécuter la commande Azure CLI pour créer le cluster. Ajoutez l’indicateur --debug
à la fin pour fournir une sortie plus détaillée à des fins de résolution des problèmes.
Pour définir ces variables, utilisez les commandes set suivantes et remplacez les exemples de valeurs par vos valeurs préférées. Vous pouvez également utiliser les valeurs par défaut pour certaines variables, comme illustré dans l’exemple suivant :
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"
Important
Il est indispensable de remplacer les espaces réservés pour CUSTOM_LOCATION, CSN_ARM_ID, CNI_ARM_ID et AAD_ADMIN_GROUP_OBJECT_ID par vos valeurs réelles avant d’exécuter ces commandes.
Après avoir défini ces variables, vous pouvez créer le cluster Kubernetes en exécutant la commande Azure CLI suivante :
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}"
S’il n’y a pas suffisamment de capacité pour déployer les nœuds de cluster demandés, un message d’erreur s’affiche. Toutefois, ce message ne fournit aucun détail sur la capacité disponible. Il indique que la création du cluster ne peut pas se poursuivre en raison d’une capacité insuffisante.
Remarque
Le calcul de capacité prend en compte l’ensemble du cluster de plateforme, au lieu d’être limité aux racks individuels. Par conséquent, si un pool d’agents est créé dans une zone (où un rack correspond à une zone) qui a une capacité insuffisante, mais qu’une autre zone a suffisamment de capacité, la création du cluster se poursuit, mais finit par expirer. Cette approche de la vérification de la capacité est intéressante seulement si aucune zone spécifique n’est spécifiée pendant la création du cluster ou du pool d’agents.
Au bout de quelques minutes, la commande se termine et retourne des informations sur le cluster. Pour obtenir des options plus avancées, consultez Démarrage rapide : déployer un cluster Azure Nexus Kubernetes en utilisant Bicep.
Vérifier les ressources déployées
Une fois le déploiement terminé, vous pouvez afficher les ressources en tirant parti de l’interface CLI ou du Portail Azure.
Pour afficher les détails du cluster myNexusK8sCluster
dans le groupe de ressources myResourceGroup
, exécutez la commande Azure CLI suivante :
az networkcloud kubernetescluster show \
--name myNexusK8sCluster \
--resource-group myResourceGroup
En outre, pour obtenir la liste des noms de pool d’agents associés au cluster myNexusK8sCluster
dans le groupe de ressources myResourceGroup
, vous pouvez utiliser la commande Azure CLI suivante.
az networkcloud kubernetescluster agentpool list \
--kubernetes-cluster-name myNexusK8sCluster \
--resource-group myResourceGroup \
--output table
Se connecter au cluster
Maintenant que le cluster Nexus Kubernetes a été correctement créé et connecté à Azure Arc, vous pouvez facilement vous y connecter en utilisant la fonctionnalité de connexion au cluster. La connexion au cluster vous permet d’accéder et de gérer en toute sécurité votre cluster en tout lieu, ce qui le rend pratique pour des tâches interactives de développement, de débogage et d’administration de cluster.
Pour plus d’informations sur les options disponibles, consultez Se connecter à un cluster Kubernetes Nexus de l’opérateur Azure.
Remarque
Lorsque vous créez un cluster Kubernetes Nexus, Nexus crée automatiquement un groupe de ressources managé dédié au stockage des ressources de cluster. Au sein de ce groupe, la ressource de cluster connectée à Arc est établie.
Pour accéder à votre cluster, vous devez configurer le paramètre kubeconfig
de connexion au cluster. Après la connexion à Azure CLI avec l’entité Microsoft Entra appropriée, vous pouvez obtenir le paramètre kubeconfig
nécessaire pour communiquer avec le cluster n’importe où, même en dehors du pare-feu qui l’entoure.
Définissez les variables
CLUSTER_NAME
,RESOURCE_GROUP
etSUBSCRIPTION_ID
.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Interroger un groupe de ressources managé avec
az
, puis stocker dansMANAGED_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)
La commande suivante démarre un proxy connectedk8s qui vous permet de vous connecter au serveur d’API Kubernetes du cluster Nexus Kubernetes spécifié.
az connectedk8s proxy -n $CLUSTER_NAME -g $MANAGED_RESOURCE_GROUP &
Utilisez
kubectl
pour envoyer les requêtes au cluster :kubectl get pods -A
Une réponse du cluster contenant la liste de tous les nœuds doit maintenant s’afficher.
Notes
Si le message d’erreur « Nous n’avons pas pu publier le jeton d’accès dans le proxy client. Nous n’avons pas pu nous connecter à MSI » s’affiche, vous devrez peut-être effectuer une opération az login
pour vous authentifier de nouveau auprès d’Azure.
Ajouter un pool d’agents
Le cluster créé à l’étape précédente dispose d’un pool de nœuds unique. Ajoutons un deuxième pool de nœuds en utilisant la commande az networkcloud kubernetescluster agentpool create
. L’exemple suivant permet de créer un pool d’agents nommé myNexusK8sCluster-nodepool-2
:
Vous pouvez également utiliser les valeurs par défaut pour certaines variables, comme illustré dans l’exemple suivant :
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"
Après avoir défini ces variables, vous pouvez ajouter un pool d’agents en exécutant la commande Azure CLI suivante :
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}"
Au bout de quelques minutes, la commande se termine et retourne des informations sur le pool d’agents. Pour obtenir des options plus avancées, consultez Démarrage rapide : déployer un cluster Azure Nexus Kubernetes en utilisant Bicep.
Notes
Vous pouvez ajouter plusieurs pools d’agents lors de la création initiale de votre cluster lui-même en tirant parti des configurations initiales du pool d’agents. Toutefois, si vous souhaitez ajouter des pools d’agents après la création initiale, vous pouvez utiliser la commande ci-dessus pour créer des pools d’agents supplémentaires pour votre cluster Nexus Kubernetes.
L’exemple de sortie suivant montre la création réussie du pool d’agents.
$ 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
Nettoyer les ressources
Lorsqu’il n’est plus nécessaire, supprimez le groupe de ressources. Le groupe de ressources et toutes les ressources du groupe de ressources sont supprimés.
Utilisez l’applet de commande az group delete pour supprimer le groupe de ressources, le cluster Kubernetes et toutes les ressources associées, à l’exception des ressources réseau Operator Nexus.
az group delete --name myResourceGroup --yes --no-wait
Étapes suivantes
Vous pouvez désormais déployer les CNF directement via la connexion au cluster ou via Azure Operator Service Manager.