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.
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
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.
Configure las variables
CLUSTER_NAME
,RESOURCE_GROUP
ySUBSCRIPTION_ID
.CLUSTER_NAME="myNexusK8sCluster" RESOURCE_GROUP="myResourceGroup" SUBSCRIPTION_ID=<set the correct subscription_id>
Consulte el grupo de recursos administrados con
az
y almacénelo enMANAGED_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)
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 &
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.