Partekatu honen bidez:


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 ningún vínculo privado o túnel, consulte Creación de un clúster de Azure Kubernetes Service con API Server VNet Integration (Versión preliminar).

Información general

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 la API y de un punto de conexión privado expuesto en la subred del clúster de AKS.

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 DNS privada, 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 regional

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

Requisitos previos

  • La CLI de Azure versión 2.28.0 o posterior. Ejecute az --version para buscar la versión y ejecute az upgrade para actualizar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.
  • La extensión aks-preview, versión 0.5.29 o una posterior.
  • Si usa Azure Resource Manager (ARM) o la API REST de Azure, la versión de la API de AKS debe ser 2021-05-01 o superior.
  • Para usar un servidor DNS personalizado, agrega la dirección IP pública de Azure 168.63.129.16 como el servidor DNS ascendente en el servidor DNS personalizado y asegúrese de agregar esta dirección IP pública como el primer servidor DNS. Para más información sobre la dirección IP de Azure, consulte ¿Qué es la dirección IP 168.63.129.16?
  • Los clústeres de AKS existentes habilitados con la integración con red virtual del servidor de API pueden tener habilitado el modo de clúster privado. Para más información, consulte Activar o desactivar el modo de clúster privado en un clúster existente con la integración VNet del servidor API.

Nota:

El grupo de nodos de Linux en Azure ahora está disponible con carácter general (GA). Para obtener información sobre las ventajas y los pasos de implementación, vea Introducción al host de contenedor linux de Azure para AKS.

Limitaciones

  • Los intervalos autorizados de direcciones IP no se pueden aplicar al punto de conexión del servidor de API privada. Solo se aplican al servidor de API pública.
  • 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 del registro de contenedor y la del clúster privado.
  • 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.
  • El servicio Azure Private Link solo se admite en Standard Azure Load Balancer. No se admite en Basic Azure Load Balancer.

Creación de un clúster privado de AKS

  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.

    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --generate-ssh-keys
    

Conexión al clúster 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, use 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
    

Uso de dominios personalizados

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

Deshabilitación de un FQDN público

Deshabilitación de 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 <resourceID> \
        --private-dns-zone <private-dns-zone-mode> \
        --disable-public-fqdn \
        --generate-ssh-keys
    

Deshabilitación de 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

Puede configurar zonas DNS privadas mediante los parámetros siguientes:

  • system: este es 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: el valor predeterminado es DNS público. AKS no creará una zona DNS privada.
  • CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID: requiere la creación de una zona DNS privada en el formato siguiente para la nube global de Azure: privatelink.<region>.azmk8s.io o <subzone>.privatelink.<region>.azmk8s.io. Necesitará el identificador de recurso de la zona DNS privada para su uso futuro. También necesita una identidad asignada por el usuario o una entidad de servicio con los roles colaborador de zona DNS privada y colaborador de red. Al implementar mediante la integración con red virtual de un 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.
    • 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.
    • Puede usar fqdn-subdomain solo con CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID para proporcionar funcionalidades de subdominio para privatelink.<region>.azmk8s.io.
    • 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.
    • Si especifica un <subzone>, hay un límite de 32 caracteres para el nombre de <subzone>.

Nota:

Puede configurar CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID mediante una plantilla de ARM o la CLI de Azure. privateDNSZone acepta el resourceID de zona DNZ privada, como se muestra en el ejemplo siguiente:

properties.apiServerAccessProfile.privateDNSZone.
"apiServerAccessProfile": {
"enablePrivateCluster": true,
"privateDNSZone": "system|none|[resourceId(..., 'Microsoft.Network/privateDnsZones', 'privatelink.<region>.azmk8s.io']"
}

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

  • Cree un clúster de AKS privado con una zona DNS privada mediante el comando az aks create con las marcas siguientes:

    az aks create \
        --name <private-cluster-name> \
        --resource-group <private-cluster-resource-group> \
        --load-balancer-sku standard \
        --enable-private-cluster \
        --assign-identity <resourceID> \
        --private-dns-zone [system|none] \
        --generate-ssh-keys
    

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

  • Cree un clúster de AKS privado con una zona o subzona DNS privada personalizada mediante el comando az aks create con las marcas siguientes:

    # 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 <resourceID> \
        --private-dns-zone <custom private dns zone or custom private dns subzone resourceID> \
        --generate-ssh-keys
    

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

  • Cree un clúster de AKS privado con una zona DNS privada personalizada o un subdominio personalizado mediante el comando az aks create con las marcas siguientes:

    # 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 <resourceID> \
        --private-dns-zone <custom private dns zone resourceID> \
        --fqdn-subdomain <subdomain> \
        --generate-ssh-keys
    

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

Solo puede actualizar de byo o system a none. No se admite ninguna otra combinación de valores de actualización. Antes de actualizar, asegúrese de conectarse al clúster privado.

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 desde byo o system a none mediante el comando az aks update con las marcas siguientes:

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

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, necesita 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:

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

Si desea usar el emparejamiento de red virtual, tiene que configurar un vínculo entre la red virtual y la zona DNS privada.

  1. En Azure Portal, navegue hasta su grupo de recursos de nodo y seleccione su recurso de zona DNS privada.
  2. En el menú de servicio, en Administración de DNS, seleccione Vínculos de red virtuales>Añadir.
  3. En la página Agregar vínculo de red virtual, establezca la configuración siguiente:
    • Nombre del vínculo: escriba un nombre para el vínculo de red virtual.
    • Red virtual: seleccione la red virtual que contiene la máquina virtual.
  4. Seleccione Crear para crear el vínculo de red virtual.
  5. Navegue hasta el grupo de recursos que contiene la red virtual de su clúster y seleccione su recurso de red virtual.
  6. En el menú de servicios, en Configuración, seleccione Emparejamientos>Agregar.
  7. En la página Agregar emparejamiento, establezca la siguiente configuración:
    • Nombre del vínculo de emparejamiento: escriba un nombre para el vínculo de emparejamiento.
    • Red virtual: seleccione la red virtual de la máquina virtual.
  8. Seleccione Agregar para crear el vínculo 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.

Concentrador y radio de clúster privado

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 manera 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). Para evitar errores de clúster durante la implementación inicial, el clúster se puede implementar con el identificador de recurso de zona DNS privado. Esto solo funciona con el tipo de recurso Microsoft.ContainerService/managedCluster y la versión de API 2022-07-01. No se admite el uso de una versión anterior con una plantilla de ARM o una definición de recurso de Bicep.

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 clústeres privados, 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 red virtual para comunicarse con el clúster privado. Cree un nuevo punto de conexión privado en la red virtual que contenga los recursos de consumo y, después, cree un vínculo entre su red virtual y una nueva zona DNS privada en la misma red.

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.

Creación de un recurso de punto de conexión privado

Cree un recurso de punto de conexión privado en la red virtual:

  1. En la página principal de Azure Portal, seleccione Crear un recurso.
  2. Busque Punto de conexión privado y seleccione Crear>Punto de conexión privado.
  3. Seleccione Crear.
  4. En la pestaña Información básica, configure los siguientes valores:
    • Detalles del proyecto
      • Suscripción: seleccione la suscripción donde se encuentra el clúster privado.
      • Grupo de recursos: seleccione el grupo de recursos que contiene su red virtual.
    • Detalles de instancia
      • Nombre: escriba un nombre para su punto de conexión privado, como myPrivateEndpoint.
      • Región: seleccione la misma región que su red virtual.
  5. Seleccione Siguiente: Recurso y configure las opciones siguientes:
    • Método de conexión: seleccione Conectarse a un recurso Azure en mi directorio.
    • Suscripción: seleccione la suscripción donde se encuentra el clúster privado.
    • Tipo de recurso: seleccione Microsoft.ContainerService/managedClusters.
    • Recurso: seleccione el clúster privado.
    • Subrecurso de destino: seleccione administración.
  6. Seleccione Siguiente: Red virtual y configure las opciones siguientes:
    • Redes
      • Red virtual: Seleccione la red virtual.
      • Subred: seleccione la subred.
  7. Seleccione Siguiente: DNS>Siguiente: Etiquetas y (opcionalmente) configure los valores de clave según sea necesario.
  8. Seleccione Siguiente: Revisar y crear>Crear.

