Configuración de redes de Azure CNI en Azure Kubernetes Service (AKS)Configure Azure CNI networking in Azure Kubernetes Service (AKS)

De forma predeterminada, los clústeres de AKS usan kubenet, y una red virtual y una subred se crean automáticamente.By default, AKS clusters use kubenet, and a virtual network and subnet are created for you. Con kubenet, los nodos obtienen una dirección IP de una subred de la red virtual.With kubenet, nodes get an IP address from a virtual network subnet. Luego, la traducción de direcciones de red (NAT) se configura en los nodos, y los pods reciben una dirección IP "oculta" detrás de la dirección IP del nodo.Network address translation (NAT) is then configured on the nodes, and pods receive an IP address "hidden" behind the node IP. Este enfoque reduce el número de direcciones IP que se deben reservar en el espacio de red para su uso por parte de los pods.This approach reduces the number of IP addresses that you need to reserve in your network space for pods to use.

Con Azure Container Networking Interface (CNI), cada pod obtiene una dirección IP de la subred, y se puede acceder a él directamente.With Azure Container Networking Interface (CNI), every pod gets an IP address from the subnet and can be accessed directly. Estas direcciones IP deben ser únicas en el espacio de red y deben planearse de antemano.These IP addresses must be unique across your network space, and must be planned in advance. Cada nodo tiene un parámetro de configuración para el número máximo de pods que admite.Each node has a configuration parameter for the maximum number of pods that it supports. Luego, el número equivalente de direcciones IP por nodo se reserva por adelantado para ese nodo.The equivalent number of IP addresses per node are then reserved up front for that node. Este enfoque requiere más planificación y a menudo lleva al agotamiento de direcciones IP o a la necesidad de volver a generar los clústeres en una subred mayor, a medida que crecen las exigencias de la aplicación.This approach requires more planning, and often leads to IP address exhaustion or the need to rebuild clusters in a larger subnet as your application demands grow.

En este artículo se muestra cómo usar las redes de Azure CNI para crear y usar la subred una red virtual con un clúster de AKS.This article shows you how to use Azure CNI networking to create and use a virtual network subnet for an AKS cluster. Para más información sobre las opciones y consideraciones de red, consulte el artículo sobre los conceptos de red para Kubernetes y AKS.For more information on network options and considerations, see Network concepts for Kubernetes and AKS.

Requisitos previosPrerequisites

  • La red virtual del clúster AKS debe permitir la conectividad saliente de Internet.The virtual network for the AKS cluster must allow outbound internet connectivity.
  • Los clústeres de AKS no pueden usar 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 ni 192.0.2.0/24 para el intervalo de direcciones del servicio de Kubernetes, el intervalo de direcciones de pod, o el intervalo de direcciones de la red virtual del clúster.AKS clusters may not use 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16, or 192.0.2.0/24 for the Kubernetes service address range, pod address range, or cluster virtual network address range.
  • La identidad de clúster que usa el clúster de AKS debe tener como mínimo permisos de Colaborador de la red en la subred de la red virtual.The cluster identity used by the AKS cluster must have at least Network Contributor permissions on the subnet within your virtual network. Si quiere definir un rol personalizado en lugar de usar el rol integrado de colaborador de red, se requieren los permisos siguientes:If you wish to define a custom role instead of using the built-in Network Contributor role, the following permissions are required:
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Network/virtualNetworks/subnets/read
  • La subred asignada al grupo de nodos AKS no puede ser una subred delegada.The subnet assigned to the AKS node pool cannot be a delegated subnet.

Planeamiento de direccionamiento IP del clústerPlan IP addressing for your cluster

Los clústeres configurados con redes de Azure CNI requieren planeamiento adicional.Clusters configured with Azure CNI networking require additional planning. Los tamaños de red virtual y de subred deben ajustarse al número de pods que tiene previsto ejecutar, así como al número de nodos del clúster.The size of your virtual network and its subnet must accommodate the number of pods you plan to run and the number of nodes for the cluster.

Se asignan direcciones IP para los pods y los nodos del clúster desde la subred especificada dentro de la red virtual.IP addresses for the pods and the cluster's nodes are assigned from the specified subnet within the virtual network. Cada nodo se configura con una dirección IP principal.Each node is configured with a primary IP address. De forma predeterminada, Azure CNI configura previamente treinta direcciones IP adicionales que se asignan a los pods programados en el nodo.By default, 30 additional IP addresses are pre-configured by Azure CNI that are assigned to pods scheduled on the node. Cuando se escala horizontalmente el clúster, cada nodo del mismo modo se configura de modo similar con direcciones IP de la subred.When you scale out your cluster, each node is similarly configured with IP addresses from the subnet. También puede ver el número máximo de pods por nodo.You can also view the maximum pods per node.

Importante

