Compartir a través de


Creación de un clúster privado de Azure Kubernetes Service (AKS)

Este artículo le ayuda a implementar un clúster de AKS basado en vínculo privado. Si está interesado en crear un clúster de AKS sin necesidad de un vínculo privado o túnel, consulte Crear un clúster de Azure Kubernetes Service (AKS) con la integración de VNet del servidor API.

Introducción a los clústeres privados en AKS

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 servidor de API se encuentra en un grupo de recursos de Azure administrado por AKS y el clúster o grupo de nodos se encuentra en el grupo de recursos. El servidor y el grupo de clústeres o nodos pueden comunicarse entre sí a través del servicio Azure Private Link en la red virtual del servidor de API y un punto de conexión privado expuesto en la subred del clúster de AKS.

Al crear un clúster de AKS privado, AKS crea nombres de dominio completos (FQDN) públicos y privados con las zonas DNS correspondientes de forma predeterminada. Para obtener opciones detalladas de configuración de DNS, consulte Configuración de una zona DNS privada, una subzona DNS privada o un subdominio personalizado.

Disponibilidad regional

Los clústeres privados están disponibles en las regiones públicas, en Azure Government y en Microsoft Azure operado por 21Vianet, donde se admite AKS.

Requisitos previos para clústeres de AKS privados

Importante

A partir del 30 de noviembre de 2025, Azure Kubernetes Service (AKS) ya no admite ni proporciona actualizaciones de seguridad para Azure Linux 2.0. La imagen de nodo de Linux 2.0 de Azure está congelada en la versión 202512.06.0. A partir del 31 de marzo de 2026, se quitarán las imágenes de nodo y no podrá escalar los grupos de nodos. Migre a una versión compatible de Azure Linux mediante la actualización de los grupos de nodos a una versión de Kubernetes compatible o la migración a osSku AzureLinux3. Para más información, consulte [Retirada] Grupos de nodos de Azure Linux 2.0 en AKS.

Limitaciones y consideraciones para clústeres de AKS privados

  • No se pueden aplicar intervalos ip autorizados 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 necesita habilitar Azure Container Registry en un clúster de AKS privado, configure un vínculo privado para el registro de contenedor en la red virtual del clúster (VNet) o configure el emparejamiento entre la red virtual del registro de contenedor y la red virtual del clúster privado.
  • La eliminación o modificación del punto de conexión privado en la subred del cliente hace que el clúster deje de funcionar.
  • El servicio Azure Private Link solo se admite en Standard Azure Load Balancer. No se admite en Basic Azure Load Balancer.

Red en estrella con DNS personalizado para clústeres privados de AKS

Las arquitecturas hub and spoke 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.

Concentrador y radio de clúster privado

Tenga en cuenta las siguientes consideraciones al implementar clústeres de AKS privados en arquitecturas de hub y spoke con DNS personalizado.

  • Cuando se crea un clúster privado, se crea un punto de conexión privado (1) y una zona DNS privada (2) en el grupo de recursos administrados por clúster de forma predeterminada. 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 conectados los nodos del clúster (3), lo que significa que los hosts de esa red virtual vinculada solo pueden resolver el punto de conexión privado. En escenarios en los que no se configura ningún DNS personalizado en la red virtual (valor predeterminado), funciona sin problema, ya que los hosts apuntan a 168.63.129.16 para DNS que pueden resolver registros en la zona DNS privada debido al vínculo.

  • Si mantiene el comportamiento predeterminado de la zona DNS privada, AKS intenta vincular la zona directamente a la red virtual satélite que hospeda el clúster, incluso cuando la zona ya está vinculada a una red virtual central.

    En redes virtuales radiales que usan servidores DNS personalizados, esta acción puede producir un error si la identidad administrada del clúster carece de colaborador de red en la red virtual radial.

    Para evitar el error, elija una de las siguientes configuraciones admitidas:

    • Zona DNS privada personalizada: proporcione una zona privada precreada y establezca en privateDNSZone / --private-dns-zone su identificador de recurso. Vincule esa zona a la VNet adecuada (por ejemplo, la VNet del hub) y configure publicDNS, false o use --disable-public-fqdn.
    • Solo DNS público: deshabilite la creación de zonas privadas estableciendo privateDNSZone / --private-dns-zone en none y deje publicDNS en su valor predeterminado (true) / no use --disable-public-fqdn.
  • Si va a usar su propia tabla de rutas (BYO) con kubenet, así como su propio DNS, con clústeres privados, se produce 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.

Tenga en cuenta las siguientes limitaciones al usar DNS personalizado con clústeres de AKS privados:

  • privateDNSZone / la configuración de --private-dns-zonenone y publicDNS: false / --disable-public-fqdn al mismo tiempo.
  • El reenvío condicional no admite subdominios.

