Clústeres nativos de VPC (original) (raw)

En esta página se ofrece una descripción general de los clústeres nativos de VPC en Google Kubernetes Engine (GKE).

Esta página está dirigida a arquitectos de nube y especialistas en redes que diseñan y definen la arquitectura de la red de su organización. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Roles y tareas habituales de los usuarios de GKE.

Información general

En GKE, los clústeres se pueden distinguir según la forma en que enrutan el tráfico de un pod a otro.

Un clúster que usa intervalos de direcciones IP con alias se denomina clúster nativo de VPC. Un clúster que usa rutas estáticas personalizadas en una red de VPC se denomina clúster basado en rutas.

Práctica recomendada:

Planifica y diseña la configuración de tu clúster con los arquitectos de red, los administradores de red o cualquier otro equipo de ingenieros de red de tu organización que se encargue de definir, implementar y mantener tu arquitectura de red.

Ventajas de los clústeres nativos de VPC

Los clústeres nativos de VPC ofrecen varias ventajas:

Modo de red de clúster predeterminado

El modo de red nativo de VPC es el predeterminado para todos los clústeres de GKE 1.21.0-gke.1500 y versiones posteriores. En versiones anteriores, el modo de red de clúster predeterminado depende de cómo crees el clúster.

En la siguiente tabla se muestra el modo de red de clúster predeterminado para las versiones de clúster de GKE y los métodos de creación de clústeres.

Versiones de GKE Método de creación del clúster Modo de red del clúster
Todas las versiones La Google Cloud consola VPC nativa
1.21.0-gke.1500 y versiones posteriores API de GKE o Google Cloud CLI VPC nativa

También puedes crear un clúster basado en rutas especificando la marca --no-enable-ip-alias al crear el clúster.

Intervalos de direcciones IP de clústeres nativos de VPC

Cuando creas un clúster nativo de VPC, especificas una subred en una red de VPC. El clúster usa los siguientes intervalos de direcciones IP de subred:

Asignación de direcciones IPv4

Los clústeres nativos de VPC asignan direcciones IPv4 a los nodos, los pods y los servicios de la siguiente manera.

Asignación de direcciones IPv6 (red de doble pila)

En la siguiente tabla se ofrece un resumen de los intervalos de direcciones IP de nodos, pods y servicios:

Intervalo Explicación Ejemplo
Nodos Las direcciones IP de los nodos se asignan desde el intervalo de direcciones IP principal de la subred asociada a tu clúster. Tanto las direcciones IP de los nodos como el tamaño del intervalo de direcciones IP secundarias de la subred para los pods limitan el número de nodos que puede admitir un clúster. Consulta losintervalos de limitación de nodos para obtener más información. Si tienes previsto crear un clúster de 900 nodos, el intervalo de direcciones IP principal de la subred del clúster debe ser al menos /22 (2(32-22) = 210 = 1024 direcciones). De esas 1024 direcciones, se pueden usar 1020, ya que cuatro direcciones IP están reservadas en cada intervalo de direcciones IP principales. Consulta más información en los artículos Intervalo de direcciones IP principales de subred e Intervalo de direcciones IP secundarias de subred para pods.
Pods Las direcciones IP de los pods se toman del intervalo de direcciones IP secundario de la subred del clúster para los pods. A menos que definas un número máximo diferente de pods por nodo, GKE asigna un /24 intervalo de IPs de alias (256 direcciones) a cada nodo para los pods que se ejecutan en él. En cada nodo, esas 256 direcciones IP de alias se utilizan para admitir hasta 110 pods. En un clúster de 900 nodos que admite hasta 110 pods por nodo, necesitas 900 × 256 = 230.400 direcciones IP para los pods. A cada nodo se le asigna un intervalo de IPs de alias cuya máscara de red es /24. Este clúster requiere una subred cuyo intervalo de IPs secundario para pods tenga una máscara de subred no superior a /14. Este intervalo de IPs secundario proporciona 2(32-14) = 218 = 262.144 direcciones IP para los pods. Consulta más información en Intervalo de direcciones IP secundarias de subred para pods.
Servicios Las direcciones de servicio (IP del clúster) se toman del intervalo de direcciones IP secundario de la subred del clúster para los servicios. Debes asegurarte de que este intervalo sea lo suficientemente amplio para proporcionar direcciones a todos los servicios de Kubernetes que alojes en tu clúster. En los clústeres de Autopilot de GKE que ejecutan la versión 1.27 o posterior, y en los clústeres estándar de GKE que ejecutan la versión 1.29 o posterior, GKE asigna direcciones IP a los servicios de GKE desde un intervalo gestionado por GKE: 34.118.224.0/20 de forma predeterminada. De esta forma, no tendrás que especificar tu propio intervalo de direcciones IP para los servicios. Para obtener más información, consulta la sección Intervalo de direcciones IP secundarias de subred para servicios. En un clúster que ejecute hasta 3000 servicios, necesitarás 3000 direcciones IP de clúster. Necesitas un intervalo secundario de tamaño /20 o superior. Un intervalo /20 de direcciones IP da como resultado 2(32-20) = 212 = 4096 direcciones IP. Para obtener más información, consulta Intervalo de direcciones IP secundarias de subred para servicios.