El número de direcciones IP necesarias debe incluir consideraciones sobre las operaciones de actualización y escalabilidad.The number of IP addresses required should include considerations for upgrade and scaling operations. Si establece el intervalo de direcciones IP para que solo se admita un número fijo de nodos, no se podrá actualizar o escalar el clúster.If you set the IP address range to only support a fixed number of nodes, you cannot upgrade or scale your cluster.

  • Al actualizar el clúster de AKS, se implementa un nuevo nodo en el clúster.When you upgrade your AKS cluster, a new node is deployed into the cluster. Los servicios y las cargas de trabajo comienzan a ejecutarse en el nuevo nodo y el nodo antiguo se quita del clúster.Services and workloads begin to run on the new node, and an older node is removed from the cluster. Para realizar este proceso de actualización gradual es necesario que haya disponible un bloque adicional de direcciones IP.This rolling upgrade process requires a minimum of one additional block of IP addresses to be available. El recuento de nodos es entonces n + 1.Your node count is then n + 1.

    • Esta consideración es especialmente importante al utilizar grupos de nodos de Windows Server.This consideration is particularly important when you use Windows Server node pools. Los nodos de Windows Server en AKS no aplican automáticamente las actualizaciones de Windows, en su lugar, se realiza una actualización en el grupo de nodos.Windows Server nodes in AKS do not automatically apply Windows Updates, instead you perform an upgrade on the node pool. Esta actualización implementa los nuevos nodos con las revisiones de seguridad y de la imagen de nodo base de Windows Server 2019 más recientes.This upgrade deploys new nodes with the latest Window Server 2019 base node image and security patches. Para más información sobre cómo actualizar un grupo de nodos de Windows Server, consulte el artículo de actualización de un grupo de nodos en AKS.For more information on upgrading a Windows Server node pool, see Upgrade a node pool in AKS.
  • Al escalar un clúster de AKS, se implementa un nuevo nodo en el clúster.When you scale an AKS cluster, a new node is deployed into the cluster. Los servicios y las cargas de trabajo comienzan a ejecutarse en el nuevo nodo.Services and workloads begin to run on the new node. El intervalo de direcciones IP debe tener en cuenta cómo podría escalar verticalmente el número de nodos y los pods que el clúster puede admitir.Your IP address range needs to take into considerations how you may want to scale up the number of nodes and pods your cluster can support. También se debe incluir un nodo adicional para las operaciones de actualización.One additional node for upgrade operations should also be included. El recuento de nodos es entonces n + number-of-additional-scaled-nodes-you-anticipate + 1.Your node count is then n + number-of-additional-scaled-nodes-you-anticipate + 1.

Si espera que los nodos ejecuten el número máximo de pods, y destruye e implementa pods con regularidad, también debe contar con algunas direcciones IP adicionales por nodo.If you expect your nodes to run the maximum number of pods, and regularly destroy and deploy pods, you should also factor in some additional IP addresses per node. Estas direcciones IP adicionales tienen en cuenta que la eliminación de un servicio y la implementación de la dirección IP liberada para un nuevo servicio pueden tardar unos segundos, y adquieren la dirección.These additional IP addresses take into consideration it may take a few seconds for a service to be deleted and the IP address released for a new service to be deployed and acquire the address.

El plan de direcciones IP de un clúster AKS consta de una red virtual, al menos una subred para los nodos y pods, y un intervalo de direcciones del servicio de Kubernetes.The IP address plan for an AKS cluster consists of a virtual network, at least one subnet for nodes and pods, and a Kubernetes service address range.

Intervalo de direcciones / recurso de AzureAddress range / Azure resource Límites y tamañoLimits and sizing
Virtual networkVirtual network El tamaño de Azure Virtual Network puede ser de /8, pero se limita a 65 536 direcciones IP configuradas.The Azure virtual network can be as large as /8, but is limited to 65,536 configured IP addresses. Antes de configurar el espacio de direcciones, tenga en cuenta todos sus requisitos de red, incluida la comunicación con los servicios de otras redes virtuales.Consider all your networking needs, including communicating with services in other virtual networks, before configuring your address space. Por ejemplo, si configura un espacio de direcciones demasiado grande, es posible que surjan problemas de superposición con otros espacios de direcciones dentro de la red.For example, if you configure too large of an address space, you may run into issues with overlapping other address spaces within your network.
SubnetSubnet Debe ser lo suficientemente grande como para dar cabida a los nodos, los pods y a todos los recursos de Kubernetes y de Azure que se pueden aprovisionar en el clúster.Must be large enough to accommodate the nodes, pods, and all Kubernetes and Azure resources that might be provisioned in your cluster. Por ejemplo, si implementa una instancia de Azure Load Balancer interna, sus direcciones IP de front-end se asignan desde la subred del clúster, no las direcciones IP públicas.For example, if you deploy an internal Azure Load Balancer, its front-end IPs are allocated from the cluster subnet, not public IPs. El tamaño de la subred también debe tener en cuenta las operaciones de actualización o las necesidades futuras de escalabilidad.The subnet size should also take into account upgrade operations or future scaling needs.

Para calcular el tamaño mínimo de subred, incluido un nodo adicional para operaciones de actualización: (number of nodes + 1) + ((number of nodes + 1) * maximum pods per node that you configure)To calculate the minimum subnet size including an additional node for upgrade operations: (number of nodes + 1) + ((number of nodes + 1) * maximum pods per node that you configure)

Ejemplo de un clúster de 50 nudos: (51) + (51 * 30 (default)) = 1,581 (/21 o superior)Example for a 50 node cluster: (51) + (51 * 30 (default)) = 1,581 (/21 or larger)

Ejemplo de un clúster de 50 nodos que también incluye aprovisionamiento para escalar verticalmente 10 nodos adicionales: (61) + (61 * 30 (default)) = 1,891 (/21 o superior)Example for a 50 node cluster that also includes provision to scale up an additional 10 nodes: (61) + (61 * 30 (default)) = 1,891 (/21 or larger)

Si no especifica un número máximo de pods por nodo al crear el clúster, el número máximo de pods por nodo se establece en 30.If you don't specify a maximum number of pods per node when you create your cluster, the maximum number of pods per node is set to 30. El número mínimo de direcciones IP requeridas se basa en ese valor.The minimum number of IP addresses required is based on that value. Si se calculan los requisitos mínimos de dirección IP según otro valor máximo distinto, vea cómo configurar el número máximo de pods por nodo para establecer este valor cuando se implementa el clúster.If you calculate your minimum IP address requirements on a different maximum value, see how to configure the maximum number of pods per node to set this value when you deploy your cluster.

