Uso de Azure Kubernetes Service en Azure Stack Hub con la CLI

Esta es una guía para empezar a usar el servicio Azure Kubernetes Service (AKS) en Azure Stack Hub. En este artículo se describe el conjunto principal de escenarios para familiarizarse con AKS en Azure Stack Hub. La funcionalidad disponible en Azure Stack Hub es un subconjunto de lo que está disponible en Azure global.

En las secciones siguientes:

  1. Completará los requisitos previos para usar AKS en Azure Stack Hub.
  2. Completará las operaciones de ciclo de vida de un clúster de AKS mediante la CLI de Azure y el portal de usuario de Azure Stack Hub.

Instalación de la CLI de Azure

Tendrá que instalar la CLI de Azure con compatibilidad con AKS para su máquina. Prepare una máquina Linux limpia o una máquina Windows para instalar la versión preliminar de la CLI de Azure con compatibilidad con AKS. Asegúrese de que la máquina no tiene la CLI de Azure instalada para evitar conflictos con la versión preliminar de la CLI de Azure que instalará a continuación. En la mayoría de las instrucciones siguientes se dar por supuesto que se usa una máquina virtual Linux, pero puede encontrar los pasos equivalentes en Windows en la documentación del producto.

No actualice la CLI de Azure después de instalar la CLI de Azure con compatibilidad con AKS. Si actualiza, se reemplazará por la versión lista para producción que carece de compatibilidad con AKS.

Para una máquina Ubuntu, siga las instrucciones de Instalación de la CLI de Azure en Linux.

Después de haber instalado la CLI de Azure con compatibilidad con AKS, ejecute el siguiente comando para comprobar que la instalación de la CLI de Azure es correcta:

    az --version

Esta es la salida de una máquina Linux:

salida de una máquina Linux

la CLI de Azure debe ser 2.28.0 o superior.

Conexión a Azure Stack Hub

  1. Conéctese al punto conexión de Azure Stack Hub. Debe usar la CLI de Azure para establecer el entorno de Azure Stack Hub específico al que se conecta. Puede encontrar las instrucciones en Conectarse a Azure Stack Hub

  2. Registre el entorno para que la CLI de Azure pueda conectarse al punto de conexión de Resource Manager de Azure Stack Hub de su instancia. Actualice las direcciones URL del siguiente fragmento de código y ejecute el siguiente comando:

    az cloud register \
        -n aks-preview-test \
        --endpoint-resource-manager "https://management.redmond.xbx.nxn.microsoft.com" \
        --suffix-storage-endpoint "redmond.xbx.nxn.microsoft.com" \
        --suffix-keyvault-dns ".vault.redmond.xbx.nxn.microsoft.com"
    
  3. Establezca el entorno activo.

    az cloud set -n aks-preview-test
    
  4. Actualización de la configuración del entorno.

    az cloud update --profile 2020-09-01-hybrid
    
  5. Conéctese al entorno.

    az login -u 'user@contoso.onmicrosoft.com' -p 'xxxxxxx' --tenant 'contoso.onmicrosoft.com'
    

    Nota

    Si desencadena un error de comprobación de certificado, puede que el certificado usado para el punto de conexión de Azure Resource Manager no sea de confianza para la máquina cliente. Si es así, debe exportar el certificado usado en los puntos de conexión de Azure Stack Hub y confiar en él. Puede encontrar las instrucciones necesarias en Exportación del certificado raíz de la entidad de certificación de Azure Stack Hub.

    En concreto, para máquinas Linux, consulte: identificador de Microsoft Entra en Linux.

  6. Establezca la suscripción en la sesión de la CLI de Azure predeterminada con:

    az account set --subscription <subscription-id>
    
  7. Registre el proveedor de recursos de Azure Kubernetes Service. Enumera los proveedores de recursos disponibles en la suscripción.

    az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table
    

    La salida debe ser similar a la siguiente:

    La salida debe ser similar a la siguiente

  8. Anote el proveedor de recursos Microsoft.ContainerService y, a continuación, registre el proveedor:

    az provider register --namespace Microsoft.ContainerService
    
  9. Vuelva a ejecutar el paso siete para comprobar el estado de registro del proveedor de recursos. El registro puede tardar varios minutos en terminar.