Direcciones IPv4 internas

Las direcciones IPv4 que uses para las subredes de tu clúster con VPC nativa deben proceder de un intervalo de subredes válido. Los intervalos válidos incluyen direcciones IPv4 privadas, como RFC 1918, y direcciones IP públicas de uso privado. Para obtener más información sobre los intervalos IPv4 de subred válidos, consulta las secciones Intervalos válidos e Intervalos restringidos de la documentación de VPC.

Para obtener información importante sobre el uso de direcciones privadas que no sean direcciones RFC 1918, consulta Usar intervalos de direcciones IPv4 privadas que no sean RFC 1918.

Para obtener información importante sobre el uso de intervalos de direcciones IPv4 públicas usadas de forma privada, consulte Habilitar intervalos de direcciones IP públicas usadas de forma privada.

Métodos de asignación de intervalos de IPv4 secundarios de subred

Puedes asignar intervalos de direcciones IP de pods e intervalos de direcciones de servicios (ClusterIP) a un clúster nativo de VPC. GKE o el usuario pueden gestionar estos intervalos de direcciones IP.

Debes conocer los siguientes términos clave para entender los métodos de asignación de intervalos secundarios.

Asignación: asignar intervalos de direcciones IP se refiere al proceso de asignar un intervalo de subred específico a un clúster nativo de VPC. De esta forma, se crea un conjunto de direcciones IP que los componentes pueden usar en el clúster, como los pods y los servicios.

Gestión: la gestión del intervalo de direcciones IP hace referencia a las operaciones CRUD continuas (creación, actualización, eliminación y lectura) a nivel de clúster, grupo de nodos o pod, relacionadas con los intervalos de subred asignados y la asignación de recursos en tu clúster nativo de VPC.

Intervalos secundarios gestionados por GKE (opción predeterminada)

En los clústeres de Autopilot de GKE que ejecutan la versión 1.27 o posterior, y en los clústeres estándar de GKE que ejecutan la versión 1.29 o posterior, GKE asigna direcciones IP a los servicios desde un intervalo gestionado por GKE de forma predeterminada: 34.118.224.0/20. De esta forma, no tendrás que especificar tu propio intervalo de direcciones IP para los servicios. Se aplican las siguientes consideraciones:

Gestionada por el usuario

Para tener un control total sobre la asignación de direcciones IP, puedes gestionar manualmente las subredes de tu clúster nativo de VPC.

Puedes crear los intervalos de direcciones IP secundarias de la subred y, a continuación, crear un clúster que utilice esos intervalos. Durante la creación del clúster, especifica el nombre del intervalo de subred de los pods y los servicios. Si creas manualmente los intervalos secundarios, debes gestionarlos tú mismo.