Creación de un clúster de AKS privado con redes básicas predeterminadas

  1. Cree un grupo de recursos con el comando az group create. También puede usar un grupo de recursos existente para el clúster de AKS.

    az group create \
        --name <private-cluster-resource-group> \
        --location <location>
    
  2. Cree un clúster privado con redes básicas predeterminadas mediante el comando az aks create con la marca --enable-private-cluster.

    Parámetros clave en este comando:

    • --enable-private-cluster: habilita el modo de clúster privado.
    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --generate-ssh-keys
    
  3. Configure kubectl para conectarse al clúster de AKS privado.

Creación de un clúster de AKS privado con redes avanzadas

  1. Cree un grupo de recursos con el comando az group create. También puede usar un grupo de recursos existente para el clúster de AKS.

    az group create \
        --name <private-cluster-resource-group> \
        --location <location>
    
  2. Cree un clúster privado con redes avanzadas mediante el az aks create comando .

    Parámetros clave en este comando:

    • --enable-private-cluster: habilita el modo de clúster privado.
    • --network-plugin azure: especifica el complemento de red de Azure CNI.
    • --vnet-subnet-id: el identificador de recurso de una subred existente en una red virtual.
    • --dns-service-ip: una dirección IP disponible dentro del intervalo de direcciones del servicio Kubernetes que se va a usar para el servicio DNS del clúster.
    • --service-cidr: intervalo IP de notación CIDR desde el que se van a asignar direcciones IP del clúster de servicio.
    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> \
        --dns-service-ip 10.2.0.10 \
        --service-cidr 10.2.0.0/24
        --generate-ssh-keys
    
  3. Configure kubectl para conectarse al clúster de AKS privado.

Uso de dominios personalizados con clústeres de AKS privados

Si desea configurar dominios personalizados que solo se pueden resolver internamente, consulte Uso de dominios personalizados.

Deshabilitar un FQDN público en un clúster privado de AKS

Deshabilita un FQDN público en un nuevo clúster

  • Deshabilite un FQDN público al crear un clúster de AKS privado mediante el comando az aks create con la marca --disable-public-fqdn.

    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resource-id> \
        --private-dns-zone <private-dns-zone-mode> \
        --disable-public-fqdn \
        --generate-ssh-keys
    

Deshabilitar un FQDN público en un clúster existente

  • Deshabilite un FQDN público en un clúster de AKS existente mediante el comando az aks update con la marca --disable-public-fqdn.

    az aks update \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --disable-public-fqdn
    

Configuración de una zona DNS privada, una subzona DNS privada o un subdominio personalizado para un clúster de AKS privado

Puede configurar las opciones de DNS privadas para un clúster de AKS privado mediante la CLI de Azure (con el --private-dns-zone parámetro) o una plantilla de Azure Resource Manager (ARM) (con la privateDNSZone propiedad ). En la tabla siguiente se describen las opciones disponibles para el --private-dns-zone parámetro / privateDNSZone propiedad:

Configuración Description
system Valor predeterminado al configurar una zona DNS privada. Si omite --private-dns-zone / privateDNSZone, AKS crea una zona DNS privada en el grupo de recursos del nodo.
none Si establece --private-dns-zone / privateDNSZone en none, AKS no crea una zona DNS privada.
<custom-private-dns-zone-resource-id> Para usar este parámetro, debe crear una zona DNS privada en el siguiente formato para la nube global de Azure: privatelink.<region>.azmk8s.io o <subzone>.privatelink.<region>.azmk8s.io. Necesita el identificador de recurso de la zona DNS privada para su uso futuro. También necesita una identidad asignada al usuario o un principal de servicio con los roles colaborador de zona DNS privada y colaborador de red. En el caso de los clústeres que usan la integración con red virtual del servidor de API, una zona DNS privada admite el formato de nomenclatura de private.<region>.azmk8s.io o <subzone>.private.<region>.azmk8s.io. No puede cambiar ni eliminar este recurso después de crear el clúster, ya que puede causar problemas de rendimiento y errores de actualización del clúster. Puede usar --fqdn-subdomain <subdomain> solo con <custom-private-dns-zone-resource-id> para proporcionar funcionalidades de subdominio para privatelink.<region>.azmk8s.io. Si especifica una subzona, hay un límite de 32 caracteres para el <subzone> nombre.

Tenga en cuenta las siguientes consideraciones al configurar DNS privado para un clúster de AKS privado:

  • Si la zona DNS privada está en una suscripción diferente del clúster de AKS, debe registrar el proveedor de Azure Microsoft.ContainerServices en ambas suscripciones.
  • Si el clúster de AKS está configurado con una entidad de servicio de Active Directory, AKS no admite el uso de una identidad administrada asignada por el sistema con una zona DNS privada personalizada. El clúster debe usar autenticación de identidad administrada asignada por el usuario.

