Crear un clúster regional

En este documento se muestra cómo crear un clúster regional estándar para aumentar la disponibilidad del plano de control y las cargas de trabajo del clúster durante las actualizaciones, el mantenimiento automatizado o una interrupción zonal.

Los clústeres de Autopilot de GKE siempre son regionales.

Información general

Si creas un clúster regional en lugar de un clúster de zona, el plano de control del clúster se replica en varias zonas de una región determinada. En los grupos de nodos de un clúster regional, puedes especificar manualmente las zonas en las que se ejecutarán los grupos de nodos o usar la configuración predeterminada, que replica cada grupo de nodos en tres zonas de la región del plano de control. Todas las zonas deben estar en la misma región que el plano de control del clúster.

Los clústeres regionales replican los recursos en varias zonas y consumen cuotas adicionales.

Para obtener información sobre los distintos tipos de disponibilidad de clústeres, consulta Acerca de las opciones de configuración de clústeres.

En las instrucciones de las siguientes secciones se explica cómo hacer lo siguiente:

Una vez que hayas creado un clúster regional, no podrás convertirlo en un clúster zonal.

La información mínima que debe especificar al crear un clúster regional es un nombre, un proyecto (normalmente, el proyecto actual) y una región (normalmente, la ubicación predeterminada de las herramientas de línea de comandos), con los ajustes predeterminados para todos los demás valores. Sin embargo, hay más ajustes de configuración posibles, de los cuales solo se describen algunos en esta guía y otros no se pueden cambiar después de crear el clúster. Asegúrate de saber qué ajustes no se pueden cambiar después de crear un clúster y de elegir el ajuste adecuado al crear un clúster si no quieres tener que volver a crearlo.

Puedes ver un resumen de las opciones de configuración de clústeres en el artículo Acerca de las opciones de configuración de clústeres y una lista completa de las opciones posibles en las guías de referencia de gcloud container clusters create y Terraform google_container_cluster.

Antes de empezar

Antes de empezar, asegúrate de que has realizado las siguientes tareas:

  • Habilita la API de Google Kubernetes Engine.
  • Habilitar la API de Google Kubernetes Engine
  • Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando gcloud components update.

Configurar cuentas de servicio de IAM para GKE

GKE usa cuentas de servicio de gestión de identidades y accesos que están asociadas a tus nodos para ejecutar tareas del sistema, como el registro y la monitorización. Como mínimo, estas cuentas de servicio de nodo deben tener el rol Cuenta de servicio de nodo predeterminada de Kubernetes Engine (roles/container.defaultNodeServiceAccount) en tu proyecto. De forma predeterminada, GKE usa la cuenta de servicio predeterminada de Compute Engine, que se crea automáticamente en tu proyecto, como cuenta de servicio del nodo.

Para asignar el rol roles/container.defaultNodeServiceAccount a la cuenta de servicio predeterminada de Compute Engine, sigue estos pasos:

consola

  1. Ve a la página Bienvenida:

    Ir a Bienvenida

  2. En el campo Número de proyecto, haz clic en Copiar en el portapapeles.
  3. Ve a la página Gestión de identidades y accesos:

    Ir a IAM

  4. Haz clic en Conceder acceso.
  5. En el campo Nuevos principales, especifique el siguiente valor:
    PROJECT_NUMBER-compute@developer.gserviceaccount.com
    Sustituye PROJECT_NUMBER por el número de proyecto que has copiado.
  6. En el menú Seleccionar un rol, elige el rol Cuenta de servicio de nodo predeterminada de Kubernetes Engine.
  7. Haz clic en Guardar.

gcloud

  1. Busca tu Google Cloud número de proyecto:
    gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)"

    Sustituye PROJECT_ID por el ID del proyecto.

    El resultado debería ser similar al siguiente:

    12345678901
    
  2. Asigna el rol roles/container.defaultNodeServiceAccount a la cuenta de servicio predeterminada de Compute Engine:
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
        --role="roles/container.defaultNodeServiceAccount"

    Sustituye PROJECT_NUMBER por el número de proyecto del paso anterior.

Crear un clúster regional con un grupo de nodos de una sola zona

En las siguientes instrucciones se explica cómo crear un clúster regional con un grupo de nodos que opere en una sola zona de la región. El plano de control del clúster se replica en varias zonas de la región especificada, pero los nodos se encuentran en una sola zona y no se replican en otras zonas.

Puedes usar la CLI de gcloud, la Google Cloud consola o Terraform para crear el clúster.

Si desarrollas aplicaciones de GKE con Cloud Code para VS Code, prueba a crear clústeres con Cloud Code.

gcloud

Antes de ejecutar los comandos de la CLI de gcloud para crear el clúster, define el proyecto correcto ejecutando lo siguiente:

gcloud config set project PROJECT_ID
# gcloud config set billing/quota_project PROJECT_ID

Para crear un clúster regional con la CLI de gcloud, usa uno de los siguientes comandos y sustituye las variables:

  • CLUSTER_NAME: el nombre del nuevo clúster regional.
  • CONTROL_PLANE_LOCATION: la región de Compute Engine del plano de control de tu clúster. Proporciona una región, como us-central1.
  • COMPUTE_ZONE: la zona de tu grupo de nodos, como us-central1-a. La zona debe estar en la misma región que el plano de control del clúster.
  • CHANNEL: el tipo de canal de lanzamiento, que puede ser rapid, regular, stable o None. De forma predeterminada, el clúster se registra en el canal de lanzamiento regular, a menos que se especifique al menos una de las siguientes marcas: --cluster-version, --release-channel, --no-enable-autoupgrade y --no-enable-autorepair.
  • VERSION: la versión que quieras especificar para tu clúster.

Te recomendamos que especifiques una cuenta de servicio de IAM con los privilegios mínimos que puedan usar tus nodos en lugar de la cuenta de servicio predeterminada de Compute Engine. Para obtener información sobre cómo crear una cuenta de servicio con el número mínimo de privilegios necesarios, consulta Usar una cuenta de servicio con el número mínimo de privilegios necesarios.

Para especificar una cuenta de servicio personalizada en la CLI de gcloud, añade la siguiente marca al comando:

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Sustituye SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio con el número mínimo de privilegios necesarios.

Usar un canal de lanzamiento específico:

Para crear un clúster con un canal de lanzamiento específico, ejecuta el siguiente comando:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE \
    --release-channel CHANNEL

Usar una versión específica:

Para crear un clúster con una versión específica, ejecuta el siguiente comando:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE \
    --cluster-version VERSION

Usar la versión predeterminada en clústeres que no estén registrados en un canal de lanzamiento:

Para crear un clúster con la versión predeterminada de los clústeres que no están registrados en un canal de lanzamiento, no es necesario que especifiques una versión del clúster, pero sí que definas el canal de lanzamiento como None:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE \
    --release-channel None

Ejemplo

El siguiente comando crea un clúster regional registrado en el canal de lanzamiento regular (predeterminado), con tres nodos (predeterminado) en la zona us-west1-c:

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --node-locations us-west1-c

Ejemplo

El siguiente comando crea un clúster regional registrado en el canal de lanzamiento regular (predeterminado) con dos nodos ubicados en la zona us-west1-c:

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --node-locations us-west1-c \
    --num-nodes 2

Consola

  1. En la Google Cloud consola, ve a la página Crear un clúster de Kubernetes.

    Ir a Crear un clúster de Kubernetes

  2. En la sección Información básica de los clústeres, haz lo siguiente:

    1. Introduce el nombre del clúster.
    2. En Tipo de ubicación, selecciona Regional y, a continuación, la región de tu clúster.
    3. Si quieres anular las ubicaciones de nodo predeterminadas (por ejemplo, para ejecutar los nodos en una sola zona), selecciona la casilla Especificar ubicaciones de nodo predeterminadas y, a continuación, elige las zonas en las que quieres que se ejecuten los grupos de nodos.

    4. Elige un canal de lanzamiento. También puede seleccionar Ningún canal en la lista desplegable, pero le recomendamos que consulte la comparación entre los clústeres registrados y no registrados en un canal de lanzamiento antes de elegir esta opción. GKE actualiza automáticamente los clústeres que no están en un canal de lanzamiento con versiones del canal Estable.

    5. Opcional: Especifica una versión del plano de control en la lista desplegable Versión.

  3. Opcional: Configura otros ajustes para el nuevo clúster.

  4. Opcional: Si quieres registrar tu nuevo clúster en una flota, ve a la sección Registro de flota y sigue las instrucciones de la consola para Crear y registrar un nuevo clúster y completar el registro. Google Cloud

  5. En el panel de navegación, ve a Grupos de nodos y haz clic en default-pool.

  6. En la sección Detalles del grupo de nodos, haz lo siguiente:

    1. Introduce un nombre para el grupo de nodos predeterminado.
    2. Opcional: Elige la versión de Node.
    3. Introduce el Número de nodos que quieres crear en el clúster. Debes tener cuota de recursos disponible para los nodos y sus recursos (como las rutas de cortafuegos).
    4. Opcional: Puedes inhabilitar las actualizaciones automáticas de los nodos. Sin embargo, te recomendamos que consultes las consideraciones antes de inhabilitar las actualizaciones automáticas de los nodos antes de elegir esta opción.
  7. En el panel de navegación, ve a Grupos de nodos y haz clic en Nodos.

  8. En la lista desplegable Tipo de imagen, selecciona la imagen de nodo.

  9. Elige la configuración de máquina predeterminada que quieras usar en las instancias. Cada tipo de máquina se factura de forma diferente. El tipo de máquina predeterminado es e2-medium. Para obtener información sobre los precios de los tipos de máquinas, consulta la hoja de precios de los tipos de máquinas.

  10. En la lista desplegable Tipo de disco de arranque, selecciona el tipo de disco.

  11. Introduce el tamaño del disco de arranque.

  12. Opcional: En el panel de navegación, ve a Grupos de nodos y haz clic en Seguridad.

  13. También puedes especificar una cuenta de servicio de gestión de identidades y accesos personalizada para tus nodos:
    1. En la página Configuración avanzada, despliega la sección Seguridad.
    2. En el menú Cuenta de servicio, selecciona la que prefieras.

    Te recomendamos que especifiques una cuenta de servicio de IAM con los privilegios mínimos que puedan usar tus nodos en lugar de la cuenta de servicio predeterminada de Compute Engine. Para obtener información sobre cómo crear una cuenta de servicio con el número mínimo de privilegios necesarios, consulta Usar una cuenta de servicio con el número mínimo de privilegios necesarios.

  14. Haz clic en Crear.

