Compartir a través de


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

Este artículo es una guía para empezar a usar el servicio Azure Kubernetes Service (AKS) en Azure Stack Hub. 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, encontrará:

  1. Complete los requisitos previos para usar AKS en Azure Stack Hub.

  2. Complete las operaciones de ciclo de vida de un clúster de AKS mediante la CLI de Azure y el portal de usuarios de Azure Stack Hub.

Instalación de la CLI de Azure

Debe instalar la CLI de Azure con la compatibilidad de AKS para su máquina. Prepare una máquina limpia Linux 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 instalada la CLI de Azure para evitar conflictos con la versión preliminar de la CLI de Azure que instale a continuación. En la mayoría de las instrucciones siguientes se supone que 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 realiza la actualización, se reemplaza por la versión lista para producción que carece de soporte técnico de AKS.

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

Después de instalar la CLI de Azure con compatibilidad con AKS, compruebe que la instalación es correcta mediante la ejecución del siguiente comando de la CLI de Azure:

    az --version

Esta es una salida de ejemplo de una máquina Linux:

salida de una máquina Linux

La CLI de Azure debe ser 2.28.0 o posterior.

Conexión a Azure Stack Hub

  1. Conéctese al punto de conexión de Azure Stack Hub. Debe usar la CLI de Azure para establecer el entorno específico de Azure Stack Hub al que se conecta. Puede encontrar las instrucciones en Conexión 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 para su instancia. Actualice las direcciones URL en el 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. Actualice 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 del certificado , es posible 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 instrucciones en Exportación del certificado raíz de ca de Azure Stack Hub.

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

  6. Use el siguiente comando para establecer la suscripción en la sesión de la CLI de Azure como valor predeterminado:

    az account set --subscription <subscription-id>
    
  7. Registre el proveedor de recursos de Azure Kubernetes Service. Enumere 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 tener un aspecto similar al 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 7 para comprobar el estado de registro del proveedor de recursos. El registro puede tardar varios minutos en completarse.

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

Creación de un clúster de AKS

Puede encontrar las instrucciones globales de Azure 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 un principal de servicio (SPN) mediante Microsoft Entra ID, siga estas instrucciones.
    2. Para crear un SPN mediante Servicios federados de Active Directory (AD FS), siga estas instrucciones.
    3. Para asignar el rol "Colaborador" al SPN, consulte las instrucciones. Asegúrese de seleccionar el rol "Colaborador".
  3. Cree un clúster de AKS de tres nodos de agente. Proporcione valores para los parámetros siguientes, se proporcionan ejemplos. ¡Corre!

    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 está en formato JSON y contiene 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. Observe que el comando genera texto similar al siguiente, resaltando la ubicación de la clave privada: SSH key files '/home/azureuser/.ssh/id_rsa' y '/home/azureuser/.ssh/id_rsa.pub' se generan en \~/.ssh para permitir el acceso SSH a la máquina virtual. Almacene estas claves en una ubicación segura para su uso en caso de que sea necesario conectarse mediante ssh a las máquinas virtuales, tal como sucede cuando se solucionan problemas.

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

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 az aks install-cli comando (es posible 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 az aks get-credentials comando . 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 az aks scale comando . 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 escala correctamente, la salida contiene 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 del clúster

Una vez realizadas las operaciones anteriores, puede eliminar el clúster. ¡Corre!

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. Planear la configuración de red toma cierta preparación. Además, tenga en cuenta que con AKS, el complemento de red predeterminado es Azure CNI, no Kubenet como sucede con el motor de AKS.

Con Azure CNI, cada pod obtiene una dirección IP de la subred y se puede acceder directamente (sin necesidad de una tabla de enrutamiento, como sucede con Kubenet). Estas direcciones IP deben ser únicas en el espacio de red y deben planearse.

En el siguiente artículo se explica el proceso de planeación de la implementación de red virtual personalizada. Puede encontrar varias configuraciones de red que funcionen para sus necesidades y probarlas. Para una prueba inicial, los dos pasos siguientes muestran el proceso básico:

  1. Siga las instrucciones de este artículo para planear la implementación mediante Azure CNI. Por ejemplo, puede 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 implementar en Azure, para implementar en Azure Stack Hub, debe especificar parámetros adicionales como en el ejemplo siguiente. El identificador de subred de red virtual debe tener un aspecto similar a '/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 "Conexión 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, en la sección "Referencia de comandos" o en sus propios scripts diarios.

  2. Aplíquelos a Azure y versiones posteriores a Azure Stack Hub. Tenga en cuenta las discrepancias no esperadas y proporcione comentarios.

Pasos siguientes