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 cuenta de Azure, cree una cuenta gratuita antes de comenzar.

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

  • En este artículo se requiere la versión 2.61.0 o posterior 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 identificador de suscripción adecuado en el que se deben facturar los recursos mediante el az account comando .

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

  • 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 siguiente ejemplo de salida se asemeja a la creación exitosa 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, necesitas acceso de escritura en los recursos que estás implementando y acceso para realizar todas las operaciones en el tipo de recurso Microsoft.Resources/deployments. Por ejemplo, para implementar un clúster, necesita permisos Microsoft.NetworkCloud/kubernetesclusters/write y Microsoft.Resources/deployments/*. Para obtener una lista de roles y permisos, consulte Roles integrados de Azure.

  • Necesitas el ID de recurso del clúster de Azure Operator Nexus.

  • Debe crear varias redes según los requisitos específicos de la carga de trabajo 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 varias variables para definir la configuración del clúster. Estas son las variables que debe establecer, junto con algunos valores predeterminados que puede usar para determinadas variables:

Variable Description
UBICACIÓN Región de Azure en la que desea crear el clúster.
GRUPO_DE_RECURSOS Nombre del grupo de recursos de Azure donde desea crear el clúster.
SUBSCRIPTION_ID Identificador de la suscripción de Azure.
UBICACIÓN_PERSONALIZADA Este argumento especifica una ubicación personalizada de la instancia de Nexus.
CSN_ARM_ID El identificador de CSN es el identificador único de la red de servicios en la nube que desea usar.
CNI_ARM_ID El identificador de CNI es el identificador único de la interfaz de red que usará el entorno de ejecución del contenedor.
AAD_ADMIN_GROUP_OBJECT_ID Identificador de objeto del grupo Microsoft Entra que debe tener privilegios de administrador en el clúster.
CLUSTER_NAME El nombre que quiere asignar al clúster de Nexus Kubernetes.
K8S_VERSION La versión de Kubernetes que desea usar.
ADMIN_USERNAME Nombre de usuario del administrador del clúster.
Llave pública SSH (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 la máquina virtual para los nodos del plano de control.
INITIAL_AGENT_POOL_NAME Nombre del grupo de agentes inicial.
RECUENTO_INICIAL_DE_POOL_DE_AGENTES Número de nodos del grupo de agentes inicial.
TAMANO_INICIAL_GRUPO_AGENTES_VM Tamaño de la máquina virtual del grupo de agentes inicial.
POD_CIDR Rango 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 --debug marca al final para proporcionar una salida más detallada con fines de solución de problemas.

Para definir estas variables, use los siguientes comandos set y reemplace los valores de ejemplo por sus 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, aparece 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 todo el clúster de la plataforma, en lugar de limitarse a racks 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 finalmente se agotará el tiempo de espera. Este enfoque de comprobación de capacidad solo tiene sentido si no se especifica una zona específica durante la creación del clúster o del grupo de agentes.

Después de unos minutos, el comando finaliza y devuelve información 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 myNexusK8sCluster clúster en el myResourceGroup grupo de recursos, ejecute el siguiente comando de Azure CLI:

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

Además, para obtener una lista de nombres de los grupos de agentes asociados con el 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 Nexus Kubernetes 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 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, vea Conectar a un clúster de Kubernetes del Nexus del operador de Azure.

Nota:

Al crear un clúster de Nexus Kubernetes, 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, debe 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 los kubeconfig necesarios para comunicarse con el clúster desde cualquier lugar, incluso fuera del firewall que lo rodea.

  1. Establezca CLUSTER_NAME, RESOURCE_GROUP y SUBSCRIPTION_ID variables.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Consulta el grupo de recursos administrado con az y almacena 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 permite conectarse al servidor de API de Kubernetes para el clúster de 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 que contiene la lista de todos los nodos.

Nota:

Si ve el mensaje de error "No se pudo publicar el token de acceso al proxy de cliente, error al conectarse a MSI", es posible que deba realizar una az login para volver a autenticar con Azure.

Adición de 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 az networkcloud kubernetescluster agentpool create comando . En el ejemplo siguiente 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}"

Después de unos minutos, el comando finaliza y devuelve información 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 Nexus Kubernetes.

El siguiente ejemplo de salida se parece a la creación exitosa del conjunto 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 sea necesario, elimine el grupo de recursos. Se eliminan el grupo de recursos y todos los recursos del grupo de recursos.

Use el comando az group delete para quitar el grupo de recursos, el clúster de Kubernetes y todos los recursos relacionados, excepto los recursos de red de Operator Nexus.

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

Pasos siguientes

Ahora puede implementar los CNF directamente a través de la conexión de clúster o a través de Azure Operator Service Manager.