Compartir a través de


Inicio rápido: Creación de un clúster de Kubernetes de Azure Nexus mediante la CLI de Azure

  • Implemente un clúster de Kubernetes de Azure Nexus mediante la CLI de Azure.

Antes de empezar

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

  • Instale la versión más reciente de las extensiones necesarias de la CLI de Azure.

  • En este artículo se necesita la versión 2.61.0, o versiones posteriores, de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

  • Si tiene varias suscripciones de Azure, seleccione el id. de suscripción adecuado en el que se deben facturar los recursos con el comando az account.

  • Consulte la tabla SKU de máquina virtual en la sección de referencia para ver la lista de SKU de máquina virtual admitidas.

  • Consulte las versiones admitidas de Kubernetes para obtener la lista de versiones de Kubernetes admitidas.

  • Cree un grupo de recursos con el comando az group create. Un grupo de recursos de Azure es un grupo lógico en el que se implementan y administran recursos de Azure. Cuando crea un grupo de recursos, se le pide que especifique una ubicación. Esta ubicación es la ubicación de almacenamiento de los metadatos del grupo de recursos y donde se ejecutan los recursos en Azure si no se especifica otra región durante la creación de recursos. En el ejemplo siguiente, se crea un grupo de recursos denominado myResourceGroup en la ubicación eastus.

    az group create --name myResourceGroup --location eastus
    

    El ejemplo de salida siguiente es similar a la creación correcta del grupo de recursos:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  • Para implementar un archivo de Bicep o una plantilla de ARM, se necesita acceso de escritura en los recursos que implementa y acceso a todas las operaciones del tipo de recurso Microsoft.Resources/deployments. Por ejemplo, para implementar un clúster, necesita permisos Microsoft.NetworkCloud/kubernetesclusters/write and Microsoft.Resources/deployments/*. Para obtener una lista de roles y permisos, consulte Roles integrados de Azure.

  • Necesita el id. de recurso custom location del clúster de Operator Nexus de Azure.

  • Debe crear varias redes según sus requisitos de carga de trabajo específicos y es esencial tener las direcciones IP adecuadas disponibles para las cargas de trabajo. Para garantizar una implementación fluida, es aconsejable consultar a los equipos de soporte técnico pertinentes para obtener ayuda.

  • En esta guía rápida se presupone un conocimiento básico de los conceptos de Kubernetes. Para más información, consulte Conceptos básicos de Kubernetes de Azure Kubernetes Service (AKS).

Creación de un clúster de Kubernetes de Azure Nexus

En el ejemplo siguiente, se crea un clúster denominado myNexusK8sCluster en el grupo de recursos myResourceGroup en la ubicación eastus.

Antes de ejecutar los comandos, debe establecer múltiples variables para definir la configuración del clúster. Estas son las variables que necesita establecer, junto con algunos valores predeterminados que puede usar para determinadas variables:

Variable Descripción
LOCATION La región de Azure en la que quiere crear el clúster.
RESOURCE_GROUP Nombre del grupo de recursos de Azure donde desea crear el clúster.
SUBSCRIPTION_ID Id. de la suscripción de Azure.
CUSTOM_LOCATION Este argumento especifica una ubicación personalizada de la instancia de Nexus.
CSN_ARM_ID El id. de CSN es el identificador único de la red de servicios en la nube que desea usar.
CNI_ARM_ID El id. de CNI es el identificador único de la interfaz de red que va a usar el entorno de ejecución del contenedor.
AAD_ADMIN_GROUP_OBJECT_ID El id. de objeto del grupo de Microsoft Entra que debe tener privilegios de administrador en el clúster.
CLUSTER_NAME El nombre que quiere asignar al clúster de Kubernetes de Nexus.
K8S_VERSION Versión de Kubernetes que quiere usar.
ADMIN_USERNAME Nombre de usuario del administrador del clúster.
SSH_PUBLIC_KEY Clave pública SSH que se usa para la comunicación segura con el clúster.
CONTROL_PLANE_COUNT Número de nodos del plano de control para el clúster.
CONTROL_PLANE_VM_SIZE Tamaño de máquina virtual de los nodos del plano de control.
INITIAL_AGENT_POOL_NAME Nombre del grupo de agentes inicial.
INITIAL_AGENT_POOL_COUNT Número de nodos en el grupo de agentes inicial.
INITIAL_AGENT_POOL_VM_SIZE Tamaño de la máquina virtual del grupo de agentes inicial.
POD_CIDR Intervalo de red para los pods de Kubernetes en el clúster, en notación CIDR.
SERVICE_CIDR Intervalo de red para los servicios de Kubernetes en el clúster, en notación CIDR.
DNS_SERVICE_IP Dirección IP del servicio DNS de Kubernetes.

Una vez que haya definido estas variables, puede ejecutar el comando de la CLI de Azure para crear el clúster. Agregue la marca --debug al final para proporcionar resultados más detallados con fines de solución de problemas.

Para definir estas variables, use los siguientes comandos set y reemplace los valores de ejemplo por los valores preferidos. También puede usar los valores predeterminados para algunas de las variables, como se muestra en el ejemplo siguiente:

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

Es esencial reemplazar los marcadores de posición para CUSTOM_LOCATION, CSN_ARM_ID, CNI_ARM_ID y AAD_ADMIN_GROUP_OBJECT_ID por los valores reales antes de ejecutar estos comandos.

Después de definir estas variables, puede crear el clúster de Kubernetes ejecutando el siguiente comando de la CLI de 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}"

Si no hay suficiente capacidad para implementar nodos de clúster solicitados, aparecerá un mensaje de error. Sin embargo, este mensaje no proporciona detalles sobre la capacidad disponible. Indica que la creación del clúster no puede continuar debido a una capacidad insuficiente.

Nota:

El cálculo de la capacidad tiene en cuenta toda la agrupación de plataformas, en lugar de limitarse a bastidores individuales. Por lo tanto, si se crea un grupo de agentes en una zona (donde un bastidor equivale a una zona) con capacidad insuficiente, pero otra zona tiene suficiente capacidad, la creación del clúster continúa, pero su tiempo de espera se acabará agotando. Este enfoque con respecto a la comprobación de la capacidad solo tiene sentido si no se especifica una zona específica durante la creación del clúster o grupo de agentes.

Transcurridos unos minutos, el comando se completa y devuelve información en formato JSON sobre el clúster. Para obtener opciones más avanzadas, consulte Inicio rápido: implementación de un clúster de Kubernetes de Azure Nexus mediante Bicep.

Revisión de los recursos implementados

Una vez finalizada la implementación, puede ver los recursos mediante la CLI o Azure Portal.

Para ver los detalles del clúster myNexusK8sCluster en el grupo de recursos myResourceGroup, ejecute el siguiente comando de la CLI de Azure:

az networkcloud kubernetescluster show \
  --name myNexusK8sCluster \
  --resource-group myResourceGroup

Además, para obtener una lista de nombres de grupo de agentes asociados al clúster myNexusK8sCluster en el grupo de recursos myResourceGroup, puede usar el siguiente comando de la CLI de Azure.

az networkcloud kubernetescluster agentpool list \
  --kubernetes-cluster-name myNexusK8sCluster \
  --resource-group myResourceGroup \
  --output table

Conectarse al clúster

Ahora que el clúster de Kubernetes de Nexus se ha creado correctamente y conectado a Azure Arc, puede conectarse fácilmente a él mediante la característica de conexión del clúster. La conexión de clúster le permite acceder y administrar el clúster de forma segura desde cualquier lugar, lo que facilita el desarrollo interactivo, la depuración y las tareas de administración del clúster.

Para obtener información más detallada sobre las opciones disponibles, consulte Conexión a un clúster de Kubernetes del operador de Azure.

Nota:

Al crear un clúster de Kubernetes de Nexus, Nexus crea automáticamente un grupo de recursos administrado dedicado a almacenar los recursos del clúster. Dentro de este grupo, se establece el recurso de clúster conectado a Arc.

Para acceder al clúster, es necesario configurar la conexión del clúster kubeconfig. Después de iniciar sesión en la CLI de Azure con la entidad Microsoft Entra pertinente, puede obtener el kubeconfig necesario para comunicarse con el clúster desde cualquier lugar, incluso fuera del firewall que lo rodea.

  1. Configure las variables CLUSTER_NAME, RESOURCE_GROUP y SUBSCRIPTION_ID.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Consulte el grupo de recursos administrados con az y almacénelo en 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. El siguiente comando inicia un proxy connectedk8s que le permite conectarse al servidor de la API de Kubernetes para el clúster Nexus Kubernetes especificado.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Use kubectl para enviar solicitudes al clúster:

    kubectl get pods -A
    

    Ahora debería ver una respuesta del clúster con la lista de todos los nodos.

Nota

Si aparece el mensaje de error " o se pudo enviar el token de acceso al proxy cliente. No se pudo conectar a MSI", es posible que tenga que realizar un az login para volver a autenticarse con Azure.

Agregar un grupo de agentes

El clúster creado en el paso anterior tiene un grupo de nodo único. Vamos a agregar un segundo grupo de agentes mediante el comando az networkcloud kubernetescluster agentpool create. En el siguiente ejemplo, se crea un grupo de agentes denominado myNexusK8sCluster-nodepool-2:

También puede usar los valores predeterminados para algunas de las variables, como se muestra en el ejemplo siguiente:

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"

Después de definir estas variables, puede agregar un grupo de agentes ejecutando el siguiente comando de la CLI de 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}"

Transcurridos unos minutos, el comando se completa y devuelve información en formato JSON sobre el grupo de agentes. Para obtener opciones más avanzadas, consulte Inicio rápido: implementación de un clúster de Kubernetes de Azure Nexus mediante Bicep.

Nota

Puede agregar varios grupos de agentes durante la creación inicial del propio clúster mediante las configuraciones iniciales del grupo de agentes. Sin embargo, si desea agregar grupos de agentes después de la creación inicial, puede usar el comando anterior para crear grupos de agentes adicionales para el clúster de Kubernetes de Nexus.

El ejemplo de salida siguiente es similar a la creación correcta del grupo de agentes.

$ 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

Limpieza de recursos

Cuando ya no necesite el grupo de recursos, elimínelo. Se eliminan el grupo de recursos y todos los recursos del grupo de recursos.

Use el comando az group delete para eliminar el grupo de recursos, el clúster de Kubernetes y todos los recursos relacionados, a excepción de los recursos de red de Operator Nexus.

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

Pasos siguientes

Ahora puede implementar las CNF directamente desde la conexión de clúster o con Azure Operator Service Manager.