Saltar al contenido
aprendeaws.dev

Módulo 14 · Multinube: AWS y Google Cloud/Lección 88

Cómputo en Google Cloud: GKE, Cloud Run y Compute Engine

Clústeres regionales de GKE, Autopilot, Cloud Run, grupos de instancias administrados y Artifact Registry, con su alta disponibilidad.

⏱ 14 min

Al terminar podrás

  • →Elegir entre GKE, Cloud Run y Compute Engine para un servicio
  • →Diseñar alta disponibilidad con clústeres regionales y grupos de instancias regionales
  • →Comparar GKE con EKS y Cloud Run con Fargate y App Runner

Servicios de Google Cloud

  • Compute Engine
  • Google Kubernetes Engine
  • Cloud Run
  • Cloud Run functions
  • Artifact Registry

Google Cloud ofrece las mismas tres maneras de correr código que AWS: máquinas virtuales, Kubernetes administrado y contenedores sin servidores. Los nombres cambian, y también algunos comportamientos de alta disponibilidad que darías por hechos en AWS. Esta lección te ayuda a elegir entre Compute Engine, GKE y Cloud Run, y a diseñar cada uno para que sobreviva a la caída de una zona.

Compute Engine y las familias de máquinas

Compute Engine es el EC2 de Google Cloud. Los tipos de máquina se agrupan en familias: de uso general (series E2, N2, N4, C3 o C4, por ejemplo), optimizadas para cómputo, para memoria, para almacenamiento y con aceleradores. Revisa el catálogo al diseñar: las series cambian más rápido que esta lección. Tres diferencias con EC2:

  • Tipos personalizados: en varias series eliges vCPU y memoria a la medida, en vez de saltar al siguiente tamaño.
  • Migración en vivo: durante el mantenimiento del host, Google mueve la VM a otro host sin reiniciarla en la mayoría de los tipos. En EC2 recibes un evento programado y tú reaccionas.
  • Discos regionales: Persistent Disk regional y Hyperdisk Balanced High Availability replican de forma síncrona entre dos zonas. EBS no tiene equivalente; en AWS replicas en la aplicación.

Las plantillas de instancia cumplen el papel de las launch templates, y las Spot VMs el de las instancias Spot.

Grupos de instancias administrados

Un MIG (managed instance group) crea VMs idénticas desde una plantilla, como un Auto Scaling group. Puede ser zonal o regional; el regional reparte VMs entre zonas, tres por defecto, y las zonas no se cambian después. La forma de distribución decide cómo: EVEN (por defecto) mantiene el mismo número por zona, BALANCED prefiere zonas con capacidad, ANY y ANY_SINGLE_ZONE sirven para lotes.

El autohealing usa un health check de aplicación y recrea la VM que no responde. Es distinto del health check del balanceador: el del balanceador saca la VM del tráfico; el de autohealing la destruye y la recrea. Hazlo más tolerante que el del balanceador, o un pico de latencia reciclará media flota.

CriterioMIG regionalAuto Scaling group
Reparto entre zonasForma de distribución EVEN, BALANCED, ANY o ANY_SINGLE_ZONERebalanceo entre las AZ de las subredes elegidas
Si cae una zonaLas demás siguen sirviendo; no crea VMs en otras zonas salvo que haya autoescaladoLanza reemplazos en las AZ sanas
Reemplazo de VMs enfermasAutohealing con health check de aplicaciónHealth check de EC2 o del ELB
ActualizaciónRolling update con maxSurge y maxUnavailable; canario con dos plantillasInstance refresh
EscaladoCPU, uso del balanceador, métricas de Cloud Monitoring, horariosSeguimiento de objetivo, pasos, programado, predictivo

Si tu MIG regional de tres zonas no tiene autoescalado, sobredimensiona: Google recomienda al menos un 50 % extra para que perder una zona deje el 100 % de la capacidad. Compáralo con Auto Scaling.

GKE: Standard, Autopilot y clústeres regionales

GKE Standard te deja administrar los node pools: tipos de máquina, tamaños y actualizaciones. GKE Autopilot administra los nodos por ti y cobra por los recursos que piden los pods, cerca de lo que hace EKS Auto Mode. La decisión de alta disponibilidad más importante es otra: un clúster regional replica el plano de control en varias zonas y reparte los nodos; un clúster zonal tiene el plano de control en una sola zona. Autopilot siempre es regional, y un clúster regional no se puede convertir en zonal.

