Compute Services
🧠 Servicios de Cómputo¶
Compute Engine (VM)¶
- IaaS - MV bajo demanda
- IP address - doc
- Para localizar la IP externa (e interna) de la MV, se debe utilizar:
gcloud compute instances list -
Si la MV está autorizada, puede recibir una dirección IP externa y mapearla a su dirección interna
-
⭐ Cuotas doc
- Hay dos tipos de Cuotas: proyecto o regional
- Proyecto:
- Puestas para un proyecto especifico, se puede saber con:
gcloud compute project-info describe --project ID_PROYECTO
- Puestas para un proyecto especifico, se puede saber con:
-
Regional:
- Las cuotas de las MV son gestionada a nivel regional:
gcloud compute regions describe REGION
- Las cuotas de las MV son gestionada a nivel regional:
-
Note:
-
“Las cuotas no garantizan que los recursos estén disponibles siempre”
-
Almacenamiento:
- SSDs Local - doc
- Mejor rendimiento: están fisicamente conectados al servidor que hospeda la instancia de MV
- 375 GB de capacidad
- Pueden ser conectados 24 discos para un total máximo de 9 TB
- scripts de apagado - doc
- tienen una limitada cantidad de tiempo para finalizar los procesos corriendo (Instancias descartables: 30s)script desde la Consola usando la clave de metadatos shutdown-script
- Instance groups
- colección de MV que pueden ser gestionados como una simple entidad - doc
- Hay dos Tipos de IG:
- Grupo de Instancias Gestionadas (MIGs)
- ⭐ Múltiples e identicas MV, escalables y altamente disponibles.
- crea MV desde un template de instancias y configuración Stateful opcional (por ejemplo, discos)
- Hay dos tipos de MIG:
- MIG Zonal
- despliga instancia en una zona
- MIG Regional
- despliga instancias a través de multiples zonas de la misma Región
- Grupo de Instancias No Gestionadas
- pueden contener instancias heterogeneas, necesita ser gestionado por un humano
- no ofrecen autoescalado, autosanado, soporte a actualizaciones rolling ni soporte multi-zone
- ⭐ "Usa grupo de instancias no gestionadas cuando se necesiten aplicar equilibrio de carga a grupos de instancias heterogeneas, o si se necesita gestionar las instancias por un humano" - doc
- Ahorra Costos
- Instancias de MV Interrumpibles (Preemptible)
- ⭐ Instancias de MV Interrumpibles no pueden ser migradas a una instancia de MV regular - doc
- Descuentos por Comprometimiento de Uso
- Si hubiere una carga de trabajo que siempre (o la mayor parte de las veces) sea requerida, se puede comprometer a utilizar una MV de 1 a 3 años y recibir un descuento.
- MV Protegida - doc
- ⭐ ofrece integridad verificable de tus instancias de VM de Compute Engine, para que puedas estar seguro de que las instancias no se expusieron a software malicioso o rootkits de nivel de inicio y kernel
- uso del Inicio seguro, el inicio medido habilitado para el módulo de plataforma segura virtual (vTPM) y el monitoreo de integridad.
- Cloud Console
- ⭐ Para reiniciar una MV, se debe utilizar el botón reset
- Se pueden ordenar las instancias de MV por Etiquetas, estatus, zonas, usado por, IP, etc.
- ⭐ Se puede filtrar una instancia por You can filter VM instances by Etiquetas, estatus, Miebro del Grupo de Instancias Gestionadas, IP, Propiedades de la MV.
- GPU
- ⭐ Se debe configurar las instancias de GPU para que se detengan durante los eventos de mantenimiento del host - doc
- Snapshot
- ⭐ Compute Engine usar instantaneas incrementales por lo que cada instantea contiene solo los datos que han sufrido cambios desde la instantanea previa. - doc
- Para tomar una instantanea se debe tener el rol de Compute Storage Admin - doc
- Permisos para crear, modificar y eliminar discos, imagenes e instantaneas.
- Discos
- Los discos están a nivel regional, por lo que se puede habilitar replicación regional
- Regional: el disco será reolicado sincronicamente a través de dos zonas dentro de una Región
- Caso de Uso: Copiar una MV desde una zona a otra en la misma Región
- gcloud para copiar el disco a una nueva zona, para entonces crear una MV a partir de ese disco
- Otros: Mover una instancia entre zonas - doc
GKE - Google Kubernetes Engine¶
- Ejecuta aplicaciones contenereizas en un entorno gestionado
- construido sobre Compute engine
- Clúster Regional
- Se puede especificar un clúster, y GCP replica las configuraciones a todas las demás zonas
- Problema: se paga por recursos multiplicando el número de zonas disponibles
- Clúster Multizona
- Se puede escoger mas de una zona de una Región
- Se reducen costos (por ejemplo se pueden seleccionar 2 zonas en lugar de 3)
- Y no es necesario mantener los mismos nodos en ambas zonas, en caso de fallas en una zona, esto puede ser un potencial
- Problema: el nodo maestro está solo en la zona principal Si la zona muere, el nodo maestro muere
- Aprovisionamiento Automático - doc
- GCP tratará de entender los recursos requeridos por un pod, y creará un pool de nodos bajo demanda con los suficientes recursos para alojar ese pod
- Adapta el pool de nodos de acuerdo a los requisitos que necesite el pod
- Binary Authorization
- Despliega solo contenedores verificados en Google Kubernetes Engine.
Cloud Run¶
- En una frase: el usuario le proporcionará a Google Cloud Run un contenedor Docker que contebga un servidor web.
- Google ejecutará este contenedor y creará un endpoint HTTP. - medium
- ⭐ Puede ser facilmente confundido con App engine (particularmente con App Engine Flex)
- [aquí] hay algunos comentarios utiles:
- “AppEngine solo puede ser desplegado en una sola Región.”
- Cloud run permite desplegar un servicio a cualquier Región dentro de un proyecto haciendo su API realmente global, todo dentro del mismo proyecto.
App Engine¶
- ⭐ Definiciones:
- Una aplicación por proyecto
- La aplicación puede tener multiples Servicios:
- Los componentes lógicos pueden compartir de forma segura las funciones de App Engine y comunicarse
- Cada cambio en el Servicio crea una nueva Versión
- Cada Versión se ejecuta en una máquina llamada Instancia
- PaaS - Ejecuta codigo en la nube sin preocuparnos por la insfraestructura
- Se le indica a Google como la aplicación debe ser ejecutada.
- App Engine creará y ejecutará un contenedor con esas instrucciones.
-
Por ejemplo, especificar un app.yml con:
- runtime: nodejs12
- entrypoint: node build/server.js
-
Caracteristicas Básicas
- No se puede escribir en el disco local, se debe probar la aplicación localmente, para que encaje bien con la arquitectura de microservicios
- ⭐ Solo una App Engine por Proyecto - doc
- ⭐ Limites - doc
- Servicios máximos por aplicación: 5
- Versiones máximas por aplicación: 5
- Instancias máximas por versión con escalado manual: 20
- Entornos - docs
- Entorno Estandar
- código en una versión especifica en un lenguaje de programación especifico, inicio rápido (sec)
- Entorno Flexible
- ofrece docker, inicio más lento (min)
- ⭐ Localizaciones
- App Engine es un servicio regional, No se pueden trasladar aplicaciones de Región. - doc
- Servicios
- Se pueden desplegar multiples servicios en un solo App Engine dentro del mismo proyecto en que la reside
- “Una aplicación de App Engine consta de un solo recurso de aplicación que consiste en uno o más servicios.” - doc
- “Dentro de cada servicio se implementan sus versiones”
- Limites
- Cantidad de Servicios máximos por aplicación - App Grátis 5 - App de Pago 105
- Cantidad de Versiones máximas por aplicación - App Grátis 15 - App de Pago 210
{% gist 7ba177dfdd6aa1f63ffa48c6f5317066 %}
-
Si se desea dividir el tráfico con una cookie, el nombre de la cookie debe ser GOOGAPPUID - doc
-
⭐ Escalado - doc
- Escalado Básico:
- App Engine intenta de mantener bajos los cotos, aún cuando esto resulte en una alta latencia y el volumen de petición se incremente
-
Escalado Automático:
- Cada instancia en la aplicacion tiene su propia cola para peticiones entrantes. App Engine automáticamente gestiona el incremento en la carga
-
⭐ Instancia
-
La clase de instancia determina la cantidad de memoria y CPU disponibles para cada instancia - doc (el tipo de MV)
-
⭐ HTTP url - doc
-
https://ID_PROYECTO.ID_REGION.r.appspot.com
-
app.yaml - doc
- Se puede configurar la app de App Engine en el archivo app.yaml.
- Algunas opciones interesentes que deben estar en el archivo yaml son:
- api_version: Obligatorio
- default_expiration: Establece un período de caché predeterminado global para todos los controladores de archivos estáticos de una aplicación.
- env_variables: Se definen variables de entorno
- includes: permite incluir el archivo de configuración de cualquier biblioteca o servicio en toda la aplicación.
- instance_class
- libraries: - Obsoleto, usar requirements.txt para especifiar una biblioteca Python
- threadsafe: Obligatorio, Configura la aplicación para utilizar peticiones concurrentes
- version: - mejor configurarlo con la CLI
- automatic_scaling
- [min/max]_instances
- ⭐ max_concurrent_requests: número de peticiones concurrentes que una instancia de escalado automático puede aceptar antes de que el programador genere una nueva instancia (predeterminado: 10, máximo: 80).
- max_idle_instances: cantidad máxima de instancias inactivas que App Engine debe mantener para esta versión.
- basic_scaling
- max_instances: ⭐ Nota: el valor min_instances no existe!
- idle_timeout: La instancia se cerrará en esta cantidad de tiempo después de recibir su última petición.