Compartir a través de


Creación de un clúster de Azure Kubernetes Service con integración con red virtual del servidor de API

Un clúster de Azure Kubernetes Service (AKS) configurado con API Server VNet Integration proyecta el punto de conexión del servidor de API directamente en una subred delegada de la red virtual donde se implementa AKS. API Server VNet Integration permite la comunicación de red entre el servidor de API y los nodos del clúster sin necesidad de ningún vínculo privado o túnel. El servidor de API está disponible detrás de una dirección IP virtual de equilibrador de carga interno en la subred delegada, que los nodos estarán configurados para usar. Mediante API Server VNet Integration, puede asegurarse de que el tráfico de red entre el servidor de API y los grupos de nodos permanece solo en la red privada.

Conectividad del servidor de API

El plano de control o el servidor de la API están en una suscripción de Azure administrada mediante AKS. El grupo de clústeres o nodos se encuentra en la suscripción de Azure. El servidor y las máquinas virtuales que componen los nodos del clúster se pueden comunicar entre sí mediante la dirección IP virtual del servidor de API y las direcciones IP del pod que se proyectan en la subred delegada.

API Server VNet Integration se admite en clústeres públicos y privados. Puede agregar o quitar el acceso público después del aprovisionamiento del clúster. A diferencia de los clústeres integrados que no son de red virtual, los nodos del agente siempre se comunican directamente con la dirección IP privada de la dirección IP del equilibrador de carga interno (ILB) del servidor de API sin usar DNS. Todo el tráfico del nodo al servidor de API se mantiene en redes privadas y no se requiere ningún túnel para la conectividad del servidor de API al nodo. Los clientes fuera del clúster que necesitan comunicarse con el servidor de API pueden hacerlo normalmente si está habilitado el acceso a la red pública. Si el acceso a la red pública está deshabilitado, debe seguir la misma metodología de configuración de DNS privada que los clústeres privados estándar.

Requisitos previos

  • Debe tener instalada la versión 2.73.0 o posterior de la CLI de Azure. Puede comprobar la versión mediante el az --version comando .

Limitaciones

  • La integración con red virtual del servidor de API no admite el cifrado de red virtual. Los clústeres implementados en las SKU de nodo de AKS v3 o anteriores (que no admiten el cifrado de red virtual) se permiten, pero no se cifrará el tráfico. Los clústeres implementados en nodos SKU de AKS v4 o posterior (que admiten cifrado de VNet) están bloqueados debido a que las VNets cifradas no son compatibles con la Integración de VNet del servidor API. Consulte SKU de máquina virtual compatibles con AKS para más información.

Disponibilidad

  • La integración con red virtual de servidor de API está disponible en todas las regiones de nube pública de disponibilidad general, excepto eastus2 y qatarcentral. Estamos trabajando continuamente para habilitar esta característica en estas regiones y actualizaremos esta página cuando estas regiones estén disponibles.

Creación de un clúster de AKS con API Server VNet Integration mediante una red virtual administrada

Se pueden configurar los clústeres de AKS con API Server VNet Integration en una red virtual administrada o en el modo de aportación de la propia red virtual. Se pueden crear como clústeres públicos (con acceso al servidor de API disponible a través de una dirección IP pública) o clústeres privados (donde el servidor de API solo es accesible a través de la conectividad de red virtual privada). También se puede alternar entre un estado público y privado sin volver a implementar el clúster.

Crear un grupo de recursos

  • Cree un grupo de recursos con el comando az group create.

    az group create --location westus2 --name <resource-group>
    

Implementación de un clúster público

  • Implemente un clúster de AKS público con API Server VNet Integration para la red virtual administrada mediante el comando az aks create con la marca --enable-api-server-vnet-integration.

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --network-plugin azure \
        --enable-apiserver-vnet-integration \
        --generate-ssh-keys
    