Para que los pods llamen a APIs de Google sin llaves usa Workload Identity Federation for GKE: la cuenta de servicio de Kubernetes recibe roles de IAM, como con EKS Pod Identity o IRSA. Para varios clústeres, regístralos en una flota (fleet) y usa Gateways multiclúster, que programan un balanceador global sobre servicios exportados de varios clústeres. Multi Cluster Ingress es la API anterior; para diseños nuevos, Gateway.

CriterioGKEEKS
Plano de controlMultizona solo en clústeres regionalesSiempre multi-AZ
Nodos administradosAutopilot, o node pools en StandardEKS Auto Mode, Fargate o grupos de nodos administrados
Identidad de podsWorkload Identity Federation for GKEEKS Pod Identity o IRSA
Varios clústeresFlotas y Gateways multiclúster con un balanceador globalBalanceadores por clúster y Global Accelerator o Route 53
ActualizacionesCanales de versiones (rapid, regular, stable) con actualización automáticaActualización del plano de control que tú inicias; soporte estándar y extendido

Cloud Run: servicios, jobs y multirregión

Cloud Run corre contenedores sin servidores. Un servicio atiende HTTP, escala según solicitudes, puede bajar a cero y procesa varias solicitudes por instancia. Un job corre tareas hasta terminar, como un lote. Las Cloud Run functions son la forma de función, el equivalente de Lambda. Un servicio es regional y Google ya lo reparte entre zonas de la región. Con instancias mínimas evitas arranques en frío en la ruta crítica.

Para varias regiones, despliega el servicio en cada una o como servicio multirregión con --regions, y ponlo detrás de un Application LB externo global con un NEG serverless por región. Ojo: el balanceador no deja de mandar tráfico a una región cuyo servicio responde mal. Para eso configura el service health de Cloud Run con sondas de disponibilidad, o detección de valores atípicos en el balanceador.

# Clúster regional de GKE en modo Autopilot (siempre regional)
gcloud container clusters create-auto pagos-prod \
  --region=us-east1 --release-channel=regular

# Cloud Run en dos regiones como servicio multirregión
gcloud run deploy pagos-api \
  --image=us-docker.pkg.dev/pagos-prod-7f3a/apps/pagos-api@sha256:3b1f... \
  --regions=us-east1,us-central1 --min-instances=2
CriterioCloud RunFargate (ECS)App Runner
UnidadServicio o jobTarea o servicio de ECSServicio
Escala a ceroSíNo por solicitudes: el servicio mantiene sus tareas deseadasNo: sin tráfico cobra la memoria de las instancias aprovisionadas
Solicitudes por instanciaVarias, configurableLas que maneje tu procesoVarias, configurable
Varias zonasAutomático en la regiónSegún las subredes del servicioAutomático en la región
Varias regionesServicio multirregión + balanceador globalUn servicio por región + Route 53 o Global AcceleratorUn servicio por región + Route 53

Artifact Registry y las imágenes en dos nubes

Artifact Registry guarda imágenes de contenedor y paquetes. Un repositorio es regional o multirregional (us, europe, asia). Un repositorio regional no se replica solo a otra región; el multirregional reparte los datos y puede seguir funcionando si cae una de sus regiones. Los repositorios remotos funcionan como la caché de extracción de ECR, contra Docker Hub u otros registros por HTTPS, y los virtuales agrupan varios repositorios detrás de una sola URL.

  1. 1

    Construye una vez

    El pipeline produce una imagen y su digest. Ese digest es la identidad de lo que corre, en cualquier nube.
  2. 2

    Publica en las dos nubes

    Empuja el mismo digest a ECR y a Artifact Registry desde el pipeline, con identidades federadas y sin llaves.
  3. 3

    Despliega por digest

    Cloud Run, GKE y EKS referencian @sha256:..., no una etiqueta que alguien puede mover.
  4. 4

    Sin dependencias cruzadas en ejecución

    GKE no descarga de ECR ni EKS de Artifact Registry: si una nube cae, la otra debe poder arrancar pods nuevos.

Quiz

Pon a prueba lo que aprendiste

0 de 5 correctas · 5 sin responder

  1. 1.Un equipo crea un clúster GKE Standard zonal en us-east1-b para producción. ¿Qué riesgo corre que no tendría en EKS?

  2. 2.Un MIG regional de 6 VMs en tres zonas, sin autoescalado, pierde una zona. ¿Qué pasa?

  3. 3.Una API en Cloud Run debe sobrevivir a la caída de una región. ¿Qué diseño cumple?

  4. 4.Los pods de GKE deben leer secretos de Secret Manager. ¿Qué haces?

  5. 5.La plataforma corre en EKS y en GKE. ¿Cómo manejas las imágenes para que una nube no dependa de la otra?