Una vez completados esos pasos previos, puede probar los escenarios siguientes.

Creación de un clúster de AKS

Puede encontrar las instrucciones de Azure global en Implementación de un clúster de Azure Kubernetes Service mediante la CLI de Azure. Las instrucciones aquí reflejan las limitaciones del uso de AKS en Azure Stack Hub. Puede usar la CLI de Azure para crear un clúster de AKS para contenedores de Linux o Windows.

  1. Cree un grupo de recursos:

    az group create --name myResourceGroup --location <Azure Stack Hub location>
    
  2. Asegúrese de que tiene un identificador de entidad de servicio listo con permiso de colaborador en la suscripción para crear clústeres en ella.

    1. Para crear una entidad de servicio (SPN) mediante Microsoft Entra identificador, siga estas instrucciones.
    2. Para crear un SPN mediante Active Directory Federated Services (AD FS), siga estas instrucciones.
    3. Para asignar el rol "Colaborador" al SPN, consulte instrucciones. Asegúrese de seleccionar el rol "Colaborador".
  3. Cree un clúster de AKS de tres nodos de agente. Proporcione valores a los parámetros siguientes; se proporcionan ejemplos. Ejecute:

    az aks create \
    --resource-group myResourceGroup \
    --name myakscluster \
    --dns-name-prefix myakscluster \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --location <Azure Stack Hub location> \
    --kubernetes-version 1.20.7
    

    La salida de esta operación estará en formato JSON y contendrá una especificación del clúster, incluida la clave pública ssh generada, el nombre de dominio completo (FQDN) usado en el clúster, entre otras propiedades. Tenga en cuenta que el comando generará un texto como este que resalta la ubicación de la clave privada: SSH key files '/home/azureuser/.ssh/id_rsa' y '/home/azureuser/.ssh/id_rsa.pub' se han generado en \~/.ssh para permitir el acceso SSH a la máquina virtual. Almacene estas claves en una ubicación segura para usarlas en caso de que sea necesario conectarse mediante SSH a las máquinas virtuales, como ocurre al solucionar problemas.

  4. Ahora puede continuar para repetir las pruebas Escalado, implementación de una aplicación y Eliminación.

Conectarse al clúster

  1. Para administrar un clúster de Kubernetes, usará kubectl, el cliente de línea de comandos de Kubernetes. Para instalar kubectl localmente, use el comando az aks install-cli (puede que tenga que usar "sudo" al principio para tener permiso para instalarlo):

    az aks install-cli
    
  2. Para configurar kubectl para conectarse al clúster de Kubernetes, use el comando az aks get-credentials. Con este comando se descargan las credenciales y se configura la CLI de Kubernetes para usarlas.

    az aks get-credentials --resource-group myResourceGroup --name myakscluster --admin
    
  3. Para comprobar la conexión al clúster, use el comando kubectl get para devolver una lista de los nodos del clúster.

    kubectl get nodes
    

comprobación de la conexión al clúster

Escalar clúster

Otra tarea de administración de clústeres es escalar un clúster. Puede escalar un clúster en cualquier momento después de crearlo mediante el comando az aks scale. Para escalar el clúster de los tres nodos iniciales a 4, ejecute:

    az aks scale --resource-group myResourceGroup --name myakscluster --node-count 4

Cuando el clúster se haya escalado correctamente, la salida contendrá un "agentPoolProfiles" similar al ejemplo siguiente:

    "agentPoolProfiles": [
        {
        "availabilityZones": null,
        "count": 4,
        "enableAutoScaling": null,
        "enableNodePublicIp": false,
        "maxCount": null,
        "maxPods": 110,
        "minCount": null,
        "mode": "System",
        "name": "mynodepool",
        "nodeLabels": {},
        "nodeTaints": null,
        "orchestratorVersion": "1.20.7",
        "osDiskSizeGb": 100,
        "osType": "Linux",
        "provisioningState": "Succeeded",
        "scaleSetEvictionPolicy": null,
        "scaleSetPriority": null,
        "spotMaxPrice": null,
        "tags": null,
        "type": "VirtualMachineScaleSets",
        "vmSize": " Standard_DS2_v2",
        "vnetSubnetId": null
        }
    ]