El intervalo de direcciones IP más pequeño que puedes crear sin usar CIDR de varios pods no contiguos es /28, pero ese intervalo solo te permitiría crear 1 nodo con un máximo de 8 pods. Debes usar un intervalo lo suficientemente grande como para incluir el número máximo de nodos que necesites.

El intervalo mínimo utilizable también depende del número máximo de pods por nodo.

Consulta la tabla de Intervalos CIDR de pods en clústeres estándar para ver el intervalo CIDR mínimo utilizable para diferentes valores de pods máximos por nodo.

Si agotas el intervalo de direcciones IP de los pods, debes hacer una de las siguientes acciones:

Diferencias con los clústeres basados en rutas

El esquema de asignación de direcciones de pods y servicios (ClusterIP) es diferente del esquema utilizado por un clúster basado en rutas. En lugar de especificar un único CIDR para pods y servicios, debes elegir o crear dos intervalos de direcciones IP secundarias en la subred del clúster: uno para los pods y otro para los servicios.

Consideraciones sobre la VPC compartida

Cuando se crea un clúster nativo de VPC en un entorno de VPC compartida, un propietario, editor o principal de Gestión de Identidades y Accesos (IAM) del proyecto host de la VPC compartida con el rol Administrador de redes debe crear manualmente la subred del clúster y los intervalos de direcciones IP secundarias. Un administrador de un proyecto de servicio que cree un clúster debe tener al menos permisos a nivel de subred en la subred del proyecto host de la red de VPC compartida.

En un entorno de VPC compartida, GKE no puede gestionar los intervalos de direcciones IP secundarias. Un administrador de red del proyecto host de la VPC compartida debe crear la subred y los intervalos de direcciones IP secundarias para que puedas crear el clúster. Para ver un ejemplo de cómo configurar un clúster nativo de VPC en una red de VPC compartida, consulta Configurar clústeres con una VPC compartida.

Planificación de intervalos de direcciones IP

Utilice la información de las secciones siguientes para calcular los tamaños de los intervalos de direcciones IP principales y secundarias de la subred que usa su clúster.

Intervalo de direcciones IPv4 principales de la subred

Ten en cuenta lo siguiente al planificar el intervalo de direcciones IPv4 principal de la subred de un clúster:

En la siguiente tabla se muestra el número máximo de nodos que puede crear en función del tamaño del intervalo de direcciones IPv4 principal de la subred y de la configuración del clúster:

Intervalo de direcciones IP principales de la subred Caso 1 Caso 2
/29 Tamaño mínimo del intervalo de direcciones IP principales de una subred 4 nodos 3 nodos
/28 12 nodos 11 nodos
/27 28 nodos 27 nodos
/26 60 nodos 59 nodos
/25 124 nodos 123 nodos
/24 252 nodos 251 nodos
/23 508 nodos 507 nodos
/22 1020 nodos 1019 nodos
/21 2044 nodos 2043 nodos
/20 Tamaño predeterminado del intervalo de direcciones IP principales de una subred enredes en modo automático 4092 nodos 4091 nodos
/19 8188 nodos 8187 nodos
/8 Tamaño máximo del intervalo de direcciones IP principales de una subred 16.777.212 nodos 16.777.211 nodos

Amplía el intervalo de direcciones IP principal

Si te quedas sin direcciones IP en el intervalo de direcciones IP principal, puedes ampliar el intervalo de direcciones IP principal en cualquier momento, incluso cuando los recursos, como los balanceadores de carga y los grupos de endpoints de red, usen la subred. Google Cloud

Antes de ampliar el intervalo de direcciones IP principal, ten en cuenta lo siguiente:

Fórmulas útiles

Puedes usar las siguientes fórmulas para:

En los clústeres de Private Service Connect que no usan la marca private-endpoint-subnetwork, puedes usar las fórmulas anteriores, pero reduce el valor de N en 1.

