Partager via


Démarrage rapide : Créer un cluster Kubernetes Azure Nexus à l’aide d’Azure CLI

  • Déployez un cluster Kubernetes Azure Nexus à l’aide d’Azure CLI.

Avant de commencer

Si vous n’avez pas de compte Azure, créez un compte gratuit avant de commencer.

  • Installez la dernière version des extensions Azure CLI nécessaires.

  • Cet article nécessite la version 2.61.0 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la dernière version 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 à l’aide de la az account commande.

  • Reportez-vous à la table des références SKU de machine virtuelle dans la section référence pour obtenir la liste des références SKU de machine virtuelle prises en charge.

  • Reportez-vous aux versions de Kubernetes prises en charge pour obtenir la liste des versions de Kubernetes prises en charge.

  • Créez un groupe de ressources à l’aide de 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 ressemble à 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 déployer 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 avez besoin de l’ID de ressource custom location de votre cluster Nexus d’opérateur Azure.

  • Vous devez créer différents réseaux en fonction de vos besoins en charge de travail spécifiques, et il est essentiel d’avoir les adresses IP appropriées disponibles pour vos charges de travail. Pour garantir une implémentation fluide, il est conseillé 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 Kubernetes Azure Nexus

L’exemple suivant crée un cluster nommé myNexusK8sCluster dans le groupe de ressources myResourceGroup à l’emplacement eastus .

Avant d’exécuter les 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 Descriptif
EMPLACEMENT Région Azure dans laquelle vous souhaitez créer votre cluster.
GROUPE_DE_RESSOURCES Nom du groupe de ressources Azure dans lequel vous souhaitez créer le cluster.
SUBSCRIPTION_ID ID de votre abonnement Azure.
EMPLACEMENT_PERSONNALISÉ 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.
NOM_DU_CLUSTER Nom que vous souhaitez donner à votre cluster Kubernetes Nexus.
K8S_VERSION Version de Kubernetes que vous souhaitez utiliser.
ADMIN_USERNAME Nom d’utilisateur de l’administrateur du cluster.
SSH_PUBLIC_KEY Clé publique SSH utilisée pour la communication sécurisée avec le cluster.
CONTROL_PLANE_COUNT Nombre de nœuds de plan de contrôle pour le cluster.
CONTROL_PLANE_VM_SIZE Taille de la machine virtuelle pour les nœuds du plan de contrôle.
NOM_INITIAL_DU_POOL_D'AGENTS Nom du pool d’agents initial.
NOMBRE_INITIAL_POOL_AGENT 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 La 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 que vous avez défini ces variables, 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 des 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 essentiel 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.

Note

Le calcul de capacité prend en compte l’ensemble du cluster de plateforme, plutôt que d’être limité à des racks individuels. Par conséquent, si un pool d’agents est créé dans une zone (où un rack est égal à une zone) avec une capacité insuffisante, mais qu’une autre zone a suffisamment de capacité, la création du cluster se poursuit mais expirera. Cette approche de la vérification de la capacité n’est logique que si une zone spécifique n’est pas spécifiée lors de la création du cluster ou du pool d’agents.

Après 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 Kubernetes Azure Nexus à l’aide de Bicep.

Passer en revue les ressources déployées

Une fois le déploiement terminé, vous pouvez afficher les ressources à l’aide de l’interface CLI ou du portail Azure.

Pour afficher les détails du cluster dans le myNexusK8sCluster groupe de myResourceGroup ressources, 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 dans le myNexusK8sClustermyResourceGroup groupe de ressources, 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 à l’aide de la fonctionnalité de connexion au cluster. La connexion au cluster vous permet d’accéder et de gérer votre cluster en toute sécurité à partir de n’importe où, ce qui facilite le développement interactif, le débogage et les tâches d’administration de cluster.

Pour plus d’informations sur les options disponibles, consultez Se connecter à un cluster Kubernetes Nexus d’opérateur Azure.

Note

Lorsque vous créez un cluster Nexus Kubernetes, 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 la connexion kubeconfigau cluster. Après vous être connecté à Azure CLI avec l’entité Microsoft Entra appropriée, vous pouvez obtenir les kubeconfig informations nécessaires pour communiquer avec le cluster n’importe où, même en dehors du pare-feu qui l'englobe.

  1. Définissez CLUSTER_NAMEet RESOURCE_GROUPSUBSCRIPTION_ID variables.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Interroger un groupe de ressources managé avec az et stocker dans MANAGED_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)
    
  3. La commande suivante démarre un proxy connectedk8s qui vous permet de vous connecter au serveur d’API Kubernetes pour le cluster Kubernetes Nexus spécifié.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Permet kubectl d’envoyer des demandes au cluster :

    kubectl get pods -A
    

    Vous devez maintenant voir une réponse du cluster contenant la liste de tous les nœuds.

Note

Si le message d’erreur « Échec de la publication du jeton d’accès au proxy client Échec de la connexion à MSI » s’affiche, vous devrez peut-être effectuer une az login nouvelle authentification 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 d’agents à l’aide de la az networkcloud kubernetescluster agentpool create commande. L’exemple suivant crée un pool d’agents nommé myNexusK8sCluster-nodepool-2:

Vous pouvez également utiliser les valeurs par défaut pour certaines des 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}"

Après 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 Kubernetes Azure Nexus à l’aide de Bicep.

Note

Vous pouvez ajouter plusieurs pools d’agents lors de la création initiale de votre cluster lui-même à l’aide 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 ressemble à 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

Quand vous n’en avez plus besoin, supprimez le groupe de ressources. Le groupe de ressources et toutes les ressources du groupe de ressources sont supprimées.

Utilisez la 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 Nexus de l’opérateur.

az group delete --name myResourceGroup --yes --no-wait

Étapes suivantes

Vous pouvez maintenant déployer les cnfs directement via la connexion au cluster ou via Azure Operator Service Manager.