Intervalo de direcciones del servicio de KubernetesKubernetes service address range Este intervalo no lo debe usar ningún elemento de red de esta red virtual o que esté conectado a ella.This range should not be used by any network element on or connected to this virtual network. El CIDR de la dirección del servicio debe ser menor que /12.Service address CIDR must be smaller than /12. Puede reutilizar este intervalo en diferentes clústeres de AKS.You can reuse this range across different AKS clusters.
Dirección IP del servicio DNS de KubernetesKubernetes DNS service IP address Dirección IP del intervalo de direcciones del servicio de Kubernetes que se usará en la detección de servicios de clúster.IP address within the Kubernetes service address range that will be used by cluster service discovery. No use la primera dirección IP en el intervalo de direcciones, como .1.Don't use the first IP address in your address range, such as .1. La primera dirección del intervalo de la subred se usa para la dirección kubernetes.default.svc.cluster.local.The first address in your subnet range is used for the kubernetes.default.svc.cluster.local address.
Dirección de puente de DockerDocker bridge address La dirección de red del puente de Docker representa la dirección de red del puente de docker0 predeterminada presente en todas las instalaciones de Docker.The Docker bridge network address represents the default docker0 bridge network address present in all Docker installations. Aunque los pods o los clústeres de AKS no usan el puente de docker0, debe configurar esta dirección para seguir admitiendo escenarios como la compilación de Docker en el clúster de AKS.While docker0 bridge is not used by AKS clusters or the pods themselves, you must set this address to continue to support scenarios such as docker build within the AKS cluster. Es necesario seleccionar un CIDR para la dirección de red del puente de Docker, ya que, de lo contrario, Docker seleccionará automáticamente una subred que podría entrar en conflicto con otros CIDR.It is required to select a CIDR for the Docker bridge network address because otherwise Docker will pick a subnet automatically, which could conflict with other CIDRs. Debe elegir un espacio de direcciones que no entre en conflicto con el resto de los CIDR de las redes, incluidos el CIDR de servicio del clúster y el CIDR del pod.You must pick an address space that does not collide with the rest of the CIDRs on your networks, including the cluster's service CIDR and pod CIDR. El valor predeterminado es 172.17.0.1/16.Default of 172.17.0.1/16. Puede reutilizar este intervalo en diferentes clústeres de AKS.You can reuse this range across different AKS clusters.

Pods máximos por nodoMaximum pods per node

El número máximo de pods por nodo en un clúster de AKS es 250.The maximum number of pods per node in an AKS cluster is 250. El número máximo predeterminado de pods por nodo varía entre las redes de kubenet y de Azure CNI, y el método de implementación del clúster.The default maximum number of pods per node varies between kubenet and Azure CNI networking, and the method of cluster deployment.

Método de implementaciónDeployment method Kubenet predeterminadoKubenet default Azure CNI predeterminadoAzure CNI default Configurable en la implementaciónConfigurable at deployment
Azure CLIAzure CLI 110110 3030 Sí (hasta 250)Yes (up to 250)
Plantilla de Resource ManagerResource Manager template 110110 3030 Sí (hasta 250)Yes (up to 250)
PortalPortal 110110 110 (configurados en la pestaña Grupos de nodos)110 (configured in the Node Pools tab) NoNo

Configurar máximo: nuevos clústeresConfigure maximum - new clusters

Puede configurar el número máximo de pods por nodo solo en tiempo de implementación del clúster o al agregar nuevos grupos de nodos.You're able to configure the maximum number of pods per node at cluster deployment time or as you add new node pools. Si realiza la implementación con la CLI de Azure o con una plantilla de Resource Manager, puede establecer un valor máximo de pods por nodo de hasta 250.If you deploy with the Azure CLI or with a Resource Manager template, you can set the maximum pods per node value as high as 250.

Si no especifica maxPods al crear grupos de nodos nuevos, recibirá un valor predeterminado de 30 para Azure CNI.If you don't specify maxPods when creating new node pools, you receive a default value of 30 for Azure CNI.

Se exige un valor mínimo para los pods máximos por nodo para garantizar el espacio de los pods del sistema críticos para el estado del clúster.A minimum value for maximum pods per node is enforced to guarantee space for system pods critical to cluster health. El valor mínimo que se puede establecer para los pods máximos por nodo es diez si y solo si la configuración de cada grupo de nodos tiene espacio para un mínimo de treinta pods.The minimum value that can be set for maximum pods per node is 10 if and only if the configuration of each node pool has space for a minimum of 30 pods. Por ejemplo, si se establece el número máximo de pods por nodo en el mínimo de diez, cada grupo de nodos individual debe tener un mínimo de tres nodos.For example, setting the maximum pods per node to the minimum of 10 requires each individual node pool to have a minimum of 3 nodes. Este requisito se aplica también a cada nuevo grupo de nodos que se crea, por lo que si se define diez como el número máximo de pods por nodo, cada grupo de nodos que se agregue después debe tener al menos tres nodos.This requirement applies for each new node pool created as well, so if 10 is defined as maximum pods per node each subsequent node pool added must have at least 3 nodes.

RedesNetworking MínimaMinimum MáximaMaximum
CNI de AzureAzure CNI 1010 250250
KubenetKubenet 1010 110110

Nota