Eliminación de clúster

Una vez realizadas las operaciones anteriores, puede continuar con la eliminación del clúster. Ejecute:

az aks delete --name myakscluster --resource-group myResourceGroup

Creación de un clúster de AKS con una red virtual personalizada

La creación de un clúster que se va a implementar en una red proporcionada por el usuario es un escenario común. El planeamiento de la configuración de red requiere cierta preparación. Además, tenga en cuenta que con AKS el complemento de red predeterminado es Azure CNI, no Kubenet como es el caso del motor de AKS. Con Azure CNI todos los pod obtiene una dirección IP de la subred y se puede acceder a ella directamente (sin necesidad de una tabla de enrutamiento, como es el caso de Kubenet). Estas direcciones IP deben ser únicas en el espacio de red y deben planificarse. El siguiente artículo le guía por el proceso de planificación de la implementación de la red virtual personalizada. Puede encontrar varias configuraciones de red que funcionen según sus necesidades y probarlas. Para una prueba inicial, los dos pasos siguientes le mostrarán el proceso básico:

  1. Siga las instrucciones de este artículo para planificar la implementación mediante Azure CNI. Por ejemplo, podría usar el portal para crear una red virtual denominada "myAKSVnet" con el intervalo IP 10.0.0.0/8 con la subred "myAKSSubnet" y el intervalo IP 10.240.0.0/16 en un grupo de recursos denominado "myTest-rg". A continuación, use el paso siguiente para la creación del clúster.

    az network vnet create \
        --resource-group myTest-rg \
        --name myAKSVnet \
        --address-prefixes 10.0.0.0/8 \
        --subnet-name myAKSSubnet \
        --subnet-prefix 10.240.0.0/16    
    
  2. Tenga en cuenta que el comando de clúster proporcionado en el artículo de Azure funciona bien al implementarlo en Azure, para implementarlo en Azure Stack Hub debe especificar parámetros adicionales como en el ejemplo siguiente. El identificador de subred de la red virtual debe ser como "/subscriptions/dfdfdff-5dfdf-dfdf-dfdf-dfdfdfdfdfd/resourceGroups/myTest-rg/providers/Microsoft.Network/virtualNetworks/myAKSVnet/subnets/myAKSSubnet":

    az aks create  \ 
    --resource-group myTest-rg \
    --name aksvnet \
    --dns-name-prefix  aksvnet \
    --nodepool-name mynodepool \
    --admin-username azureuser \
    --service-principal xvxvxvxvx-ffff-ffff-xvxvxvx-8xbxbxbx8  \
    --client-secret dccbcbcbcbcbcbcbcbbcbcbcbcbcbcbc-LNX \
    --node-count 3 \
    --generate-ssh-keys \
    --load-balancer-sku basic \
    --vm-set-type VirtualMachineScaleSets \
    --network-plugin azure \
    --vnet-subnet-id '<subnet-resource-id>' \
    --skip-subnet-role-assignment \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.0.0.10 \
    --location redmond
    
  3. Siga las instrucciones de la sección "Conectar al clúster" para conectarse al clúster de Kubernetes e implementar las aplicaciones.

Comprobación de coherencia

Comprobación de coherencia entre Azure y Azure Stack Hub

  1. Seleccione una combinación de comandos de los probados anteriormente, de la sección "Referencia de comandos" siguiente o de sus propios scripts.
  2. Aplíquelos a Azure y, posteriormente, a Azure Stack Hub. Tenga en cuenta las discrepancias no esperadas y proporcione comentarios.

Pasos siguientes

Más información sobre AKS en Azure Stack Hub