Consideraciones sobre el tamaño del clúster para el intervalo de direcciones IP secundario de los pods

Para calcular el número máximo de pods que puede admitir tu clúster, ten en cuenta el tamaño de la subred de pods y el número máximo de pods por nodo. El número máximo de pods depende de la máscara de subred y del número máximo de pods por nodo. Además, recuerda que algunas direcciones IP están reservadas en el intervalo principal.

Variables clave

Pasos para calcular el número máximo de pods

  1. Determina el número máximo de pods por nodo (Q):
    • En los clústeres de Autopilot, el valor de Q es 32.
    • En los clústeres estándar, puedes configurar Q.
  2. Define el tamaño del bloque CIDR de la subred de los pods (DS):
    • Determina el tamaño del bloque CIDR seleccionado para la subred de pods (por ejemplo, /17).
  3. Calcula el tamaño de la máscara de subred (M):
M = 31 - ⌈log₂(Q)⌉  

Sustituye Q por el valor de máximo de pods por nodo. Usa la función CEILING (⌈ ⌉) para redondear al entero más cercano. 4. Calcula los bits de host del intervalo de pods (HM):

HM = 32 - M  
  1. Calcula los bits de host del bloque CIDR seleccionado (HD):
HD = 32 - DS  
  1. Calcula el número máximo de nodos (MN):
MN = 2<sup>(HD - HM)</sup>  

El resultado de este cálculo es el número máximo de nodos que puede admitir la subred de pods seleccionada. 7. Calcula el número máximo de pods (MP):

MP = MN * Q  

El resultado de este cálculo es el número máximo de pods que puede admitir el clúster. 8. Calcula el número de direcciones IP utilizables del intervalo principal (N): none N = 2<sup>(32-S)</sup> - 4donde S es la longitud del prefijo del intervalo CIDR principal de la subred.

Información importante

Ejemplo

Supongamos que vas a crear un clúster de Autopilot de GKE con lo siguiente:

Calcula el número máximo de pods:

  1. M = 31 - ⌈log₂(32)⌉ = 26
  2. HM = 32 - 26 = 6
  3. HD = 32 - 17 = 15
  4. MN = 2(15 - 6) = 512
  5. MP = 512 * 32 = 16,384

Este clúster puede admitir un máximo de 512 nodos y 16.384 pods.

Puedes añadir más direcciones IPv4 para pods añadiendo intervalos de direcciones IPv4 de pods o añadiendo subredes a clústeres.

Intervalo de direcciones IP secundarias de subred para servicios

Planifica cuidadosamente el intervalo de direcciones IP secundarias de los servicios. Como también es un intervalo de direcciones IP secundarias de subred, no se puede cambiar una vez que se haya creado el clúster.

Si usas servicios multiclúster, el objeto ServiceImport usa direcciones IP del intervalo de direcciones IP secundario para los servicios.

En los clústeres de Autopilot de GKE que ejecutan la versión 1.27 o posterior, y en los clústeres estándar de GKE que ejecutan la versión 1.29 o posterior, GKE asigna direcciones IP a los servicios de un intervalo gestionado por GKE de forma predeterminada: 34.118.224.0/20. De esta forma, no tendrás que especificar tu propio intervalo de direcciones IP para los servicios. Se aplican las siguientes consideraciones:

En la siguiente tabla se muestra el número máximo de servicios que puedes crear en un solo clúster mediante la subred, dado el tamaño del intervalo de direcciones IP secundarias de la subred para los servicios.

