Crea un clúster basado en rutas

En esta página, se muestra cómo crear un clúster basado en rutas en Google Kubernetes Engine.

Descripción general

En Google Kubernetes Engine, los clústeres se pueden distinguir de acuerdo con la forma en la que enrutan el tráfico de un pod a otro. Un clúster que usa rutas de Google Cloud se denomina clúster basado en rutas. Un clúster que usa IP de alias se denomina clúster nativo de la VPC.

Nativo de la VPC es el tipo recomendado y es el predeterminado para los clústeres nuevos. Si quieres crear un clúster basado en rutas, debes desactivar de manera explícita la opción VPC nativa.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

Establece la configuración de gcloud predeterminada mediante uno de los siguientes métodos:

  • Usa gcloud init si deseas ver una explicación sobre cómo configurar parámetros predeterminados.
  • Usa gcloud config para establecer el ID, la zona y la región del proyecto de manera individual.

Usa gcloud init

Si recibes el error One of [--zone, --region] must be supplied: Please specify location, completa esta sección.

  1. Ejecuta gcloud init y sigue las instrucciones:

    gcloud init

    Si usas SSH en un servidor remoto, usa la marca --console-only para evitar que el comando abra un navegador:

    gcloud init --console-only
  2. Sigue las instrucciones a fin de autorizar a gcloud para que use tu cuenta de Google Cloud.
  3. Crea una configuración nueva o selecciona una existente.
  4. Elige un proyecto de Google Cloud.
  5. Elige una zona predeterminada de Compute Engine.

Usa gcloud config

  • Establece tu ID del proyecto predeterminado:
    gcloud config set project project-id
  • Si trabajas con clústeres zonales, establece tu zona de procesamiento predeterminada:
    gcloud config set compute/zone compute-zone
  • Si trabajas con clústeres regionales, establece tu región de procesamiento predeterminada:
    gcloud config set compute/region compute-region
  • Actualiza gcloud a la versión más reciente:
    gcloud components update

Crea un clúster basado en rutas

Puedes crear un clúster basado en rutas con la herramienta de gcloud o Google Cloud Console.

gcloud

Si quieres crear un clúster basado en rutas, incluye la marca --no-enable-ip-alias en el comando de creación del clústeres:

gcloud container clusters create [CLUSTER_NAME] --no-enable-ip-alias

En el ejemplo anterior, [CLUSTER_NAME] es el nombre que eliges para tu clúster.

Console

  1. Visita el menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú Google Kubernetes Engine

  2. Haz clic en el botón Crear clúster.

  3. Ingresa un nombre para tu clúster.

  4. En el panel de navegación, en Clúster, haz clic en Herramientas de redes.

  5. En Opciones avanzadas de redes, desmarca la casilla de verificación Habilitar enrutamiento de tráfico nativo de la VPC (con alias de IP).

  6. Haz clic en Crear.

Verifica que tu clúster use las rutas

gcloud

Haz una lista de los nodos de tu clúster:

kubectl get nodes

El resultado muestra los nombres de tus nodos:

NAME                                 STATUS   ...     AGE    VERSION
gke-xxx-default-pool-83e239a7-kcg8   Ready    ...     42m    v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-qm6b   Ready    ...     42m    v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-wnrq   Ready    ...     42m    1.9.7-gke.6

Haz una lista de tus rutas:

gcloud compute routes list

En el resultado, en la columna NEXT_HOP, busca el nombre de uno de tus nodos de clúster:

NAME                 NETWORK        DEST_RANGE         NEXT_HOP
...
[ROUTE_NAME]         default        10.24.0.0/24       [YOUR_NODE_NAME]
...

En el resultado, puedes ver que la ruta proporciona un próximo salto para cualquier paquete que se destina a un rango de direcciones de pod en particular.

Console

  1. Visita el menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú de Google Kubernetes Engine

  2. Haz clic en el nombre del clúster para abrir una página de detalles del clúster.

  3. En Grupos de nodos, busca Grupos de instancias y haz clic en el nombre del grupo de instancias. Se abre la página Grupos de instancias y muestra una lista de los nodos del clúster. Toma nota de los nombres de tus nodos.

  4. Visita la página Rutas en Cloud Console.

    Visita la página de rutas

  5. En la lista de rutas, en la columna Salto siguiente, busca el nombre de uno de los nodos de tu clúster. Haz clic en el nombre de la ruta en esa fila.

  6. Se abrirá la página Detalles de ruta y podrás ver que la ruta proporciona un próximo salto para cualquier paquete que se destina a un rango de direcciones de pod en particular.

Pods por nodo

En un clúster basado en rutas, a cada nodo se le asigna un rango de direcciones IP de /24 para los pods. Con un rango /24, existen 256 direcciones, pero la cantidad máxima de pods por nodo es de 110. Dado que hay dos direcciones IP disponibles por cada pod posible, Kubernetes puede mitigar la reutilización de la dirección IP a medida que los pods se agregan y quitan de un nodo.

Rango de direcciones de pods