El valor mínimo de la tabla anterior lo aplica estrictamente el servicio AKS.The minimum value in the table above is strictly enforced by the AKS service. No se puede establecer un valor de maxPods inferior al mínimo que se muestra; de lo contrario, podría impedirse el inicio del clúster.You can not set a maxPods value lower than the minimum shown as doing so can prevent the cluster from starting.

  • CLI de Azure: especifique el argumento --max-pods cuando implemente un clúster con el comando az aks create.Azure CLI: Specify the --max-pods argument when you deploy a cluster with the az aks create command. El valor máximo es 250.The maximum value is 250.
  • Plantilla de Resource Manager: especifique la propiedad maxPods del objeto ManagedClusterAgentPoolProfile cuando implemente un clúster con una plantilla de Resource Manager.Resource Manager template: Specify the maxPods property in the ManagedClusterAgentPoolProfile object when you deploy a cluster with a Resource Manager template. El valor máximo es 250.The maximum value is 250.
  • Portal de Azure: no puede modificar el número máximo de pods por nodo cuando implemente un clúster con Azure Portal.Azure portal: You can't change the maximum number of pods per node when you deploy a cluster with the Azure portal. Los clústeres de redes de Azure CNI están limitados a 30 pods por nodo cuando se implementan mediante Azure Portal.Azure CNI networking clusters are limited to 30 pods per node when you deploy using the Azure portal.

Configurar máximo: clústeres existentesConfigure maximum - existing clusters

La configuración de maxPod por nodo se puede definir cuando se crea un nuevo grupo de nodos.The maxPod per node setting can be defined when you create a new node pool. Si necesita aumentar el valor de maxPod por nodo en un clúster existente, agregue un nuevo grupo de nodos con el nuevo recuento de maxPod deseado.If you need to increase the maxPod per node setting on an existing cluster, add a new node pool with the new desired maxPod count. Después de migrar los pods al nuevo grupo, elimine el grupo anterior.After migrating your pods to the new pool, delete the older pool. Para eliminar cualquier grupo anterior en un clúster, asegúrese de que está configurando los modos de grupo de nodos tal como se define en el documento de grupos de nodos del sistema.To delete any older pool in a cluster, ensure you are setting node pool modes as defined in the system node pools document.

Parámetros de implementaciónDeployment parameters

Cuando crea un clúster de AKS, los parámetros siguientes son configurables para redes de Azure CNI:When you create an AKS cluster, the following parameters are configurable for Azure CNI networking:

Red virtual: la red virtual en la que desea implementar el clúster de Kubernetes.Virtual network: The virtual network into which you want to deploy the Kubernetes cluster. Si desea crear una red virtual nueva para el clúster, seleccione Crear nueva y siga los pasos descritos en la sección Creación de red virtual.If you want to create a new virtual network for your cluster, select Create new and follow the steps in the Create virtual network section. Para información acerca de límites y cuotas para Azure Virtual Network, vea Límites, cuotas y restricciones de suscripción y servicios de Microsoft Azure.For information about the limits and quotas for an Azure virtual network, see Azure subscription and service limits, quotas, and constraints.

Subred: la subred dentro de la red virtual en la que desea implementar el clúster.Subnet: The subnet within the virtual network where you want to deploy the cluster. Si desea crear una nueva subred en la red virtual para el clúster, seleccione Crear nueva y siga los pasos descritos en la sección Creación de subred.If you want to create a new subnet in the virtual network for your cluster, select Create new and follow the steps in the Create subnet section. Para la conectividad híbrida, el intervalo de direcciones no debe solaparse con ninguna otra red virtual de su entorno.For hybrid connectivity, the address range shouldn't overlap with any other virtual networks in your environment.

Complemento de red de Azure: cuando se usa el complemento de red de Azure, no se puede acceder al servicio Load Balancer interno con "externalTrafficPolicy=Local" desde VM con una dirección IP en clusterCIDR que no pertenezca al clúster de AKS.Azure Network Plugin: When Azure network plugin is used, the internal LoadBalancer service with "externalTrafficPolicy=Local" can't be accessed from VMs with an IP in clusterCIDR that does not belong to AKS cluster.

Intervalo de direcciones de servicio de Kubernetes: es parámetro es el conjunto de direcciones IP virtuales que Kubernetes asigna a servicios internos del clúster.Kubernetes service address range: This parameter is the set of virtual IPs that Kubernetes assigns to internal services in your cluster. Puede usar cualquier intervalo de direcciones privado que cumpla los requisitos siguientes:You can use any private address range that satisfies the following requirements:

  • No debe estar dentro del intervalo de direcciones IP de la red virtual del clúster.Must not be within the virtual network IP address range of your cluster
  • No deben superponerse con ninguna otra red virtual del mismo nivel que la red virtual del clúster.Must not overlap with any other virtual networks with which the cluster virtual network peers
  • No debe superponerse con ninguna dirección IP local.Must not overlap with any on-premises IPs
  • No debe estar dentro de los intervalos 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16 ni 192.0.2.0/24Must not be within the ranges 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16, or 192.0.2.0/24

Aunque es técnicamente posible especificar un intervalo de direcciones de servicio en la misma red virtual que el clúster, no se recomienda.Although it's technically possible to specify a service address range within the same virtual network as your cluster, doing so is not recommended. Puede producirse un comportamiento impredecible si se usan intervalos IP superpuestos.Unpredictable behavior can result if overlapping IP ranges are used. Para más información, consulte la sección P+F de este artículo.For more information, see the FAQ section of this article. Para más información sobre los servicios de Kubernetes, consulte Servicios en la documentación de Kubernetes.For more information on Kubernetes services, see Services in the Kubernetes documentation.