Terraform

Para crear un clúster regional con un grupo de nodos de una sola zona mediante Terraform, consulta el siguiente ejemplo:

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-single-zone"
  location           = "us-west1"
  node_locations     = ["us-west1-c"]
  initial_node_count = 2
}

Para obtener más información sobre el uso de Terraform, consulta Compatibilidad de Terraform con GKE.

Interactuar con un clúster mediante kubectl

Una vez que hayas creado un clúster, debes configurar kubectl para poder interactuar con él desde la línea de comandos.

Crear un clúster regional con un grupo de nodos multizona

En las siguientes instrucciones se explica cómo crear un clúster regional con un pool de nodos multizona, que es la configuración predeterminada. El plano de control y los nodos del clúster se replican en varias zonas de la región especificada.

Puedes usar la CLI de gcloud, la consola o Terraform para crear el clúster. Google Cloud

Si desarrollas aplicaciones de GKE con Visual Studio Code, prueba a crear clústeres con Cloud Code.

gcloud

Antes de ejecutar los comandos de la CLI de gcloud para crear el clúster, define el proyecto correcto ejecutando lo siguiente:

gcloud config set project PROJECT_ID
# The project set above is used for quota and billing by default.
# To use a different project for quota and billing, run the following command:
# gcloud config set billing/quota_project PROJECT_ID

Para crear un clúster regional con la CLI de gcloud, usa uno de los siguientes comandos y sustituye las variables:

  • CLUSTER_NAME: el nombre del nuevo clúster regional.
  • CONTROL_PLANE_LOCATION: la región de Compute Engine del plano de control de tu clúster. Proporciona una región, como us-central1.
  • CHANNEL: el tipo de canal de lanzamiento, que puede ser rapid, regular, stable o None. De forma predeterminada, el clúster se registra en el canal de lanzamiento regular si no se especifican las siguientes marcas: --cluster-version, --release-channel, --no-enable-autoupgrade y --no-enable-autorepair.
  • VERSION: la versión que quieras especificar para tu clúster.
  • En las regiones con más de tres zonas o en los casos en los que se prefieran menos zonas, puedes usar la marca opcional --node-locations para anular las zonas predeterminadas en las que se replican los nodos.

Te recomendamos que especifiques una cuenta de servicio de IAM con los privilegios mínimos que puedan usar tus nodos en lugar de la cuenta de servicio predeterminada de Compute Engine. Para obtener información sobre cómo crear una cuenta de servicio con el número mínimo de privilegios necesarios, consulta Usar una cuenta de servicio con el número mínimo de privilegios necesarios.

Para especificar una cuenta de servicio personalizada en la CLI de gcloud, añade la siguiente marca al comando:

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

Sustituye SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio con el número mínimo de privilegios necesarios.

Usar un canal de lanzamiento específico:

Para crear un clúster con un canal de lanzamiento específico, ejecuta el siguiente comando:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --release-channel CHANNEL

Usar una versión específica:

Para crear un clúster con una versión específica, ejecuta el siguiente comando:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --cluster-version VERSION

Usar la versión predeterminada en clústeres que no estén registrados en un canal de lanzamiento:

Para crear un clúster con la versión predeterminada de los clústeres que no están registrados en un canal de lanzamiento, no es necesario que especifiques una versión del clúster, pero sí que definas el canal de lanzamiento como None:

gcloud container clusters create CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --release-channel None

Ejemplo

