Creación de un clúster privado de Azure Kubernetes Service
En un clúster privado, el servidor de la API o el plano de control tienen direcciones IP internas que se definen en el documento RFC1918 sobre la asignación de direcciones para conexiones privadas de Internet. Mediante el uso de un clúster privado, puede asegurarse de que el tráfico entre el servidor de API y los grupos de nodos permanece solo en la red privada.
El plano de control o el servidor de la API están en una suscripción de Azure administrada mediante Azure Kubernetes Service (AKS). El grupo de clústeres o nodos de un cliente está en la suscripción del cliente. El servidor y el grupo de clústeres o nodos pueden comunicarse entre sí a través del servicio de Azure Private Link en la red virtual del servidor de la API y de un punto de conexión privado expuesto en la subred del clúster de AKS del cliente.
Al aprovisionar un clúster de AKS privado, AKS crea de forma predeterminada un FQDN privado con una zona DNS privada y un FQDN público adicional con un registro A correspondiente en un DNS público de Azure. Los nodos del agente siguen usando el registro A en la zona de DNS privado, con el fin de resolver la dirección IP privada del punto de conexión privado para la comunicación con el servidor de la API.
Disponibilidad en regiones
Un clúster privado está disponible en las regiones públicas, en Azure Government y en las regiones de Azure China 21Vianet en las que se admite AKS.
Requisitos previos
- CLI de Azure >= 2.28.0 o CLI de Azure con la extensión aks-preview 0.5.29, o posterior.
- Si usa ARM o la API REST, la versión de la API de AKS debe ser 2021-05-01 o posterior.
- El servicio Azure Private Link solo se admite en Standard Azure Load Balancer. No se admite en Basic Azure Load Balancer.
- Para usar un servidor DNS personalizado, agregue la IP 168.63.129.16 de Azure DNS como servidor DNS ascendente en el servidor DNS personalizado. Para más información sobre la dirección IP de Azure DNS, consulte ¿Qué es la dirección IP 168.63.129.16?
Creación de un clúster privado de AKS
Crear un grupo de recursos
Cree un grupo de recursos o seleccione uno existente en el clúster de AKS.
az group create -l westus -n MyResourceGroup
Redes básicas predeterminadas
az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster
Donde --enable-private-cluster es una marca obligatoria para un clúster privado.
Redes avanzadas
az aks create \
--resource-group <private-cluster-resource-group> \
--name <private-cluster-name> \
--load-balancer-sku standard \
--enable-private-cluster \
--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
Donde --enable-private-cluster es una marca obligatoria para un clúster privado.
Nota
Si la dirección CIDR del puente de Docker (172.17.0.1/16) entra en conflicto con el CIDR de la subred, cambie la dirección del puente de Docker.
Deshabilitación del FQDN público
Los parámetros siguientes se pueden aprovechar para deshabilitar el FQDN público.
Deshabilitación del FQDN público en un nuevo clúster de AKS
az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <ResourceId> --private-dns-zone <private-dns-zone-mode> --disable-public-fqdn
Deshabilitación del FQDN público en un clúster existente
az aks update -n <private-cluster-name> -g <private-cluster-resource-group> --disable-public-fqdn
Configuración de zona de DNS privado
Se pueden aprovechar los siguientes parámetros para configurar la zona DNS privada.
- "System", que es también el valor predeterminado. Si se omite el argumento --private-dns-zone, AKS creará una zona DNS privada en el grupo de recursos del nodo.
- "None" tiene como valor predeterminado un DNS público, lo que significa que AKS no creará una zona de DNS privado.
- "CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID", que requiere crear una zona DNS privada en este formato para la nube global de Azure:
privatelink.<region>.azmk8s.ioo<subzone>.privatelink.<region>.azmk8s.io. A partir de ahora, necesitará el identificador de recurso de esa zona DNS privada. Asimismo, también necesitará una identidad asignada por el usuario o una entidad de servicio que tenga como mínimo los rolesprivate dns zone contributorynetwork contributor.- Si la zona de DNS privado está en una suscripción diferente a la del clúster de AKS, debe registrar Microsoft.ContainerServices en ambas suscripciones.
- "fqdn-subdomain" solo se puede usar con "CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID" para proporcionar capacidades de subdominio a
privatelink.<region>.azmk8s.io.
Creación de un clúster de AKS privado con zona de DNS privado
az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <ResourceId> --private-dns-zone [system|none]
Creación de un clúster de AKS privado con una zona DNS privada o una subzona DNS privada personalizada
# Custom Private DNS Zone name should be in format "<subzone>.privatelink.<region>.azmk8s.io"
az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <ResourceId> --private-dns-zone <custom private dns zone or custom private dns subzone ResourceId>
Creación de un clúster privado de AKS con una zona DNS privada personalizada y un subdominio personalizado
# Custom Private DNS Zone name could be in formats "privatelink.<region>.azmk8s.io" or "<subzone>.privatelink.<region>.azmk8s.io"
az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <ResourceId> --private-dns-zone <custom private dns zone ResourceId> --fqdn-subdomain <subdomain>
Opciones para conectarse al clúster privado
El punto de conexión del servidor de la API no tiene ninguna dirección IP pública. Para administrar el servidor de API, necesitará una máquina virtual que tenga acceso a la red virtual de Azure (VNet) del clúster de AKS. Hay varias opciones para establecer la conectividad de red con el clúster privado.
- Crear una máquina virtual en la misma red virtual de Azure (VNet) que el clúster de AKS.
- Usar una máquina virtual de una red diferente y configurar el emparejamiento de red virtual. Consulte la sección siguiente para más información sobre esta opción.
- Usar una conexión de ExpressRoute o VPN.
- Use la característica
command invokede AKS. - Use una conexión de punto de conexión privado.
La opción más sencilla es crear una máquina virtual en la misma red virtual que el clúster de AKS. ExpressRoute y las VPN incrementan los costos y requieren redes más complejas. Para utilizar el emparejamiento de red virtual, debe planear los intervalos CIDR de la red para asegurarse de que no haya intervalos superpuestos.
Emparejamiento de redes virtuales de Azure
Tal y como se ha dicho, el emparejamiento de red virtual es un mecanismo para acceder a un clúster privado. Si desea usar el emparejamiento de red virtual, tiene que configurar un vínculo entre la red virtual y la zona DNS privada.
- Vaya al grupo de recursos del nodo en Azure Portal.
- Seleccione la zona DNS privada.
- En el panel izquierdo, seleccione el vínculo red virtual.
- Cree un nuevo vínculo para agregar la red virtual de la máquina virtual a la zona DNS privada. El vínculo de la zona DNS puede tardar unos minutos en estar disponible.
- En Azure Portal, vaya al grupo de recursos que contiene la red virtual del clúster.
- En el panel derecho, seleccione la red virtual. El nombre de la red virtual tiene el formato aks-vnet-*.
- En el panel izquierdo, seleccione Emparejamientos.
- Seleccione Agregar, agregue la red virtual de la máquina virtual y, después, cree el emparejamiento.
- Vaya a la red virtual en la que tiene la máquina virtual, seleccione Emparejamientos, seleccione la red virtual de AKS y, después, cree el emparejamiento. Si los intervalos de direcciones de la red virtual de AKS y de la red virtual de la máquina virtual entran en conflicto, se produce un error de emparejamiento. Para más información, consulte Emparejamiento de redes virtuales.
Concentrador y radio con DNS personalizado
Las arquitecturas de concentrador y radio suelen usarse para implementar redes en Azure. En muchas de estas implementaciones, los valores de DNS en las redes virtuales de radios están configurados para hacer referencia a un reenviador de DNS central con el fin de permitir la resolución de DNS local y basada en Azure. Al implementar un clúster de AKS en un entorno de red de este tipo, hay algunas consideraciones especiales que se deben tener en cuenta.