Dirección IP del servicio DNS de Kubernetes: la dirección IP del servicio DNS del clúster.Kubernetes DNS service IP address: The IP address for the cluster's DNS service. Esta dirección debe estar dentro del intervalo de direcciones del servicio Kubernetes.This address must be within the Kubernetes service address range. No use la primera dirección IP en el intervalo de direcciones, como .1.Don't use the first IP address in your address range, such as .1. La primera dirección del intervalo de la subred se usa para la dirección kubernetes.default.svc.cluster.local.The first address in your subnet range is used for the kubernetes.default.svc.cluster.local address.

Dirección del puente de Docker: La dirección de red del puente de Docker representa la dirección de red del puente de docker0 predeterminada presente en todas las instalaciones de Docker.Docker Bridge address: The Docker bridge network address represents the default docker0 bridge network address present in all Docker installations. Aunque los pods o los clústeres de AKS no usan el puente de docker0, debe configurar esta dirección para seguir admitiendo escenarios como la compilación de Docker en el clúster de AKS.While docker0 bridge is not used by AKS clusters or the pods themselves, you must set this address to continue to support scenarios such as docker build within the AKS cluster. Es necesario seleccionar un CIDR para la dirección de red del puente de Docker, ya que, de lo contrario, Docker seleccionará automáticamente una subred que podría entrar en conflicto con otros CIDR.It is required to select a CIDR for the Docker bridge network address because otherwise Docker will pick a subnet automatically which could conflict with other CIDRs. Debe elegir un espacio de direcciones que no entre en conflicto con el resto de los CIDR de las redes, incluidos el CIDR de servicio del clúster y el CIDR del pod.You must pick an address space that does not collide with the rest of the CIDRs on your networks, including the cluster's service CIDR and pod CIDR.

Configuración de redes: CLIConfigure networking - CLI

Al crear un clúster de AKS con la CLI de Azure, también puede configurar redes de Azure CNI.When you create an AKS cluster with the Azure CLI, you can also configure Azure CNI networking. Use los siguientes comandos para crear un nuevo clúster de AKS con las redes de Azure CNI habilitadas.Use the following commands to create a new AKS cluster with Azure CNI networking enabled.

En primer lugar, obtenga el identificador de recursos de subred para la subred existente a la que se unirá el clúster de AKS:First, get the subnet resource ID for the existing subnet into which the AKS cluster will be joined:

$ az network vnet subnet list \
    --resource-group myVnet \
    --vnet-name myVnet \
    --query "[0].id" --output tsv

/subscriptions/<guid>/resourceGroups/myVnet/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/default

Use el comando az aks create con el argumento --network-plugin azure para crear un clúster con redes avanzadas.Use the az aks create command with the --network-plugin azure argument to create a cluster with advanced networking. Actualice el valor --vnet-subnet-id con el identificador de subred recopilado en el paso anterior:Update the --vnet-subnet-id value with the subnet ID collected in the previous step:

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --docker-bridge-address 172.17.0.1/16 \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --generate-ssh-keys

Configuración de redes: portalConfigure networking - portal

La siguiente captura de pantalla de Azure Portal muestra un ejemplo de la configuración de estos valores durante la creación del clúster de AKS:The following screenshot from the Azure portal shows an example of configuring these settings during AKS cluster creation:

![Configuración avanzada de redes en Azure Portal][portal-01-networking-advanced]![Advanced networking configuration in the Azure portal][portal-01-networking-advanced]

Asignación dinámica de direcciones IP y compatibilidad mejorada con subredes (versión preliminar)Dynamic allocation of IPs and enhanced subnet support (preview)

Importante

Las características en versión preliminar de AKS están disponibles como opción de participación y autoservicio.AKS preview features are available on a self-service, opt-in basis. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y la garantía limitada.Previews are provided "as is" and "as available," and they're excluded from the service-level agreements and limited warranty. Las versiones preliminares de AKS reciben cobertura parcial del soporte al cliente en la medida de lo posible.AKS previews are partially covered by customer support on a best-effort basis. Por lo tanto, estas características no están diseñadas para su uso en producción.As such, these features aren't meant for production use. Las características en versión preliminar de AKS no están disponibles en nubes de Azure Government ni Azure China 21Vianet.AKS preview features aren't available in Azure Government or Azure China 21Vianet clouds. Para más información, consulte los siguientes artículos de soporte:For more information, see the following support articles:

Nota

La característica en vista previa (GB) está disponible actualmente en las siguientes regiones:This preview feature is currently available in the following regions:

  • Centro-Oeste de EE. UU.West Central US