El siguiente comando crea un clúster regional registrado en el canal de lanzamiento regular con nueve nodos en us-west1 (tres zonas con tres nodos cada una, que es el valor predeterminado):

gcloud container clusters create my-regional-cluster --location us-west1

Ejemplo

El siguiente comando crea un clúster regional registrado en el canal de lanzamiento regular con seis nodos (tres zonas con dos nodos cada una, especificado por --num-nodes):

gcloud container clusters create my-regional-cluster \
    --location us-west1 \
    --num-nodes 2

Ejemplo

El siguiente comando crea un clúster regional registrado en el canal de lanzamiento regular, con seis nodos en dos zonas (dos zonas, especificadas por --node-locations, con tres nodos cada una):

gcloud container clusters create my-regional-cluster \
    --location us-central1 \
    --node-locations us-central1-b,us-central1-c

Consola

  1. En la Google Cloud consola, ve a la página Crear un clúster de Kubernetes.

    Ir a Crear un clúster de Kubernetes

  2. En la sección Información básica de los clústeres, haz lo siguiente:

    1. Introduce el nombre del clúster.
    2. En Tipo de ubicación, selecciona Regional y, a continuación, la región de tu clúster.
    3. Si quieres anular las ubicaciones de nodo predeterminadas (por ejemplo, para ejecutar los nodos en una sola zona), selecciona la casilla Especificar ubicaciones de nodo predeterminadas y, a continuación, elige las zonas en las que quieres que se ejecuten los grupos de nodos.

    4. Elige un canal de lanzamiento. También puede seleccionar Ningún canal en la lista desplegable, pero le recomendamos que consulte la comparación entre los clústeres registrados y no registrados en un canal de lanzamiento antes de elegir esta opción. GKE actualiza automáticamente los clústeres que no están en un canal de lanzamiento con versiones del canal Estable.

    5. Opcional: Especifica una versión del plano de control en la lista desplegable Versión.

  3. Opcional: Configura otros ajustes para el nuevo clúster.

  4. Opcional: Si quieres registrar tu nuevo clúster en una flota, ve a la sección Registro de flota y sigue las instrucciones de la consola para Crear y registrar un nuevo clúster y completar el registro. Google Cloud

  5. En el panel de navegación, ve a Grupos de nodos y haz clic en default-pool.

  6. En la sección Detalles del grupo de nodos, haz lo siguiente:

    1. Introduce un nombre para el grupo de nodos predeterminado.
    2. Opcional: Elige la versión de Node.
    3. Introduce el Número de nodos que quieres crear en el clúster. Debes tener cuota de recursos disponible para los nodos y sus recursos (como las rutas de cortafuegos).
    4. Opcional: Puedes inhabilitar las actualizaciones automáticas de los nodos. Sin embargo, te recomendamos que consultes las consideraciones antes de inhabilitar las actualizaciones automáticas de los nodos antes de elegir esta opción.
  7. En el panel de navegación, ve a Grupos de nodos y haz clic en Nodos.

  8. En la lista desplegable Tipo de imagen, selecciona la imagen de nodo.

  9. Elige la configuración de máquina predeterminada que quieras usar en las instancias. Cada tipo de máquina se factura de forma diferente. El tipo de máquina predeterminado es e2-medium. Para obtener información sobre los precios de los tipos de máquinas, consulta la hoja de precios de los tipos de máquinas.

  10. En la lista desplegable Tipo de disco de arranque, selecciona el tipo de disco.

  11. Introduce el tamaño del disco de arranque.

  12. Opcional: En el panel de navegación, ve a Grupos de nodos y haz clic en Seguridad.

  13. También puedes especificar una cuenta de servicio de gestión de identidades y accesos personalizada para tus nodos:
    1. En la página Configuración avanzada, despliega la sección Seguridad.
    2. En el menú Cuenta de servicio, selecciona la que prefieras.

    Te recomendamos que especifiques una cuenta de servicio de IAM con los privilegios mínimos que puedan usar tus nodos en lugar de la cuenta de servicio predeterminada de Compute Engine. Para obtener información sobre cómo crear una cuenta de servicio con el número mínimo de privilegios necesarios, consulta Usar una cuenta de servicio con el número mínimo de privilegios necesarios.

  14. Haz clic en Crear.

Terraform

Para crear un clúster regional con un grupo de nodos multizona mediante Terraform, consulta el siguiente ejemplo:

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-multi-zone"
  location           = "us-central1"
  node_locations     = ["us-central1-b", "us-central1-c"]
  initial_node_count = 2
}

Para obtener más información sobre el uso de Terraform, consulta Compatibilidad de Terraform con GKE.

Interactuar con un clúster mediante kubectl

Una vez que hayas creado un clúster, debes configurar kubectl para poder interactuar con él desde la línea de comandos.

Siguientes pasos