Intervalo de IP secundario para servicios Número máximo de servicios
/28 Intervalo de direcciones de servicio más pequeño posiblecuando el método de asignación del intervalo secundario es gestionado por el usuario 16 servicios
/27 Intervalo de direcciones de servicio más pequeño posiblecuando el método de asignación de intervalos secundarios está gestionado por GKE 32 servicios
/26 64 servicios
/25 128 Services
/24 256 Services
/23 512 Services
/22 1024 servicios
/21 2048 Services
/20 Tamaño predeterminado del intervalo de IPs secundario de la subred para los servicioscuando el método de asignación del intervalo secundario lo gestiona GKE 4096 Servicios
/19 8192 Services
/18 16.384 servicios
/17 32.768 servicios
/16 Intervalo de direcciones de servicio más grande posible 65.536 servicios

Compartir intervalos de direcciones IP entre clústeres de GKE

Puedes compartir el intervalo principal, el intervalo de direcciones IP secundario de los pods y el intervalo de direcciones IP secundario de los servicios entre clústeres de la misma subred. Este comportamiento está disponible tanto para los clústeres Estándar como para los Autopilot.

Puede que quieras compartir intervalos de direcciones IP si tienes un equipo centralizado que gestiona la infraestructura de los clústeres. Puedes reducir la sobrecarga creando tres intervalos (para pods, servicios y nodos) y reutilizándolos o compartiéndolos, sobre todo en un modelo de VPC compartida. También puede facilitar a los administradores de redes la gestión de direcciones IP, ya que no tienen que crear subredes específicas para cada clúster.

Compartir el intervalo de subred personalizado del plano de control

De forma predeterminada, GKE usa el intervalo de la subred principal para aprovisionar el endpoint interno del plano de control. Sin embargo, en los clústeres con Private Service Connect, puedes configurar GKE para que aprovisione el endpoint interno desde una subred diferente que hayas creado. Puedes compartir esta subred con otros clústeres o entre proyectos si usas una VPC compartida.

Compartir el intervalo de direcciones IP principal de los nodos

Si creas más de un clúster en la subred, el intervalo de direcciones IP principal de los nodos se compartirá de forma predeterminada.

Compartir la dirección IP principal de los nodos tiene las siguientes limitaciones:

Cuando compartes el intervalo secundario de los Pods, cada Pod sigue teniendo una dirección IP única.

Compartir el intervalo de direcciones IP secundario de los pods tiene las siguientes limitaciones:

Dos o más clústeres pueden usar simultáneamente el mismo intervalo de direcciones IPv4 secundarias de subred para los servicios cuando se usan intervalos secundarios gestionados por el usuario.

Para configurar dos o más clústeres de forma que compartan un intervalo de direcciones IPv4 secundario de subred común para los servicios, usa el mismo intervalo de direcciones IPv4 secundario de subred al crear cada clúster. No se necesita ninguna marca de configuración independiente para compartir un intervalo de direcciones IPv4 común para los servicios.

Cuando se comparte un intervalo de direcciones IPv4 común para los servicios, cada clúster utiliza internamente todo el intervalo de direcciones IPv4 secundario de la subred para los servicios. Las direcciones IP de los servicios se programan en el nodo de cada clúster, pero no se asignan a la interfaz de red de ningún nodo. Las direcciones IP de servicio no se pueden enrutar en la red de VPC del clúster. Las direcciones IP de servicio solo pueden usarlas los pods de cliente que estén en el mismo clúster que el servicio.

Cuando un pod envía un paquete a una dirección IP de servicio, la configuración de iptables o eBPF del nodo realiza la traducción de direcciones de red (NAT) de destino, cambiando la dirección IP de destino del paquete de la dirección IP de servicio a la dirección IP de un pod de servicio. El paquete se enruta en función de la dirección IP del pod de destino.

Compartir el intervalo de direcciones IP secundario de los servicios ofrece las siguientes ventajas:

Compartir el intervalo de direcciones IP secundario de los servicios tiene las siguientes limitaciones:

^gke-.*-services-[abcdef0-9]{8}  

Intervalos de limitación de nodos

El número máximo de pods y servicios de un clúster de GKE determinado está limitado por el tamaño de los intervalos secundarios del clúster. El número máximo de nodos del clúster está limitado por el tamaño del intervalo de direcciones IP principal de la subred del clúster y por el intervalo de direcciones de los pods del clúster.