Una vez creado el recurso, registre la dirección IP privada del punto de conexión privado para su uso futuro.

Crear una zona DNS privada

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. Recuerde crear esta zona DNS en la red virtual que contiene los recursos de consumo.

  1. En Azure Portal, vaya a su grupo de recursos de nodo y seleccione su recurso de zona DNS privada.
  2. En el menú de servicio, en Administración de DNS, seleccione Conjuntos de registros y observe lo siguiente:
    • Nombre de la zona DNS privada, que sigue el patrón *.privatelink.<region>.azmk8s.io.
    • Nombre del registro A (excepto el nombre DNS privado).
    • Período de vida (TTL).
  3. En la página principal de Azure Portal, seleccione Crear un recurso.
  4. Busque Zona DNS privada y seleccione Crear>Zona DNS privada.
  5. En la pestaña Información básica, configure los siguientes valores:
    • Detalles del proyecto:
      • Seleccione su suscripción.
      • Seleccione el grupo de recursos donde creó el punto de conexión privado.
    • Detalles de instancia
      • Nombre: escriba el nombre de la zona DNS recuperada en los pasos anteriores.
      • El valor predeterminado de la Región es la ubicación del grupo de recursos.
  6. Seleccione Revisar y crear>Crear.

Creación de un registro A

Una vez creada la zona DNS privada, cree un registro A, que asocia el punto de conexión privado al clúster privado:

  1. Vaya a la zona DNS privada creada en los pasos anteriores.
  2. En el menú de servicio, en Administración de DNS, seleccione Conjuntos de registros>Agregar.
  3. En la página Agregar conjunto de registros, establezca la siguiente configuración:
    • Nombre: introduzca el nombre recuperado del registro A en la zona DNS del clúster privado.
    • Tipo: seleccione A: registro de dirección.
    • TTL: escriba el número del registro A en la zona DNS del clúster privado.
    • 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: escriba la dirección IP del punto de conexión privado que ha creado.
  4. Seleccione Agregar para crear el registro A.

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:

  1. Vaya a la zona DNS privada creada en los pasos anteriores.
  2. En el menú de servicio, en Administración de DNS, seleccione Vínculos de red virtuales>Añadir.
  3. En la página Agregar vínculo de red virtual, establezca la configuración siguiente:
    • Nombre del vínculo: escriba un nombre para el vínculo de red virtual.
    • Suscripción: seleccione la suscripción donde se encuentra el clúster privado.
    • Red virtual: seleccione la red virtual del clúster privado.
  4. Seleccione Crear para crear el vínculo.

La operación puede tardar unos minutos en completarse. Una vez creado el vínculo de red virtual, puede acceder a él desde la pestaña Vínculos de red virtual que usó en el paso 2.

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. Si los puntos de conexión privados recreados tienen nuevas direcciones IP, también deberá actualizar los registros DNS.
  • Si actualiza los registros DNS en la zona DNS privada, asegúrese de que el host desde el que intenta conectarse usa los registros DNS actualizados. Puede comprobarlo mediante el comando nslookup. Si observa que las actualizaciones no se reflejan en la salida, es posible que tenga que vaciar la caché DNS en el equipo e intentarlo de nuevo.

Pasos siguientes

Para los procedimientos recomendados asociados, consulte Procedimientos recomendados con la conectividad de red y la seguridad en Azure Kubernetes Service (AKS).