Ejercicio: Implementación de un clúster de Azure Kubernetes Service con Azure CNI
Nota:
Este ejercicio es opcional. Si le interesa completar este ejercicio, deberá crear una suscripción de Azure antes de empezar. Si no tiene una cuenta de Azure o no quiere crear una en este momento, puede leer las instrucciones para comprender la información que se está presentando.
En este ejercicio, implementará redes virtuales, subredes e identidades y, a continuación, implementará un clúster de Azure Kubernetes Service (AKS) mediante el complemento Azure Container Networking Interface (CNI).
Se ha acercado al departamento de TI de la empresa y ha proporcionado la información recopilada sobre los requisitos de la aplicación y el dimensionamiento de las máquinas virtuales (VM) y la red. El departamento de TI le ha proporcionado algunos intervalos de direcciones de red que puede usar para el clúster.
En la tabla siguiente se enumeran los requisitos y las direcciones IP proporcionadas por el departamento de TI:
Elemento | Descripción | Direcciones IP |
---|---|---|
AKS subnet | Direcciones IP para los nodos y pods del clúster. Se necesitan 248 direcciones IP utilizables. | 10.150.20.0/24 |
Subred de servicio de Kubernetes | Direcciones IP usadas dentro del clúster para los servicios de Kubernetes. No debe estar en conflicto con otras redes virtuales o redes locales. | 10.240.0.0/24 |
Dirección IP del servicio del sistema de nombres de dominio (DNS) | Deben estar en la subred del servicio de Kubernetes, pero no puede ser la primera dirección IP del intervalo disponible. | 10.240.0.10 |
- Para la subred de AKS, ha determinado que necesita 248 direcciones IP utilizables. El departamento de TI ha asignado la red 10.150.20.0/24, que proporciona 251 direcciones IP utilizables después de tener en cuenta las cinco que Azure reserva en cada subred.
- La subred del servicio Kubernetes es un grupo de direcciones IP que no se usa en ninguna otra red virtual de Azure y no entra en conflicto con ningún intervalo de red local. Este intervalo de direcciones solo se usa dentro del clúster. El departamento de TI le ha indicado que debe usar 10.240.0.0/24.
- La dirección IP del servicio DNS es una única dirección IP dentro del intervalo de direcciones de la subred de servicio de Kubernetes, pero no puede ser la primera dirección IP de ese intervalo. Ha decidido usar 10.240.0.10 como dirección IP de DNS.
Creación de la red virtual y la subred
Para este ejercicio, creará una red virtual y una subred. En un entorno real, es posible que tenga un equipo en el departamento de TI responsable de administrar las redes y que pueda crear estos recursos de forma automática.
Inicie Azure Cloud Shell.
Si aún no ha iniciado sesión en Azure, inicie sesión en su cuenta de Azure con el comando
az login
.az login
Elija una región de Azure cercana, por ejemplo eastus. Almacene el valor en una variable de entorno para poder usarlo en el resto del ejercicio.
AKSLocation=eastus
Cree un grupo de recursos, AKSLearn, para almacenar los recursos de este ejercicio mediante el comando
az group create
.az group create --location $AKSLocation --name AKSLearn
Cree una red virtual, AKSVirtualNetwork, con el comando
az network vnet create
.az network vnet create \ --name AKSVirtualNetwork \ --resource-group AKSLearn \ --address-prefixes 10.150.0.0/16 \ --location $AKSLocation
Cree una subred, AKSSubnet, con el
az network vnet subnet create
comando y especifique el intervalo de direcciones proporcionado por el departamento de TI.az network vnet subnet create \ --resource-group AKSLearn \ --vnet-name AKSVirtualNetwork \ --name AKSSubnet \ --address-prefixes 10.150.20.0/24
Creación de una identidad administrada de Azure
Debe crear una identidad administrada de Azure que AKS usará para acceder a los recursos de la suscripción de Azure. Los dos comandos siguientes crean una identidad administrada de Azure y, a continuación, almacenan su valor de identificador único en una variable de entorno para su uso posterior.
Cree una identidad administrada de Azure, AKSIdentity, mediante el comando
az identity create
.az identity create \ --name AKSIdentity \ --resource-group AKSLearn
Obtenga el id. de la identidad administrada mediante el comando
az identity show
y almacénelo en una variable de entorno, identityId, para usarlo en comandos posteriores.identityId=$(az identity show \ --name AKSIdentity \ --resource-group AKSLearn \ --query id \ --output tsv)
Creación de un clúster de AKS
Obtenga el valor del id. de recurso de la subred mediante el comando
az network vnet subnet list
y almacénelo en una variable de entorno, subnetId, para usarlo en comandos posteriores.subnetId=$(az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[?name=='AKSSubnet'].id" \ --output tsv)
Cree un clúster de AKS, AKSCluster, con el comando
az aks create
.az aks create \ --name AKSCluster \ --resource-group AKSLearn \ --location $AKSLocation \ --network-plugin azure \ --vnet-subnet-id $subnetId \ --service-cidr 10.240.0.0/24 \ --dns-service-ip 10.240.0.10 \ --generate-ssh-keys \ --enable-managed-identity \ --assign-identity $identityId \ --node-vm-size Standard_F8s_v2 \ --node-count 3
En la tabla siguiente se describen los parámetros usados en el comando
az aks create
:Parámetro Descripción --name
Nombre del clúster que se está creando. --resource-group
Grupo de recursos en el que se debe crear el clúster. --location
Región de Azure en la que se debe crear el clúster. --network-plugin
Especifica qué complemento de red se va a usar. --vnet-subnet-id
Especifica el id. de recurso de la subred que se va a usar. --service-cidr
Especifica el intervalo de direcciones del servicio de Kubernetes que se va a usar. --dns-service-ip
Especifica la dirección IP DNS que se va a usar. --generate-ssh-keys
Crea un conjunto de claves SSH que se usan para proteger los nodos. --enable-managed-identity
Habilita el uso de la identidad administrada de Azure para acceder a los recursos de la suscripción de Azure. --assign-identity
Especifica el valor de id. de la identidad administrada de Azure que se va a usar. --node-vm-size
Especifica el tamaño de máquina virtual que se va a usar. --node-count
Especifica el número de nodos que se van a crear. Una vez que el clúster se implemente correctamente, compruebe los detalles del grupo de nodos mediante el comando
az aks nodepool list
.az aks nodepool list \ --cluster-name AKSCluster \ --resource-group AKSLearn \ --output table
El resultado debería ser similar al ejemplo siguiente:
Name OsType VmSize Count MaxPods ProvisioningState Mode --------- -------- --------------- ------- --------- ------------------- ------ nodepool1 Linux Standard_F8s_v2 3 30 Succeeded System
En la salida, puede ver que hay tres nodos de tipo Standard_F8s_v2 y un valor MaxPods de 30, y que el modo del grupo de nodos es
System
.
Confirmación del uso de direcciones IP para el clúster
Mediante el comando
az network vnet subnet list
, compruebe cuántas direcciones IP usa el clúster.az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[].ipConfigurations.length(@)" \ --output table
Este comando usa una cadena de consulta JMESPath para determinar qué cantidad de
ipConfigurations
se han definido en la subred. la salida máxima debe ser 93. Ha implementado tres nodos para empezar, por lo que cada nodo tiene una dirección IP. Ha usar el valor predeterminado de 30 para el número máximo de pods, por lo que cada nodo tiene 30 direcciones IP asignadas previamente para que los pods las usen. El número total de direcciones IP asignadas hasta ahora es3 x nodes + (30 pods * 3 nodes) = 93
. Sin embargo, algunas direcciones están reservadas por lo que la salida podría ser menor.
Adición de un nodo adicional al clúster
Veamos cómo se ve afectado el uso de la dirección IP al escalar el clúster y agregar un nodo más.
Escale verticalmente el clúster y agregue un nodo más mediante el comando
az aks scale
.az aks scale \ --name AKSCluster \ --resource-group AKSLearn \ --node-count=4
Una vez que se complete correctamente el comando, confirme los nuevos detalles del grupo de nodos mediante el comando
az aks nodepool list
.az aks nodepool list \ --cluster-name AKSCluster \ --resource-group AKSLearn \ --output table
La salida debe ser similar a la del ejemplo siguiente, en la que se muestra que ahora tiene cuatro nodos.
Name OsType VmSize Count MaxPods ProvisioningState Mode --------- -------- --------------- ------- --------- ------------------- ------ nodepool1 Linux Standard_F8s_v2 4 30 Succeeded System
Mediante el comando
az network vnet subnet list
, compruebe cuántas direcciones IP usa ahora el clúster.az network vnet subnet list \ --vnet-name AKSVirtualNetwork \ --resource-group AKSLearn \ --query "[].ipConfigurations.length(@)" \ --output table
En esta ocasión, el resultado máximo es 124, 31 más que la última vez. Es una dirección IP más para el nuevo nodo, más otras 30 direcciones IP asignadas previamente para los pods que se ejecutan en ese nodo. Sin embargo, algunas direcciones están reservadas por lo que la salida podría ser menor.