Implementación de un clúster privado

  • Implemente un clúster de AKS privado con API Server VNet Integration para la red virtual administrada mediante el comando az aks create con las marcas --enable-api-server-vnet-integration y --enable-private-cluster.

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --network-plugin azure \
        --enable-private-cluster \
        --enable-apiserver-vnet-integration \
        --generate-ssh-keys
    

Crear un clúster de AKS privado con API Server VNet Integration mediante la aportación de la propia red virtual

Al usar la red traiga su propia red, debe crear y delegar una subred del servidor de API en Microsoft.ContainerService/managedClusters, lo que concede a los servicios de AKS permisos para insertar los pods del servidor de API y el equilibrador de carga interno en esa subred. No puede usar la subred para ninguna otra carga de trabajo, pero puede usarla para varios clústeres de AKS ubicados en la misma red virtual. El tamaño mínimo admitido de subred del servidor de API es /28.

La identidad del clúster necesita permisos para la subred del servidor de API y la subred del nodo. La falta de permisos en la subred del servidor de API puede provocar un error de aprovisionamiento.

Advertencia

Un clúster de AKS reserva al menos 9 direcciones IP en el espacio de direcciones de subred. La ejecución de direcciones IP puede impedir el escalado del servidor de API y provocar una interrupción del servidor de API.

Crear un grupo de recursos

az group create --location <location> --name <resource-group>

Creación de una red virtual

  1. Cree una red virtual mediante el comando az network vnet create.

    az network vnet create --name <vnet-name> \
    --resource-group <resource-group> \
    --location <location> \
    --address-prefixes 172.19.0.0/16
    
  2. Cree una subred de servidor de API mediante el comando az network vnet subnet create.

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <apiserver-subnet-name> \
    --delegations Microsoft.ContainerService/managedClusters \
    --address-prefixes 172.19.0.0/28
    
  3. Cree una subred de clúster mediante el comando az network vnet subnet create.

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <cluster-subnet-name> \
    --address-prefixes 172.19.1.0/24
    

Creación de una identidad administrada y concesión de permisos en la red virtual

  1. Crear una identidad administrada usando el comando az identity create.

    az identity create --resource-group <resource-group> --name <managed-identity-name> --location <location>
    
  2. Asigne el rol Colaborador de red a la subred del servidor de API mediante el comando az role assignment create.

    az role assignment create --scope <apiserver-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    
  3. Asigne el rol Colaborador de red a la subred del clúster mediante el comando az role assignment create.

    az role assignment create --scope <cluster-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    

Implementación de un clúster público

  • Implemente un clúster de AKS público con API Server VNet Integration mediante el comando az aks create con la marca --enable-api-server-vnet-integration.

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --network-plugin azure \
        --enable-apiserver-vnet-integration \
        --vnet-subnet-id <cluster-subnet-resource-id> \
        --apiserver-subnet-id <apiserver-subnet-resource-id> \
        --assign-identity <managed-identity-resource-id> \
        --generate-ssh-keys
    

Implementación de un clúster privado

  • Implemente un clúster de AKS privado con API Server VNet Integration mediante el comando az aks create con las marcas --enable-api-server-vnet-integration y --enable-private-cluster.

    az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys
    

Conversión de un clúster de AKS existente en la integración con red virtual del servidor de API

Advertencia

La Integración de VNet del servidor API es una característica unidireccional y sensible a la capacidad.

  • Se requiere reiniciar manualmente.
    Después de habilitar la integración con red virtual del servidor de API mediante az aks update --enable-apiserver-vnet-integration, debe reiniciar inmediatamente el clúster para que el cambio surta efecto. Este reinicio no está automatizado. Retrasar el reinicio aumenta el riesgo de que la capacidad no esté disponible, lo que puede impedir que se inicie el servidor de API.

  • La capacidad se valida, pero no está reservada.
    AKS valida la capacidad regional al habilitar la característica en un clúster existente, pero esta validación no reserva capacidad. Si el reinicio se retrasa y la capacidad deja de estar disponible mientras tanto, es posible que el clúster no se inicie después de una detención o reinicio. Los clústeres que habilitaron esta característica antes de la disponibilidad general (GA), o que todavía no se han reiniciado desde que se habilitaron, no se someterán a la validación de capacidad.

  • No se puede deshabilitar la característica.
    Una vez habilitada, la característica es permanente. No se puede deshabilitar la integración con red virtual del servidor de API.