De forma predeterminada, cuando se aprovisiona un clúster privado, se crean un punto de conexión privado (1) y una zona DNS privada (2) en el grupo de recursos administrados del clúster. El clúster usa un registro A en la zona privada a fin de resolver la dirección IP del punto de conexión privado para la comunicación con el servidor de la API.
La zona DNS privada solo está vinculada a la red virtual a la que están adjuntados los nodos del clúster (3). Esto significa que el punto de conexión privado solo lo pueden resolver los hosts de esa red virtual vinculada. En escenarios en los que no haya ningún DNS personalizado configurado en la red virtual (valor predeterminado), esto funciona sin incidencias, ya que los hosts apuntan a 168.63.129.16 para DNS, que puede resolver registros en la zona DNS privada debido al vínculo.
En escenarios en los que la red virtual que contiene el clúster tenga una configuración de DNS personalizada (4), se produce un error en la implementación del clúster a menos que la zona DNS privada esté vinculada a la red virtual que contiene las resoluciones de DNS personalizadas (5). Este vínculo se puede crear manualmente después de crear la zona privada, durante el aprovisionamiento del clúster, o a través de la automatización si se detecta la creación de la zona usando mecanismos de implementación basados en eventos (por ejemplo, Azure Event Grid y Azure Functions).
Nota
El reenvío condicional no admite subdominios.
Nota
Si usa Traiga su propia tabla de rutas con kubenet y Traiga su propio DNS con un clúster privado, se producirá un error en la creación del clúster. Tendrá que asociar RouteTable en el grupo de recursos del nodo a la subred después de que se haya producido un error en la creación del clúster, con el fin de que la creación se realice correctamente.
Use una conexión de punto de conexión privado
Se puede configurar un punto de conexión privado para que no sea necesario emparejar una instancia de Azure Virtual Network para comunicarse con el clúster privado. Para usar un punto de conexión privado, cree uno en la red virtual y, después, cree un vínculo entre la red virtual y una nueva zona DNS privada.
Importante
Si la red virtual está configurada con servidores DNS personalizados, el DNS privado se debe configurar correctamente para el entorno. Vea la documentación de resolución de nombres de redes virtuales para más información.
- En el menú o en la página principal de Azure Portal, seleccione Crear un recurso.
- Busque Punto de conexión privado y seleccione Crear > Punto de conexión privado.
- Seleccione Crear.
- En la pestaña Aspectos básicos, configure las opciones siguientes:
- Detalles del proyecto:
- Seleccione una suscripción de Azure.
- Seleccione el grupo de recursos de Azure donde se encuentra la red virtual.
- Detalles de la instancia:
- Escriba un Nombre para el punto de conexión privado, como myPrivateEndpoint.
- Seleccione una región para el punto de conexión privado.
- Detalles del proyecto:
Importante
Compruebe que la región seleccionada es la misma que la red virtual desde la que quiere conectarse; de lo contrario, no verá la red virtual en la pestaña Configuración.
- Seleccione Siguiente: Recurso cuando haya finalizado.
- En la pestaña Recurso, configure las opciones siguientes:
- Método de conexión: Conectarse a un recurso de Azure en mi directorio
- Suscripción: seleccione la suscripción de Azure donde se encuentra el clúster privado.
- Tipo de recurso: Microsoft.ContainerService/managedClusters
- Recurso: myPrivateAKSCluster
- Subrecurso de destino: management
- Seleccione Siguiente: Configuración cuando haya terminado.
- En la pestaña Configuración, configure las opciones siguientes:
- Redes:
- Red virtual: myVirtualNetwork
- Subred: mySubnet
- Redes:
- Cuando haya terminado, seleccione Siguiente: Etiquetas.
- (Opcional) En la pestaña Etiquetas configure key-values según sea necesario.
- Seleccione Siguiente: Revisar y crear y luego Crear cuando finalice la validación.
Guarde la dirección IP privada del punto de conexión privado. Esta dirección IP privada se usa en un paso posterior.
Una vez que se crea el punto de conexión privado, cree una zona DNS privada con el mismo nombre que la que ha creado el clúster privado.
- Vaya al grupo de recursos del nodo en Azure Portal.
- Seleccione la zona DNS privada y el registro:
- el nombre de la zona DNS privada, que sigue el patrón
*.privatelink.<region>.azmk8s.io - el nombre del registro A (excepto el nombre DNS privado)
- el período de vida (TTL)
- el nombre de la zona DNS privada, que sigue el patrón
- En el menú o en la página principal de Azure Portal, seleccione Crear un recurso.
- Busque Zona DNS privada y seleccione Crear > Zona DNS privada.
- En la pestaña Aspectos básicos, configure las opciones siguientes:
- Detalles del proyecto:
- Seleccione una suscripción de Azure.
- Seleccione el grupo de recursos de Azure donde se ha creado el punto de conexión privado.
- Detalles de la instancia:
- Escriba el nombre de la zona DNS que ha recuperado en los pasos anteriores.
- Región es la ubicación del grupo de recursos de Azure, de forma predeterminada.
- Detalles del proyecto:
- Seleccione Revisar y crear cuando termine y luego Crear cuando finalice la validación.
Una vez que se cree la zona DNS privada, cree un registro A. Este registro asocia el punto de conexión privado al clúster privado.
- Vaya a la zona DNS privada creada en los pasos anteriores.
- En la página Información general, seleccione + Conjunto de registros.
- En la pestaña Agregar conjunto de registros, configure las opciones siguientes:
- Nombre: introduzca el nombre recuperado del registro A en la zona DNS del clúster privado
- Tipo: A - registro Alias para dirección IPv4
- TTL: introduzca el número que debe coincidir con el registro de la zona DNS del clúster privado del registro A
- Unidad TTL: cambie el valor de la lista desplegable para que coincida con el registro A de la zona DNS del clúster privado
- Dirección IP: introduzca la dirección IP del punto de conexión privado que se ha creado antes
Importante
Al crear el registro A, use solo el nombre y no el nombre de dominio completo (FQDN).
Una vez que se crea el registro A, vincule la zona DNS privada a la red virtual que accederá al clúster privado.
- Vaya a la zona DNS privada creada en los pasos anteriores.
- En el panel de la izquierda, seleccione Vínculos de red virtual.
- Cree un vínculo para agregar la red virtual a la zona DNS privada. El vínculo de la zona DNS puede tardar unos minutos en estar disponible.
Advertencia
Si el clúster privado se detiene y reinicia, se quita y se vuelve a crear el servicio de vínculo privado original del clúster privado, lo que interrumpe la conexión entre el punto de conexión privado y el clúster privado. Para resolver este problema, elimine y vuelva a crear los puntos de conexión privados creados por el usuario vinculados al clúster privado. Los registros DNS también tendrán que actualizarse si los puntos de conexión privados que se han vuelto a crear tienen nuevas direcciones IP.
Limitaciones
- Los intervalos autorizados de direcciones IP no se pueden aplicar al punto de conexión del servidor de API privado; solo se aplican al servidor de API público.
- Las limitaciones del servicio Azure Private Link aplican a los clústeres privados.
- No se admiten agentes hospedados por Microsoft en Azure DevOps con clústeres privados. Considere la posibilidad de usar agentes autohospedados.
- Si tiene que habilitar Azure Container Registry para que funcione con un clúster de AKS privado, configure un vínculo privado para el registro de contenedor en la red virtual del clúster, o bien configure el emparejamiento entre la red virtual de Container Registry y la del clúster privado.
- No se admite la conversión de clústeres de AKS existentes en clústeres privados.
- La eliminación o modificación del punto de conexión privado en la subred del cliente hará que el clúster deje de funcionar.