El siguiente mensaje de error indica que se ha agotado el intervalo de direcciones IP principal de la subred o el intervalo de direcciones IP de los pods del clúster (el intervalo de direcciones IP secundario de la subred para los pods):

Instance [node name] creation failed: IP space of [cluster subnet] is
exhausted

Puedes añadir más direcciones IP para los nodos ampliando la subred principal o añadir nuevas direcciones IP para los pods mediante CIDR de varios pods no contiguos. Para obtener más información, consulta No hay suficiente espacio de direcciones IP libres para los pods.

Redes de doble pila IPv4/IPv6

Con la red de doble pila IPv4/IPv6, puede definir cómo asigna GKE direcciones IP (ipFamilies) a los siguientes objetos:

En la versión 1.24 de GKE o en una posterior, puedes habilitar la red de doble pila para los nuevos clústeres de GKE en redes de VPC independientes y compartidas. También puedes aplicar políticas de red con la red de pila dual habilitada. Si ves errores de validación al habilitar la red de pila dual en clústeres de GKE que se han actualizado de las versiones 1.24 a las 1.25 o 1.26, ponte en contacto con el Google Cloud equipo de Asistencia.

Ventajas

Las redes de pila dual ofrecen las siguientes ventajas:

Disponibilidad

La red de doble pila con GKE tiene las siguientes restricciones:

Ten en cuenta las restricciones anteriores antes de crear un clúster con redes de pila dual. Para obtener más información, consulta cómo crear un clúster nativo de VPC con redes de pila dual.

Asignación de direcciones IPv6 públicas y privadas

En la siguiente tabla se ofrece un resumen de las direcciones IPv6 públicas y privadas con el comportamiento y las configuraciones de redes de pila dual:

Marca ipv6-access-type Asignación de direcciones IP Intervalo de subredes
EXTERNAL GKE asigna direcciones IPv6 externas que se pueden enrutar a Internet. De 2600:1900/28
INTERNAL GKE asigna direcciones IPv6 internas que no se pueden enrutar a Internet. Los clústeres con el tipo de acceso INTERNAL IPv6 no pueden acceder a Internet a través de direcciones IPv6. Cloud NAT no admite direcciones IPv6. De fd20::/20 (que es un subconjunto del intervalo ULA general: fc00::/7).

Para obtener más información, consulta cómo usar una red de doble pila en un clúster nativo de VPC.

Arquitectura

Un clúster con una red de doble pila IPv4/IPv6 tiene asignados los siguientes intervalos:

En el siguiente diagrama se muestra cómo asignan direcciones IPv6 Google Cloud y GKE:

Asignación de direcciones IPv6 en GKE. Diagrama que muestra cómo asignan direcciones IPv6 Google Cloud y GKE.

En el diagrama, el intervalo principal de la subred de VPC es 2600:1900:0:1::/64 y el intervalo reservado para los servicios de GKE es 2600:2D00:0:4::0:0/64. Cada nodo del clúster tiene un intervalo /96 para el intervalo de direcciones IP del nodo principal y un intervalo /112 para el intervalo de direcciones IP de los pods. El clúster también tiene un intervalo de direcciones IP de servicio secundario /112.

Servicios

Puedes crear un servicio de pila dual IPv4/IPv6 de tipoClusterIPoNodePort. Los nuevos clústeres de GKE que ejecutan la versión 1.29 o una posterior admiten servicios de tipo LoadBalancer de doble pila.

Puedes exponer un Deployment con un Service de tipo ClusterIP, NodePort o LoadBalancer. En cada uno de estos tipos de servicio, puedes definir los campos ipFamilies y ipFamilyPolicy como IPv4, IPv6 o un servicio de pila dual. Para obtener más información, consulta un ejemplo de cómo configurar una implementación.

Siguientes pasos