Un inconveniente de la CNI tradicional es el agotamiento de las direcciones IP Pod a medida que crece el clúster de AKS, de modo que se vuelve necesario recompilar todo el clúster en una subred más grande.A drawback with the traditional CNI is the exhaustion of pod IP addresses as the AKS cluster grows, resulting in the need to rebuild the entire cluster in a bigger subnet. La nueva funcionalidad de asignación dinámica de direcciones IP de Azure CNI soluciona este problema al asignar direcciones IP de pod de una subred independiente de la subred que hospeda el clúster de AKS.The new dynamic IP allocation capability in Azure CNI solves this problem by allotting pod IPs from a subnet separate from the subnet hosting the AKS cluster. Esto reporta las siguientes ventajas:It offers the following benefits:

  • Mejor uso de IP: las direcciones IP se asignan dinámicamente a los pods de clúster desde la subred de pod.Better IP utilization: IPs are dynamically allocated to cluster Pods from the Pod subnet. Esto conduce a un mejor uso de las direcciones IP en el clúster en comparación con la solución CNI tradicional, que realiza una asignación estática de direcciones IP para cada nodo.This leads to better utilization of IPs in the cluster compared to the traditional CNI solution, which does static allocation of IPs for every node.

  • Escalable y flexible: las subredes de nodo y pod se pueden escalar de manera independiente.Scalable and flexible: Node and pod subnets can be scaled independently. Una sola subred de pod puede compartirse en varios grupos de nodos de un clúster o en varios clústeres de AKS implementados en la misma red virtual.A single pod subnet can be shared across multiple node pools of a cluster or across multiple AKS clusters deployed in the same VNet. También puede configurar una subred de pod independiente para un grupo de nodos.You can also configure a separate pod subnet for a node pool.

  • Alto rendimiento: ya que a los pods se les asignan direcciones IP de red virtual, tienen conectividad directa con los recursos y el pod de otros clústeres de la red virtual.High performance: Since pod are assigned VNet IPs, they have direct connectivity to other cluster pod and resources in the VNet. La solución admite clústeres muy grandes sin ninguna reducción del rendimiento.The solution supports very large clusters without any degradation in performance.

  • Directivas de red virtual independientes para pods: dado que los pods tienen una subred independiente, puede configurar directivas de red virtual independientes para ellas distintas de las directivas de nodo.Separate VNet policies for pods: Since pods have a separate subnet, you can configure separate VNet policies for them that are different from node policies. Esto permite muchos escenarios útiles, como la habilitación de la conectividad a Internet solo para pods y no para los nodos, la corrección de la IP de origen para pods en un grupo de nodos mediante una NAT de red virtual y el uso de NSG para filtrar el tráfico entre grupos de nodos.This enables many useful scenarios such as allowing internet connectivity only for pods and not for nodes, fixing the source IP for pod in a node pool using a VNet Network NAT, and using NSGs to filter traffic between node pools.

  • Directivas de red de Kubernetes: las directivas de red de Azure y Calico funcionan con esta nueva solución.Kubernetes network policies: Both the Azure Network Policies and Calico work with this new solution.

Instalación de la CLI de Azure aks-previewInstall the aks-preview Azure CLI

Necesitará la extensión de la CLI de Azure aks-preview.You will need the aks-preview Azure CLI extension. Instale la extensión de la CLI de Azure aks-preview mediante el comando az extension add.Install the aks-preview Azure CLI extension by using the az extension add command. También puede instalar las actualizaciones disponibles mediante el comando az extension update.Or install any available updates by using the az extension update command.

# Install the aks-preview extension
az extension add --name aks-preview

# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview

Registro de la característica en vista previa (GB) PodSubnetPreviewRegister the PodSubnetPreview preview feature

Para usar la característica, también debe habilitar la marca de característica PodSubnetPreview en la suscripción.To use the feature, you must also enable the PodSubnetPreview feature flag on your subscription.

Registre la marca de la característica PodSubnetPreview con el comando az feature register, como se muestra en el siguiente ejemplo:Register the PodSubnetPreview feature flag by using the az feature register command, as shown in the following example:

az feature register --namespace "Microsoft.ContainerService" --name "PodSubnetPreview"

Tarda unos minutos en que el estado muestre Registrado.It takes a few minutes for the status to show Registered. Puede comprobar el estado de registro con el comando az feature list:Verify the registration status by using the az feature list command:

az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/PodSubnetPreview')].{Name:name,State:properties.state}"

Cuando haya terminado, actualice el registro del proveedor de recursos Microsoft.ContainerService con el comando az provider register:When ready, refresh the registration of the Microsoft.ContainerService resource provider by using the az provider register command:

az provider register --namespace Microsoft.ContainerService

Requisitos previos adicionalesAdditional prerequisites

Los requisitos previos ya indicados para Azure CNI siguen siendo aplicables, pero hay algunas limitaciones adicionales:The prerequisites already listed for Azure CNI still apply, but there are a few additional limitations:

  • Solo se admiten clústeres de nodo de Linux y los grupos de nodos.Only linux node clusters and node pools are supported.
  • No se admiten los clústeres de AKS Engine y de implementación personal.AKS Engine and DIY clusters are not supported.

Planeación del direccionamiento IPPlanning IP addressing

Al usar esta característica, la planeación es mucho más sencilla.When using this feature, planning is much simpler. Dado que los nodos y pods se escalan de manera independiente, los espacios de direcciones también se pueden planear por separado.Since the nodes and pods scale independently, their address spaces can also be planned separately. Como las subredes de pod se pueden configurar en la granularidad de un grupo de nodos, los clientes siempre podrán agregar una nueva subred cuando agreguen un grupo de nodos.Since pod subnets can be configured to the granularity of a node pool, customers can always add a new subnet when they add a node pool. Los pods de sistema de un grupo de clústeres/nodos también reciben direcciones IP de la subred de pod, por lo que es necesario tener en cuenta este comportamiento.The system pods in a cluster/node pool also receive IPs from the pod subnet, so this behavior needs to be accounted for.

La planeación de las direcciones IP para los servicios K8S y el puente de Docker permanecen sin cambios.The planning of IPs for K8S services and Docker bridge remain unchanged.

Máximo de pods por nodo en un clúster con asignación dinámica de direcciones IP y compatibilidad mejorada con subredesMaximum pods per node in a cluster with dynamic allocation of IPs and enhanced subnet support