Creación de un clúster de AKS privado con una zona DNS privada

  1. Cree un clúster de AKS privado con una zona DNS privada mediante el az aks create comando .

    Parámetros clave en este comando:

    • --enable-private-cluster: habilita el modo de clúster privado.
    • --private-dns-zone [system|none]: configura la zona DNS privada para el clúster. El valor predeterminado es system.
    • --assign-identity <resource-id>: el identificador de recurso de una identidad administrada asignada por el usuario con los roles Colaborador de zona DNS privada y Colaborador de red .
    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resource-id> \
        --private-dns-zone [system|none] \
        --generate-ssh-keys
    
  2. Configure kubectl para conectarse al clúster de AKS privado.

Creación de un clúster de AKS privado con una zona DNS privada o una subzona DNS privada personalizada

  1. Cree un clúster de AKS privado con una zona DNS privada personalizada o una subzona mediante el az aks create comando .

    Parámetros clave en este comando:

    • --enable-private-cluster: habilita el modo de clúster privado.
    • --private-dns-zone <custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>: el identificador de recurso de una zona DNS privada o una subzona precreadas en el siguiente formato para la nube global de Azure: privatelink.<region>.azmk8s.io o <subzone>.privatelink.<region>.azmk8s.io.
    • --assign-identity <resource-id>: el identificador de recurso de una identidad administrada asignada por el usuario con los roles Colaborador de zona DNS privada y Colaborador de red .
    # The custom private DNS zone name should be in the following format: "<subzone>.privatelink.<region>.azmk8s.io"
    
    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resource-id> \
        --private-dns-zone [<custom-private-dns-zone-resource-id>|<custom-private-dns-subzone-resource-id>] \
        --generate-ssh-keys
    
  2. Configure kubectl para conectarse al clúster de AKS privado.

Creación de un clúster de AKS privado con una zona DNS privada personalizada y un subdominio personalizado

  1. Cree un clúster de AKS privado con una zona DNS privada personalizada y un subdominio mediante el az aks create comando .

    Parámetros clave en este comando:

    • --enable-private-cluster: habilita el modo de clúster privado.
    • --private-dns-zone <custom-private-dns-zone-resource-id>: el identificador de recurso de una zona DNS privada precreada en el siguiente formato para la nube global de Azure: privatelink.<region>.azmk8s.io.
    • --fqdn-subdomain <subdomain>: subdominio que se va a usar para el FQDN del clúster dentro de la zona DNS privada personalizada.
    • --assign-identity <resource-id>: el identificador de recurso de una identidad administrada asignada por el usuario con los roles Colaborador de zona DNS privada y Colaborador de red .
    # The custom private DNS zone name should be in one of the following formats: "privatelink.<region>.azmk8s.io" or "<subzone>.privatelink.<region>.azmk8s.io"
    
    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resource-id> \
        --private-dns-zone <custom-private-dns-zone-resource-id> \
        --fqdn-subdomain <subdomain> \
        --generate-ssh-keys
    
  2. Configure kubectl para conectarse al clúster de AKS privado.

Actualización de un clúster de AKS privado existente desde una zona DNS privada a pública

Solo puede actualizar de byo (BYO) o system a none. No se admite ninguna otra combinación de valores de actualización.

Advertencia

Al actualizar un clúster privado de byo o system a none, los nodos del agente cambian para usar un FQDN público. En un clúster de AKS que usa Virtual Machine Scale Sets de Azure, se realiza una actualización de la imagen del nodo para actualizar los nodos con el FQDN público.

  • Actualice un clúster privado de byo u system a none usando el comando az aks update con el parámetro --private-dns-zone establecido en none.

    az aks update \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --private-dns-zone none
    

Configuración de kubectl para conectarse a un clúster de AKS privado

Para administrar un clúster de Kubernetes, use kubectl, el cliente de línea de comandos de Kubernetes. Si usa Azure Cloud Shell, kubectl ya está instalado. Para instalar kubectl localmente, use el comando az aks install-cli.

  1. Configure kubectl para conectarse a su clúster de Kubernetes utilizando 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 <private-cluster-resource-group> --name <private-cluster-name>
    
  2. Compruebe la conexión al clúster con el comando kubectl get. Este comando devuelve una lista de los nodos del clúster.

    kubectl get nodes
    

    El comando devuelve una salida similar a la salida de ejemplo siguiente:

    NAME                                STATUS   ROLES   AGE    VERSION
    aks-nodepool1-12345678-vmss000000   Ready    agent   3h6m   v1.15.11
    aks-nodepool1-12345678-vmss000001   Ready    agent   3h6m   v1.15.11
    aks-nodepool1-12345678-vmss000002   Ready    agent   3h6m   v1.15.11