Un clúster basado en rutas tiene un rango de direcciones IP que se usan para pods y servicios. Aunque el rango se usa para pods y servicios, se denomina Rango de direcciones de pods. El último /20 del rango de direcciones del pod se usa para los servicios. El rango A /20 tiene 212= 4,096 direcciones. Por lo tanto, se usan 4,096 direcciones de servicios, y el resto del rango se usa para pods.

En el resultado del comando, el rango de direcciones pods se llama clusterIpv4Cidr y el rango de direcciones usadas para los servicios se llama servicesIpv4Cidr. Por ejemplo, el resultado de gcloud container clusters describe incluye una salida similar a la que se muestra a continuación:

clusterIpv4Cidr: 10.96.0.0/16
...
servicesIpv4Cidr: 10.96.240.0/20

Para la versión 1.7 de GKE y versiones posteriores, el rango de direcciones de pods puede ser de cualquier bloque RFC 1918: 10.0.0.0/8, 172.16.0.0/12 o 192.168.0.0/16. Para versiones anteriores, el rango de direcciones de pods puede ser de 10.0.0.0/8.

Puedes personalizar el rango de direcciones de pods si especificas un rango CIDR. Por ejemplo, puedes especificar el rango 10.96.0.0/16.

gcloud

gcloud container clusters create [CLUSTER_NAME] --no-enable-ip-alias \
    --cluster-ipv4-cidr 10.96.0.0/16

En el ejemplo anterior, [CLUSTER_NAME] es el nombre que eliges para tu clúster.

Console

  1. Visita el menú de Google Kubernetes Engine en Cloud Console.

    Ir al menú Google Kubernetes Engine

  2. Haz clic en el botón Crear clúster.

  3. Ingresa un nombre para tu clúster.

  4. En el panel de navegación, en Clúster, haz clic en Herramientas de redes.

  5. En Opciones avanzadas de redes, para el campo Rango de direcciones de pods, ingresa 10.96.0.0/16.

  6. Haz clic en Crear.

Consideraciones para el tamaño del clúster

La cantidad máxima de nodos, pods y servicios para un clúster de GKE en particular se determina por el tamaño de la subred del clúster y el tamaño del rango de direcciones de pods. No puedes cambiar el tamaño del rango de direcciones de pods una vez creado un clúster. Cuando creas un clúster, asegúrate de elegir un rango de direcciones de pods que sea lo suficientemente grande como para admitir el crecimiento anticipado del clúster.

En la tabla siguiente, se explica cómo elegir rangos de direcciones que sean suficientes para un clúster de 900 nodos:

Rango Orientación
Nodos

Las direcciones IP de nodo se obtienen del rango primario de la subred del clúster. La subred de tu clúster debe ser lo suficientemente grande para conservar la cantidad total de nodos en tu clúster.

Por ejemplo, si planeas crear un clúster de 900 nodos, la subred del clúster debe tener, al menos, un tamaño de /22. Un rango /22 tiene 210 = 1,024 direcciones. Resta las 4 direcciones IP reservadas y obtendrás 1,020, que es suficiente para los 900 nodos.

Rango de direcciones de pods

Cada nodo tiene un rango /24 de direcciones IP para pods. Un rango /24 tiene 28 = 256 direcciones. Recuerda que 4,096 direcciones en el rango de direcciones de pods se usan para los servicios. La porción restante del rango de direcciones de pods se usa para pods y debe ser lo suficientemente grande a fin de contener la cantidad de nodos x 256 direcciones.

Supón que planeas crear un clúster de 900 nodos. Necesitas 900 x 256 = 230,400 direcciones para pods. Ahora supón que tienes un rango de direcciones de pods /14. Un rango /14 tiene 218 = 262,144 direcciones. Resta las 4,096 direcciones que se usan en los servicios y obtienes 258,048, lo que es suficiente para 900 nodos.

Valores predeterminados y límites de tamaños de rangos

En la tabla siguiente, se proporcionan los tamaños mínimos, máximos y predeterminados para la subred del clúster y el rango de direcciones de pods.

Rango Tamaño predeterminado Tamaño mínimo Tamaño máximo
Nodos

/20, que tiene 212 = 4,096 direcciones. Resta 4 direcciones reservadas y obtendrás 4,092 direcciones para los nodos.

/29, que tiene 23 = 8 direcciones. Resta 4 direcciones reservadas y obtendrás 4 direcciones para los nodos.

/7, que tiene 225 direcciones. Se trata, en aproximado, de 33 millones de direcciones para nodos.

Rango de direcciones de pods

/14, que tiene 218 = 262,144 direcciones.

/19, que tiene 213 = 8,192 direcciones.

/9, que tiene 223 = 8,388,608 direcciones.

Restricciones

  • No puedes migrar un clúster nativo de la VPC a un clúster basado en rutas.
  • No puedes migrar un clúster basado en rutas a un clúster nativo de VPC.
  • Los clústeres basados en rutas solo pueden usar direcciones en el rango RFC 1918 para direcciones IP privadas. Los clústeres nativos de VPC tienen un mayor rango de direcciones que se pueden usar.

Próximos pasos