Los valores de pods por nodo al usar Azure CNI con asignación dinámica de direcciones IP han cambiado ligeramente del comportamiento de CNI tradicional:The pods per node values when using Azure CNI with dynamic allocation of IPs have changed slightly from the traditional CNI behavior:

CNICNI Método de implementaciónDeployment Method Valor predeterminadoDefault Configurable en la implementaciónConfigurable at deployment
Azure CNI tradicionalTraditional Azure CNI Azure CLIAzure CLI 3030 Sí (hasta 250)Yes (up to 250)
Azure CNI con asignación dinámica de direcciones IPAzure CNI with dynamic allocation of IPs Azure CLIAzure CLI 250250 Sí (hasta 250)Yes (up to 250)

Todas las demás instrucciones relacionadas con la configuración del máximo de nodos por pod siguen siendo las mismas.All other guidance related to configuring the maximum nodes per pod remains the same.

Parámetros de implementación adicionalesAdditional deployment parameters

Los parámetros de implementación descritos anteriormente siguen siendo válidos, con una excepción:The deployment parameters described above are all still valid, with one exception:

  • El parámetro subnet ahora hace referencia a la subred relacionada con los nodos del clúster.The subnet parameter now refers to the subnet related to the cluster's nodes.
  • Se usa un parámetro adicional pod subnet para especificar la subred cuyas direcciones IP se asignarán dinámicamente a los pods.An additional parameter pod subnet is used to specify the subnet whose IP addresses will be dynamically allocated to pods.

Configuración de redes: CLI con asignación dinámica de direcciones IP y compatibilidad mejorada con subredesConfigure networking - CLI with dynamic allocation of IPs and enhanced subnet support

El uso de la asignación dinámica de direcciones IP y la compatibilidad mejorada con subredes en el clúster es similar al método predeterminado para configurar un clúster de Azure CNI.Using dynamic allocation of IPs and enhanced subnet support in your cluster is similar to the default method for configuring a cluster Azure CNI. En el ejemplo siguiente se describe cómo crear una nueva red virtual con una subred para nodos y una subred para pods, y cómo crear un clúster que usa Azure CNI con asignación dinámica de direcciones IP y compatibilidad mejorada con subredes.The following example walks through creating a new virtual network with a subnet for nodes and a subnet for pods, and creating a cluster that uses Azure CNI with dynamic allocation of IPs and enhanced subnet support. Asegúrese de reemplazar las variables como $subscription con sus propios valores:Be sure to replace variables such as $subscription with your own values:

En primer lugar, cree la red virtual con dos subredes:First, create the virtual network with two subnets:

$resourceGroup="myResourceGroup"
$vnet="myVirtualNetwork"

# Create our two subnet network 
az network vnet create -g $rg --name $vnet --address-prefixes 10.0.0.0/8 -o none 
az network vnet subnet create -g $rg --vnet-name $vnet --name nodesubnet --address-prefixes 10.240.0.0/16 -o none 
az network vnet subnet create -g $rg --vnet-name $vnet --name podsubnet --address-prefixes 10.241.0.0/16 -o none 

A continuación, cree el clúster. Para ello, haga referencia a la subred de nodo mediante --vnet-subnet-id y la subred de pod con --pod-subnet-id:Then, create the cluster, referencing the node subnet using --vnet-subnet-id and the pod subnet using --pod-subnet-id:

$clusterName="myAKSCluster"
$location="eastus"
$subscription="aaaaaaa-aaaaa-aaaaaa-aaaa"

az aks create -n $clusterName -g $resourceGroup -l $location --max-pods 250 --node-count 2 --network-plugin azure --vnet-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/nodesubnet --pod-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/podsubnet  

Adición de grupo de nodosAdding node pool

Al agregar un grupo de nodos, haga referencia a la subred de nodo mediante --vnet-subnet-id y la subred de pod mediante --pod-subnet-id.When adding node pool, reference the node subnet using --vnet-subnet-id and the pod subnet using --pod-subnet-id. En el ejemplo siguiente se crean dos nuevas subredes a las que se hace referencia durante la creación de un nuevo grupo de nodos:The following example creates two new subnets that are then referenced in the creation of a new node pool:

az network vnet subnet create -g $resourceGroup --vnet-name $vnet --name node2subnet --address-prefixes 10.242.0.0/16 -o none 
az network vnet subnet create -g $resourceGroup --vnet-name $vnet --name pod2subnet --address-prefixes 10.243.0.0/16 -o none 

az aks nodepool add --cluster-name $clusterName -g $resourceGroup  -n newNodepool --max-pods 250 --node-count 2 --vnet-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/node2subnet  --pod-subnet-id /subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.Network/virtualNetworks/$vnet/subnets/pod2subnet --no-wait 

Preguntas más frecuentesFrequently asked questions