Esta actualización realiza una actualización de la versión de imagen de nodo en todos los grupos de nodos y reinicia todas las cargas de trabajo mientras se someten a una actualización gradual de la imagen.

Advertencia

La conversión de un clúster a la integración con red virtual del servidor de API da lugar a un cambio de la dirección IP del servidor de API, aunque el nombre de host sigue siendo el mismo. Si la dirección IP del servidor de API se ha configurado en cualquier firewall o reglas de grupo de seguridad de red, es posible que sea necesario actualizar esas reglas.

  • Actualice el clúster a API Server VNet Integration mediante el comando az aks update con la marca --enable-apiserver-vnet-integration.

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-apiserver-vnet-integration \
    --apiserver-subnet-id <apiserver-subnet-resource-id>
    

Habilitación o deshabilitación del modo de clúster privado en un clúster existente con integración con red virtual del servidor de API

Los clústeres de AKS configurados con la integración con red virtual del servidor de API pueden tener habilitado el acceso a la red pública o el modo de clúster privado o deshabilitado sin volver a implementar el clúster. El nombre de host del servidor de API no cambia, pero las entradas DNS públicas se modifican o se quitan si es necesario.

Nota:

--disable-private-cluster se encuentra actualmente en versión preliminar. Para obtener más información, consulte Niveles de referencia y soporte técnico.

Habilitación del modo de clúster privado

  • Habilite el modo de clúster privado mediante el comando az aks update con la marca --enable-private-cluster.

    az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-private-cluster
    

Deshabilitación del modo de clúster privado

  • Deshabilite el modo de clúster privado mediante el comando az aks update con la marca --disable-private-cluster.

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

Conexión a un clúster mediante kubectl

  • Configure kubectl para conectarse al clúster ejecutando el comando az aks get-credentials.

    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    

Puede exponer el punto de conexión del servidor de API de un clúster privado con integración con red virtual del servidor de API mediante Azure Private Link. En los pasos siguientes se muestra cómo crear un servicio Private Link (PLS) en la red virtual del clúster y conectarse a ella desde otra red virtual o suscripción mediante un punto de conexión privado.

Creación de un clúster privado de integración con red virtual de API Server

  • Cree un clúster de AKS privado con API Server VNet Integration mediante el comando az aks create con las marcas --enable-api-server-vnet-integration y --enable-private-cluster.

    az aks create --name <cluster-name> \
        --resource-group <resource-group> \
        --location <location> \
        --enable-private-cluster \
        --enable-apiserver-vnet-integration
    

Para obtener más instrucciones sobre cómo configurar Private Link con la integración con red virtual del servidor de API, consulte Private Link con la integración con red virtual del servidor de API.

Reglas de seguridad de NSG

De manera predeterminada, se permite todo el tráfico dentro de la red virtual. Pero si ha agregado reglas de NSG para restringir el tráfico entre diferentes subredes, asegúrese de que las reglas de seguridad de NSG permiten los siguientes tipos de comunicación:

Destination Fuente Protocolo Puerto Uso
CIDR de subred de APIServer Subred de clúster TCP 443 y 4443 Necesario para habilitar la comunicación entre nodos y el servidor de API.
CIDR de subred de APIServer Azure Load Balancer TCP 9988 Necesario para habilitar la comunicación entre Azure Load Balancer y el servidor de API. También puede habilitar todas las comunicaciones entre Azure Load Balancer y el CIDR de subred del servidor de API.

Pasos siguientes