Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los nodos de AKS no necesitan sus propias direcciones IP públicas para la comunicación. Sin embargo, los escenarios pueden requerir que los nodos de un grupo de nodos reciban sus propias direcciones IP públicas dedicadas. Un escenario común es para las cargas de trabajo de juegos, en las que se necesita una consola para tener una conexión directa a una máquina virtual en la nube para minimizar los saltos. Este escenario se puede conseguir en AKS mediante el uso de la dirección IP pública del nodo.
En primer lugar, cree un nuevo grupo de recursos.
az group create --name <resourceGroup> --location <region>
Cree un clúster de AKS y conecte una dirección IP pública para los nodos. Cada uno de los nodos del grupo de nodos recibe una dirección IP pública única. Puede comprobarlo si examina las instancias del conjunto de escalado de máquinas virtuales.
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--generate-ssh-keys
En el caso de los clústeres de AKS que ya existan, también puede agregar un nuevo grupo de nodos y asociar una dirección IP pública para los nodos.
az aks nodepool add --resource-group <resourceGroup> --cluster-name <aksClusterName> --name <newNodePool> --enable-node-public-ip
Uso de un prefijo de dirección IP pública
Existen varias ventajas al usar un prefijo de dirección IP pública. AKS admite el uso de direcciones de un prefijo de dirección IP pública existente para los nodos pasando el identificador de recurso con la marca --node-public-ip-prefix-id al crear un nuevo clúster o agregar un grupo de nodos.
En primer lugar, cree un prefijo de dirección IP pública mediante az network public-ip prefix create:
az network public-ip prefix create --length 28 --location <region> --name <publicIPPrefixName> --resource-group <resourceGroup>
Vea la salida y tome nota de id para el prefijo:
{
...
"id": "/subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName>",
...
}
Por último, al crear un nuevo clúster o al agregar un nuevo grupo de nodos, use la marca --node-public-ip-prefix-id y pase el identificador de recurso del prefijo:
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--node-public-ip-prefix-id /subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName> \
--generate-ssh-keys
Usar un prefijo IP público de doble pila (versión preliminar)
Puede asignar direcciones IP públicas IPv4 e IPv6 a cada nodo de un grupo de nodos mediante prefijos ip públicos en un clúster de pila doble. Esta característica es útil para las cargas de trabajo que requieren conectividad directa entrante o saliente a través de IPv4 e IPv6, o para las aplicaciones que operan en entornos que requieren el cumplimiento de IPv6.
Hay dos configuraciones admitidas:
- Traiga sus propios prefijos IPv4 e IPv6. Cada nodo recibe una dirección IPv4 de su prefijo IPv4 y una dirección IPv6 de su prefijo IPv6. Use esta configuración cuando ambas direcciones necesiten provenir de intervalos de direcciones que controle, como cuando un firewall o un servicio asociado solo permite el tráfico desde los prefijos que controla.
- Traiga solo su propio prefijo IPv6. Cada nodo recibe una dirección IPv6 del prefijo IPv6 y Azure asigna automáticamente la dirección IPv4. Use esta configuración cuando solo la dirección IPv6 necesite provenir de un intervalo que usted controla. Dado que el grupo de nodos no consume direcciones de un prefijo IPv4, el tamaño de un prefijo IPv4 no limita hasta cuántos nodos puede escalar el grupo de nodos.
Importante
Las características en versión preliminar de AKS están disponibles como opción de participación y autoservicio. 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. Las versiones preliminares de AKS reciben cobertura parcial del servicio de asistencia al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:
Requisitos
Para usar prefijos de IP pública de pila doble con IP públicas de nodo, asegúrese de que se cumplan los siguientes requisitos previos:
- El clúster está configurado como un clúster de doble pila con las familias de direcciones IP IPv4 e IPv6. Se requiere un clúster de doble pila para ambas configuraciones, incluida la configuración de prefijo solo IPv6.
- El clúster usa Azure CNI con redes superpuestas.
- Ha creado los prefijos de dirección IP pública que planea usar en la misma suscripción y región que el clúster de AKS. En función de la configuración que elija, necesita un prefijo IPv4 y un prefijo IPv6 o un único prefijo IPv6.
- Cada prefijo de DIRECCIÓN IP pública usa la SKU estándar y no está asociada a un equilibrador de carga.
- La identidad del clúster de AKS tiene permiso para administrar los prefijos de dirección IP pública. Si los prefijos están en un grupo de recursos diferente, asigne el rol Colaborador de red en ese grupo de recursos a la identidad del clúster.
Registro de las características en versión preliminar
La compatibilidad con prefijos de IP pública de doble pila (IPv4 e IPv6) para las direcciones IP públicas de los nodos está disponible actualmente como versión preliminar. Antes de poder usar esta funcionalidad, debe instalar o actualizar la extensión de la CLI de Azure y registrar los indicadores de características NodePublicIPv6PrefixPreview en su suscripción.
Instale o actualice la extensión aks-preview:
az extension add --name aks-preview --upgrade
Registre las características de versión preliminar necesarias:
az feature register --namespace Microsoft.ContainerService --name NodePublicIPv6PrefixPreview
Los registros de características pueden tardar varios minutos en completarse. Para comprobar el estado del registro, ejecute:
az feature show --namespace Microsoft.ContainerService --name NodePublicIPv6PrefixPreview --query "properties.state"
Espere hasta que la característica notifique el estado Registered antes de continuar.
Una vez registradas las marcas de características, actualice el proveedor de recursos para asegurarse de que se aplican los cambios:
az provider register --namespace Microsoft.ContainerService
Una vez completado el registro, puede crear o actualizar un clúster para usar prefijos de IP públicas de doble pila para direcciones IP públicas de nodo.
Crear prefijos de IP pública
Cree un prefijo de DIRECCIÓN IP pública para IPv4 e IPv6 mediante el CLI de Azure. Si tiene previsto usar la configuración de prefijo solo IPv6, cree solo el prefijo IPv6.
Para IPv4:
az network public-ip prefix create \
--resource-group <resourceGroup> \
--name <ipv4PrefixName> \
--location <region> \
--length 28 \
--sku Standard \
--version IPv4
Para IPv6:
az network public-ip prefix create \
--resource-group <resourceGroup> \
--name <ipv6PrefixName> \
--location <region> \
--length 124 \
--sku Standard \
--version IPv6
Después de crear los prefijos, anote el identificador de recurso de cada prefijo.
Cree un clúster con prefijos de IP pública de los nodos de doble pila
Al crear un nuevo clúster de AKS, use el --node-public-ip-prefix-ids parámetro para especificar los prefijos de dirección IP pública IPv4 e IPv6.
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--ip-families IPv4,IPv6 \
--network-plugin azure \
--network-plugin-mode overlay \
--node-public-ip-prefix-ids "<ipv4PrefixResourceId>,<ipv6PrefixResourceId>" \
--generate-ssh-keys
El --node-public-ip-prefix-ids parámetro acepta una lista separada por comas de identificadores de recursos de prefijo de IP pública. La lista puede contener como máximo un prefijo IPv4 y un prefijo IPv6. El orden no importa, ya que AKS determina la versión ip de cada prefijo al que se hace referencia.
Agregar un grupo de nodos con prefijos de IP pública de nodo de doble pila
También puede agregar un grupo de nodos con prefijos de dirección IP pública de nodo de pila doble a un clúster de pila doble existente.
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--enable-node-public-ip \
--node-public-ip-prefix-ids "<ipv4PrefixResourceId>,<ipv6PrefixResourceId>"
Usar un prefijo de dirección IP pública solo IPv6
Si solo necesita que la dirección IPv6 proceda de un prefijo que controle, especifique un único prefijo IPv6. Cada nodo recibe una dirección IPv6 del prefijo y Azure asigna automáticamente la dirección IPv4. El grupo de nodos todavía requiere un clúster de doble pila.
Use esta configuración cuando el tamaño de un prefijo IPv4 limitaría, de lo contrario, la escalabilidad del grupo de nodos. Dado que el grupo de nodos no obtiene direcciones IPv4 de un prefijo, solo la capacidad del prefijo IPv6 limita el número de nodos.
Cree un clúster nuevo con un prefijo de IP pública del nodo de solo IPv6:
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--ip-families IPv4,IPv6 \
--network-plugin azure \
--network-plugin-mode overlay \
--node-public-ip-prefix-ids "<ipv6PrefixResourceId>" \
--generate-ssh-keys
Agregue un grupo de nodos con un prefijo ip pública de nodo de solo IPv6 a un clúster de pila doble existente:
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--enable-node-public-ip \
--node-public-ip-prefix-ids "<ipv6PrefixResourceId>"
Dado que Azure asigna automáticamente la dirección IPv4, la dirección IPv4 de cada nodo no es predecible y no se puede agregar a una lista de permitidos de antemano. Como resultado, no puede usar un prefijo ip pública solo IPv6 en un clúster que use intervalos IP autorizados del servidor de API. En su lugar, use la integración con red virtual del servidor de API o un clúster privado, o incluya un prefijo IPv4 en la lista.
Verifique la configuración del prefijo de IP pública del nodo
Confirme qué prefijos usa un grupo de nodos con el comando az aks nodepool show :
az aks nodepool show \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--query "networkProfile.nodePublicIPPrefixIDs"
Enumere las direcciones IP públicas que los nodos recibieron con el comando az vmss list-instance-public-ips . Use el grupo de recursos del nodo:
az vmss list-instance-public-ips \
--resource-group <MC_resourceGroup_aksClusterName_region> \
--name <virtualMachineScaleSetName> \
--query "[].{name:name, ipAddress:ipAddress, version:publicIPAddressVersion}" \
--output table
Para un prefijo solo IPv6, cada nodo tiene una dirección IPv6 del prefijo y una dirección IPv4 del grupo de direcciones administradas por Azure.
Limitaciones
Las siguientes limitaciones se aplican a los prefijos de IP públicas para direcciones IP públicas de nodo.
Lista de prefijos:
- La lista de prefijos puede contener como máximo un prefijo IPv4 y un prefijo IPv6. Se rechazan dos prefijos de la misma versión de IP.
- Debe habilitar las IP públicas de los nodos en el grupo de nodos al especificar prefijos.
- No puede usar los parámetros
--node-public-ip-prefix-idsy--node-public-ip-prefix-iden el mismo comando. - La configuración de ip pública del nodo es inmutable. Para cambiar los prefijos de dirección IP pública, debe crear un nuevo grupo de nodos y migrar cargas de trabajo.
Recursos de prefijo:
- Cada prefijo debe usar la SKU estándar. No se admiten prefijos Basic y Standard V2.
- Cada prefijo debe estar en la misma suscripción y en la misma región que el clúster de AKS.
- No se puede usar un prefijo que ya esté asociado a un equilibrador de carga.
- Si el grupo de nodos usa zonas de disponibilidad, las zonas de cada prefijo deben cubrir las zonas del grupo de nodos. Un prefijo con redundancia de zona, que no tiene zonas asignadas, funciona con cualquier grupo de nodos.
Capacidad y escala:
- Cada prefijo debe tener suficientes direcciones para el recuento de nodos del grupo de nodos, ya que cada nodo consume una dirección de cada prefijo que proporcione.
- Cluster Autoscaler se admite, pero asegúrese de que el número máximo de nodos configurado no supera el número de direcciones IP disponibles en cada prefijo que proporcione. Si usa un prefijo de solo IPv6, solo el prefijo IPv6 limita el número de nodos, ya que Azure asigna automáticamente las direcciones IPv4.
Compatibilidad de características:
- No puede usar un prefijo ip pública solo IPv6 en un clúster que use intervalos IP autorizados del servidor de API, ya que Azure asigna automáticamente la dirección IPv4 del nodo y no se puede agregar a una lista de permitidos de antemano. Usar la integración de VNet del servidor API o un clúster privado, o incluir un prefijo IPv4 en la lista.
- A cada nodo se le asigna una única dirección IP pública IPv6.
- Esta característica no es compatible con AKS Automatic ni con el aprovisionamiento automático de nodos.
- No se admiten grupos de nodos de varias NIC.
Búsqueda de direcciones IP públicas para nodos
Puede buscar las direcciones IP públicas de los nodos de varias maneras:
- Use el comando
az vmss list-instance-public-ipsde la CLI de Azure. - Use comandos de PowerShell o Bash.
- También puede ver las direcciones IP públicas en Azure Portal visualizando las instancias del conjunto de escalado de máquinas virtuales.
Importante
El grupo de recursos de nodo contiene los nodos y sus direcciones IP públicas. Use el grupo de recursos de nodo al ejecutar comandos para buscar las direcciones IP públicas de los nodos.
az vmss list-instance-public-ips --resource-group <MC_region_aksClusterName_region> --name <virtualMachineScaleSetName>
Utilizar etiquetas IP públicas en las IP públicas de los nodos
Las etiquetas ip públicas se pueden usar en direcciones IP públicas del nodo para usar la característica preferencias de enrutamiento de Azure , que está disponible en regiones especificadas.
Requisitos
- Se requiere AKS, versión 1.29 o posterior.
Creación de un clúster con preferencia de enrutamiento de Internet
az aks create \
--name <aksClusterName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet \
--generate-ssh-keys
Adición de un grupo de nodos con preferencia de enrutamiento de Internet
az aks nodepool add --cluster-name <aksClusterName> \
--name <nodePoolName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet
Permiso para conexiones de puerto de host y adición de grupos de nodos a grupos de seguridad de aplicaciones
Los nodos de AKS que usan direcciones IP públicas de nodo que hospedan servicios en su dirección de host deben tener agregada una regla de NSG para permitir el tráfico. Al agregar los puertos deseados en la configuración del grupo de nodos, se crearán las reglas de permiso adecuadas en el grupo de seguridad de red del clúster.
Si un grupo de seguridad de red está implementado en la subred con un clúster mediante una red virtual de tipo "traiga la suya propia", se debe agregar una regla de permiso a ese grupo de seguridad de red. Esto se puede limitar a los nodos de un grupo de nodos determinado agregando el grupo de nodos a un grupo de seguridad de aplicaciones (ASG). Se creará un ASG administrado de forma predeterminada en el grupo de recursos administrado si se especifican los puertos host permitidos. Los nodos también se pueden agregar a uno o varios ASG personalizados especificando el identificador de recurso del ASG en los parámetros del grupo de nodos.
Formato de especificación del puerto de host
Al especificar la lista de puertos que se van a permitir, use una lista separada por comas con entradas en el formato de port/protocol o startPort-endPort/protocol.
Ejemplos:
- 80/tcp
- 80/tcp,443/tcp
- 53/udp,80/tcp
- 50000-60000/tcp
Requisitos
- Se requiere AKS, versión 1.29 o posterior.
Creación de un clúster con puertos permitidos y grupos de seguridad de aplicaciones
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--nodepool-name <nodePoolName> \
--nodepool-allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp\
--nodepool-asg-ids "<asgId>,<asgId>" \
--generate-ssh-keys
Adición de un nuevo grupo de nodos con puertos permitidos y grupos de seguridad de aplicaciones
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
--asg-ids "<asgId>,<asgId>"
Actualización de los puertos permitidos y los grupos de seguridad de aplicaciones para un grupo de nodos
az aks nodepool update \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
--asg-ids "<asgId>,<asgId>"
Asignación automática de puertos de host para cargas de trabajo de pod (VERSIÓN PRELIMINAR)
Cuando las direcciones IP públicas están configuradas en nodos, se pueden usar los puertos de host para permitir que los pods reciban directamente el tráfico sin tener que configurar un servicio de equilibrador de carga. Esto resulta especialmente útil en escenarios como en los juegos, donde la naturaleza efímera de la dirección IP del nodo y el puerto no es un problema porque un servicio emparejador en un nombre de host conocido puede proporcionar el host y el puerto correctos que se usarán en el momento de la conexión. Sin embargo, dado que solo un proceso de un host puede estar escuchando en el mismo puerto, el uso de aplicaciones con puertos host puede provocar problemas con la programación. Para evitar este problema, AKS proporciona la capacidad de que el sistema asigne dinámicamente un puerto disponible en el momento de la programación, lo que evita conflictos.
Advertencia
El tráfico del puerto de host del pod se bloqueará mediante las reglas de NSG predeterminadas implementadas en el clúster. Esta característica debe combinarse con la autorización para los puertos de host del grupo de nodos para permitir que el tráfico fluya.
Importante
Las características en versión preliminar de AKS están disponibles como opción de participación y autoservicio. 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. Las versiones preliminares de AKS reciben cobertura parcial del servicio de asistencia al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:
Requisitos
- Se requiere AKS, versión 1.29 o posterior.
Registro de la marca de características "PodHostPortAutoAssignPreview"
Registre la marca de característica PodHostPortAutoAssignPreview con el comando az feature register, como se muestra en el siguiente ejemplo:
az feature register --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Tarda unos minutos en que el estado muestre Registrado. Para comprobar el estado de registro se usa el comando az feature show:
az feature show --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Cuando aparezca el estado Registrado, actualice el registro del proveedor de recursos Microsoft.ContainerService mediante el comando az provider register:
az provider register --namespace Microsoft.ContainerService
Asignación automática de un puerto de host a un pod
El desencadenamiento de la asignación automática de puertos de host se realiza mediante la implementación de una carga de trabajo sin ningún puerto de host y la aplicación de la anotación kubernetes.azure.com/assign-hostports-for-containerports con la lista de puertos que necesitan asignaciones de puertos de host. El valor de la anotación debe especificarse como una lista separada por comas de entradas como port/protocol, donde el puerto es un número de puerto individual definido en la especificación de pod y el protocolo es tcp o udp.
Los puertos se asignarán desde el intervalo 40000-59999 y serán únicos en todo el clúster. Los puertos asignados también se agregarán a las variables de entorno dentro del pod para que la aplicación pueda determinar qué puertos se asignaron. El nombre de la variable de entorno tendrá el siguiente formato (ejemplo a continuación): <deployment name>_PORT_<port number>_<protocol>_HOSTPORT. Así, un ejemplo sería mydeployment_PORT_8080_TCP_HOSTPORT: 41932.
Esta es una implementación echoserver de ejemplo que muestra la asignación de puertos de host para los puertos 8080 y 8443:
apiVersion: apps/v1
kind: Deployment
metadata:
name: echoserver-hostport
labels:
app: echoserver-hostport
spec:
replicas: 3
selector:
matchLabels:
app: echoserver-hostport
template:
metadata:
annotations:
kubernetes.azure.com/assign-hostports-for-containerports: 8080/tcp,8443/tcp
labels:
app: echoserver-hostport
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- name: echoserver-hostport
image: k8s.gcr.io/echoserver:1.10
ports:
- name: http
containerPort: 8080
protocol: TCP
- name: https
containerPort: 8443
protocol: TCP
Cuando se aplica la implementación, las entradas hostPort estarán en el archivo YAML de los pods individuales:
$ kubectl describe pod echoserver-hostport-75dc8d8855-4gjfc
<cut for brevity>
Containers:
echoserver-hostport:
Container ID: containerd://d0b75198afe0612091f412ee7cf7473f26c80660143a96b459b3e699ebaee54c
Image: k8s.gcr.io/echoserver:1.10
Image ID: k8s.gcr.io/echoserver@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229 Ports: 8080/TCP, 8443/TCP
Host Ports: 46645/TCP, 49482/TCP
State: Running
Started: Thu, 12 Jan 2023 18:02:50 +0000
Ready: True
Restart Count: 0
Environment:
echoserver-hostport_PORT_8443_TCP_HOSTPORT: 49482
echoserver-hostport_PORT_8080_TCP_HOSTPORT: 46645
Pasos siguientes
Obtenga información sobre el uso de varios grupos de nodos en AKS.
Más información sobre el uso de equilibradores de carga estándar en AKS.