Las siguientes preguntas y respuestas se aplican a la configuración de red de Azure CNI.The following questions and answers apply to the Azure CNI networking configuration.

  • ¿Puedo implementar máquinas virtuales en la subred del clúster?Can I deploy VMs in my cluster subnet?

    Sí.Yes.

  • ¿Qué dirección IP de origen ven los sistemas externos para el tráfico que se origina en un pod habilitado para Azure CNI?What source IP do external systems see for traffic that originates in an Azure CNI-enabled pod?

    Los sistemas de la misma red virtual que el clúster de AKS ven la IP del pod como la dirección de origen para todo el tráfico del pod.Systems in the same virtual network as the AKS cluster see the pod IP as the source address for any traffic from the pod. Los sistemas que están fuera de la red virtual del clúster de AKS ven la IP del nodo como la dirección de origen para todo el tráfico del pod.Systems outside the AKS cluster virtual network see the node IP as the source address for any traffic from the pod.

  • ¿Puedo configurar las directivas de red por pod?Can I configure per-pod network policies?

    Sí, la directiva de red de Kubernetes está disponible en AKS.Yes, Kubernetes network policy is available in AKS. Para comenzar, consulte Protección del tráfico entre pods mediante directivas de red en Azure Kubernetes Service (AKS).To get started, see Secure traffic between pods by using network policies in AKS.

  • ¿Es configurable el número máximo de pods que se puede implementar en un nodo ?Is the maximum number of pods deployable to a node configurable?

    Sí, al implementar un clúster con la CLI de Azure o una plantilla de Resource Manager.Yes, when you deploy a cluster with the Azure CLI or a Resource Manager template. Consulte Pods máximos por nodo.See Maximum pods per node.

    No se puede cambiar el número máximo de pods por nodo en un clúster existente.You can't change the maximum number of pods per node on an existing cluster.

  • ¿Cómo se pueden configurar propiedades adicionales para la subred que he creado durante la creación del clúster de AKS? Por ejemplo, los puntos de conexión de servicio.How do I configure additional properties for the subnet that I created during AKS cluster creation? For example, service endpoints.

    La lista completa de propiedades de la red virtual y las subredes que se crean durante la creación del clúster de AKS puede configurarse en la página de configuración de red virtual estándar en Azure Portal.The complete list of properties for the virtual network and subnets that you create during AKS cluster creation can be configured in the standard virtual network configuration page in the Azure portal.

  • ¿Puedo usar otra subred dentro de mi red virtual de clúster como intervalo de direcciones de servicio de Kubernetes?Can I use a different subnet within my cluster virtual network for the Kubernetes service address range?

    Aunque no se recomienda, esta configuración es posible.It's not recommended, but this configuration is possible. El rango de direcciones de servicio es un conjunto de direcciones IP virtuales (VIP) que Kubernetes asigna a los servicios internos del clúster.The service address range is a set of virtual IPs (VIPs) that Kubernetes assigns to internal services in your cluster. Las redes de Azure no tiene ninguna visibilidad sobre el intervalo de direcciones IP de servicio del clúster de Kubernetes.Azure Networking has no visibility into the service IP range of the Kubernetes cluster. Debido a ello, es posible crear posteriormente una nueva subred en la red virtual del clúster que se superponga con el intervalo de direcciones de servicio.Because of the lack of visibility into the cluster's service address range, it's possible to later create a new subnet in the cluster virtual network that overlaps with the service address range. Si se produce una superposición de este tipo, Kubernetes podría asignar a un servicio una dirección IP que ya esté en uso por otro recurso de la subred, lo que provocaría un comportamiento impredecible o errores.If such an overlap occurs, Kubernetes could assign a service an IP that's already in use by another resource in the subnet, causing unpredictable behavior or failures. Al tener la seguridad de usar un intervalo de direcciones que se encuentra fuera de la red virtual del clúster puede evitar este riesgo de superposición.By ensuring you use an address range outside the cluster's virtual network, you can avoid this overlap risk.

Preguntas frecuentes sobre la asignación dinámica de direcciones IP y la compatibilidad mejorada con subredesDynamic allocation of IP addresses and enhanced subnet support FAQs

Las siguientes preguntas y respuestas se aplican a la configuración de red de Azure CNI cuando se usa la asignación dinámica de direcciones IP y la compatibilidad mejorada con subredes.The following questions and answers apply to the Azure CNI network configuration when using Dynamic allocation of IP addresses and enhanced subnet support.

  • ¿Puedo asignar varias subredes de pod a un grupo de clústeres/nodos?Can I assign multiple pod subnets to a cluster/node pool?

    Solo se puede asignar una subred a un grupo de clústeres o nodos.Only one subnet can be assigned to a cluster or node pool. Sin embargo, varios clústeres o grupos de nodos pueden compartir una sola subred.However, multiple clusters or node pools can share a single subnet.

  • ¿Puedo asignar subredes de pod de una red virtual diferente?Can I assign Pod subnets from a different VNet altogether?

    La subred de pod debe ser de la misma red virtual que el clúster.The pod subnet should be from the same VNet as the cluster.

  • ¿Algunos de los grupos de nodos de un clúster pueden usar el CNI tradicional mientras otros usan el nuevo CNI?Can some node pools in a cluster use the traditional CNI while others use the new CNI?

    Todo el clúster debe usar un solo tipo de CNI.The entire cluster should use only one type of CNI.

Motor de AKSAKS Engine

El motor de Azure Kubernetes Service (motor de AKS) es un proyecto de código abierto que genera plantillas de Azure Resource Manager que puede usar para implementar clústeres de Kubernetes en Azure.Azure Kubernetes Service Engine (AKS Engine) is an open-source project that generates Azure Resource Manager templates you can use for deploying Kubernetes clusters on Azure.

Los clústeres de Kubernetes creados con AKS Engine admiten los complementos kubenet y Azure CNI.Kubernetes clusters created with AKS Engine support both the kubenet and Azure CNI plugins. Por lo tanto, ambos escenarios de redes son compatibles con AKS Engine.As such, both networking scenarios are supported by AKS Engine.

Pasos siguientesNext steps

Más información acerca de las redes en AKS en los siguientes artículos:Learn more about networking in AKS in the following articles:

[advanced-networking-diagram-01]: ./media/networking-overview/advanced-networking-diagram-01.png [portal-01-networking-advanced]: ./media/networking-overview/portal-01-networking-advanced.png