GSP766
Descripción general
Cuando consideres soluciones de optimización de costos para cualquier
infraestructura de Google Cloud creada en clústeres de Google Kubernetes
Engine (GKE), es importante que te asegures de hacer un uso eficaz de los
recursos que se facturan. Un error común es asignar a los clústeres una
proporción de uno a uno de usuarios o equipos, lo que causa la proliferación
de clústeres.
Un clúster de múltiples usuarios permite que varios usuarios
o equipos compartan un clúster para sus cargas de trabajo, mientras mantienen
el aislamiento y el uso compartido equitativo de recursos. Esto se logra
mediante la creación de espacios de nombres. Los espacios de
nombres permiten que existan varios clústeres virtuales en el mismo clúster
físico.
En este lab, aprenderás a configurar un clúster de múltiples usuarios mediante
el uso de varios espacios de nombres para optimizar el uso de los recursos y,
en efecto, optimizar los costos.
Objetivos
En este lab, aprenderás a hacer lo siguiente:
- Crear varios espacios de nombres en un clúster de GKE
-
Configurar el control de acceso basado en roles para el acceso al espacio de
nombres
-
Configurar las cuotas de recursos de Kubernetes para lograr el uso
compartido equitativo de los recursos entre varios espacios de nombres
-
Visualizar y configurar los paneles de supervisión para ver el uso de
recursos por espacio de nombres
-
Generar un informe de medición de GKE en Data Studio para obtener métricas
detalladas sobre el uso de recursos por espacio de nombres
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
- Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
-
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
- El botón para abrir la consola de Google Cloud
- El tiempo restante
- Las credenciales temporales que debes usar para el lab
- Otra información para completar el lab, si es necesaria
-
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
-
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
-
Haz clic en Siguiente.
-
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Detalles del lab.
-
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
-
Haz clic para avanzar por las páginas siguientes:
- Acepta los Términos y Condiciones.
- No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
- No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Inicio
Después de presionar el botón Comenzar lab, verás un mensaje
azul que indica Provisioning Lab Resources con un tiempo estimado
restante. Se está creando y configurando el entorno que usarás para probar la
administración de un clúster de múltiples usuarios. En un período estimado de
5 minutos, se creará un clúster, se copiarán los conjuntos de datos de
BigQuery y se generarán las cuentas de servicio que representarán a los
equipos.
Una vez que finalice el proceso, el mensaje ya no se mostrará.
Espera a que se complete este proceso de inicio y se quite el mensaje antes de
continuar con el lab.
Activa Cloud Shell
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
-
Haz clic en Activar Cloud Shell
en la parte superior de la consola de Google Cloud.
-
Haz clic para avanzar por las siguientes ventanas:
- Continúa en la ventana de información de Cloud Shell.
- Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
- Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
- Haz clic en Autorizar.
Resultado:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project
Resultado:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.
Tarea 1: Descarga los archivos necesarios
-
En este lab, algunos pasos usarán archivos
yaml para configurar
tu clúster de Kubernetes. En Cloud Shell, descarga los siguientes archivos
desde un bucket de Cloud Storage:
gsutil -m cp -r gs://spls/gsp766/gke-qwiklab ~
- Cambia el directorio de trabajo actual a
gke-qwiklab:
cd ~/gke-qwiklab
Tarea 2: Visualiza y crea espacios de nombres
-
Ejecuta el siguiente comando para establecer una zona de procesamiento
predeterminada y autenticar el clúster proporcionado
multi-tenant-cluster:
export ZONE={{{project_0.default_zone|placeholder}}} gcloud config set
compute/zone ${ZONE} && gcloud container clusters get-credentials
multi-tenant-cluster
Espacios de nombres predeterminados
De forma predeterminada, los clústeres de Kubernetes tienen 4 espacios de
nombres del sistema.
-
Puedes obtener una lista completa de los espacios de nombres del clúster
actual con el siguiente comando:
kubectl get namespace
El resultado debería ser similar al siguiente:
NAME STATUS AGE default Active 5m kube-node-lease Active 5m kube-public Active
5m kube-system Active 5m
-
default: Es el espacio de nombres predeterminado que se usa
cuando no se especifica otro espacio de nombres.
-
kube-node-lease: Administra los objetos de asignación de
tiempo asociados con las señales de monitoreo de funcionamiento de cada uno
de los nodos del clúster.
-
kube-public: Se usará para los recursos que necesiten ser
visibles o legibles para todos los usuarios en todo el clúster.
-
kube-system: Se usa para componentes creados por el sistema
de Kubernetes.
No todo pertenece a un espacio de nombres. Por ejemplo, los nodos, los
volúmenes persistentes y los mismos espacios de nombres no pertenecen a un
espacio de nombres.
-
Para obtener una lista completa de los recursos con espacio de nombres,
ejecuta el siguiente comando:
kubectl api-resources --namespaced=true
Cuando se crean, los recursos con espacios de nombres deben estar asociados a
un espacio de nombres. Para ello, se debe incluir la marca
--namespace o indicar un espacio de nombres en el campo de
metadatos del archivo yaml.
-
El espacio de nombres también se puede especificar con cualquier subcomando
kubectl get para mostrar los recursos de un espacio de nombres.
Por ejemplo:
kubectl get services --namespace=kube-system
Se mostrarán todos los servicios en el espacio de nombres
kube-system.
Crea espacios de nombres nuevos
Nota: Cuando crees espacios de nombres adicionales, no uses el prefijo
“kube”, ya que se reserva para los espacios de nombres del
sistema.
-
Crea 2 espacios de nombres para
team-a y team-b:
kubectl create namespace team-a && \ kubectl create namespace team-b
El resultado del comando kubectl get namespace ahora debería
incluir los 2 espacios de nombres nuevos:
namespace/team-a created namespace/team-b created
Si especificas la etiqueta --namespace, puedes crear recursos de
clúster en el espacio de nombres proporcionado. Los nombres de los recursos,
como los Deployments o los Pods, solo deben ser únicos dentro de sus
respectivos espacios de nombres.
-
A modo de ejemplo, ejecuta el siguiente comando para implementar un Pod en
el espacio de nombres team-a y en team-b con el mismo nombre:
kubectl run app-server --image=quay.io/centos/centos:9 --namespace=team-a --
sleep infinity && \ kubectl run app-server
--image=quay.io/centos/centos:9 --namespace=team-b -- sleep infinity
-
Usa el comando
kubectl get pods -A para comprobar que haya 2
Pods llamados app-server, uno para cada espacio de nombres de
los equipos:
kubectl get pods -A
Resultado:
NAMESPACE NAME READY STATUS RESTARTS AGE kube-system
event-exporter-gke-8489df9489-k2blq 2/2 Running 0 3m41s kube-system
fluentd-gke-fmt4v 2/2 Running 0 113s kube-system fluentd-gke-n9dvn 2/2 Running
0 79s kube-system fluentd-gke-scaler-cd4d654d7-xj78p 1/1 Running 0 3m37s
kube-system gke-metrics-agent-4jvn8 1/1 Running 0 3m33s kube-system
gke-metrics-agent-b4vvw 1/1 Running 0 3m27s kube-system
kube-dns-7c976ddbdb-gtrct 4/4 Running 0 3m41s kube-system
kube-dns-7c976ddbdb-k9bgk 4/4 Running 0 3m kube-system
kube-dns-autoscaler-645f7d66cf-jwqh5 1/1 Running 0 3m36s kube-system
kube-proxy-gke-new-cluster-default-pool-eb9986d5-tpql 1/1 Running 0 3m26s
kube-system kube-proxy-gke-new-cluster-default-pool-eb9986d5-znm6 1/1 Running
0 3m33s kube-system l7-default-backend-678889f899-xvt5t 1/1 Running 0 3m41s
kube-system metrics-server-v0.3.6-64655c969-jtl57 2/2 Running 0 3m kube-system
prometheus-to-sd-d6dpf 1/1 Running 0 3m27s kube-system prometheus-to-sd-rfdlv
1/1 Running 0 3m33s kube-system
stackdriver-metadata-agent-cluster-level-79f9ddf6d6-7ck2w 2/2 Running 0 2m56s
team-a app-server 1/1 Running 0 33s team-b app-server 1/1 Running 0 33s
Haz clic en Revisar mi progreso para verificar la realización
de la tarea indicada arriba.
Crear espacios de nombres
-
Usa el comando
kubectl describe para ver los detalles
adicionales de cada uno de los Pods recién creados. Para ello, especifica el
espacio de nombres con la etiqueta --namespace:
kubectl describe pod app-server --namespace=team-a
-
Para trabajar con recursos exclusivamente en un espacio de nombres, puedes
configurarlo una vez en el contexto de
kubectl en lugar de usar
la marca --namespace para cada comando:
kubectl config set-context --current --namespace=team-a
-
Después de esto, los comandos posteriores se ejecutarán en el espacio de
nombres indicado, sin especificar la marca
--namespace:
kubectl describe pod app-server
En la siguiente sección, configurarás el control de acceso basado en roles
para tus espacios de nombres para ayudar a organizar el clúster.
Tarea 3: Control de acceso en espacios de nombres
El aprovisionamiento del acceso a los recursos con espacio de nombres en un
clúster se logra usando una combinación de roles de IAM y control de acceso
basado en roles (RBAC) integrado de Kubernetes. Un rol de IAM le otorgará a
una cuenta acceso inicial al proyecto, mientras que los permisos de RBAC
otorgarán acceso detallado a los recursos con espacio de nombres de un clúster
(Pods, Deployments, Services, etcétera).
Roles de IAM
Nota: Para otorgar roles de IAM en un proyecto, deberás
tener asignado el rol de administrador de IAM del proyecto. Esto ya se
configuró en tu cuenta temporal de Qwiklabs.
Cuando se administra el control de acceso para Kubernetes, se usa Identity and
Access Management (IAM) para administrar el acceso y los permisos en niveles
más altos de proyecto y organización.
En IAM, existen varios roles que se pueden asignar a usuarios y cuentas de
servicio que rigen su nivel de acceso con GKE. Los permisos detallados de RBAC
se basan en el acceso ya proporcionado por IAM y no pueden restringir el
acceso otorgado. Como resultado, para los clústeres de múltiples usuarios con
espacios de nombres, el rol de IAM asignado debe otorgar acceso mínimo.
A continuación, se muestra una tabla de roles comunes de IAM de GKE que puedes
asignar:
| Rol |
Descripción |
|
Administrador de Kubernetes Engine
|
Proporciona acceso a la administración completa de los clústeres y sus
objetos de la API de Kubernetes. Un usuario con este rol podrá crear,
editar y borrar cualquier recurso en
cualquier clúster y los espacios de nombres creados
posteriormente.
|
|
Desarrollador de Kubernetes Engine
|
Proporciona acceso a los objetos de la API de Kubernetes dentro de los
clústeres. Un usuario con este rol podrá crear, editar y borrar
recursos en cualquier clúster y los espacios de
nombres creados posteriormente.
|
|
Administrador de clústeres de Kubernetes Engine
|
Proporciona acceso a la administración de los clústeres. Un usuario
con este rol no tendrá acceso directo para crear o editar recursos
dentro de un clúster ni en los espacios de nombres creados
posteriormente, pero podrá crear, modificar y borrar cualquier
clúster.
|
|
Visualizador de Kubernetes Engine
|
Proporciona acceso de solo lectura a los recursos de GKE. Un usuario
con este rol tendrá acceso de solo lectura a los espacios de nombres y
a sus recursos.
|
|
Visualizador de clústeres de Kubernetes Engine
|
Puede obtener y enumerar clústeres de GKE. Este es el rol mínimo
requerido para cualquier persona que necesite acceder a los recursos
dentro de los espacios de nombres de un clúster.
|
Si bien la mayoría de estos roles otorgan demasiado acceso para restringir con
el RBAC, el rol de IAM
Visualizador de clústeres de Kubernetes Engine otorga a los
usuarios permisos suficientes para acceder al clúster y a los recursos con
espacio de nombres.
Tu proyecto de lab tiene una cuenta de servicio; esta representará a un
desarrollador que usará el espacio de nombres team-a.
-
Ejecuta el siguiente comando para otorgarle a la cuenta el rol Visualizador
de clústeres de Kubernetes Engine:
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member=serviceAccount:team-a-dev@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
\ --role=roles/container.clusterViewer
RBAC de Kubernetes
Dentro de un clúster, el acceso a cualquier tipo de recurso (Pods, Services,
Deployments, etc.) se define mediante un rol o un
rol de clúster. Solo los roles pueden tener
permisos para un espacio de nombres. Mientras que un rol indicará los recursos
y la acción permitida para cada recurso, una
vinculación de rol indicará a qué cuentas de usuario o grupos
asignar ese acceso.
Para crear un rol en el espacio de nombres actual, especifica el tipo de
recurso, así como los verbos que indicarán qué tipo
de acción se permitirá.
-
Los roles con reglas únicas se pueden crear con
kubectl create:
kubectl create role pod-reader \ --resource=pods --verb=watch --verb=get
--verb=list
Los roles con varias reglas se pueden crear con un archivo yaml.
Encontrarás un archivo de ejemplo en los archivos que descargaste antes en el
lab.
- Inspecciona el archivo
yaml:
cat developer-role.yaml
Resultado de muestra:
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace:
team-a name: developer rules: - apiGroups: [""] resources: ["pods",
"services", "serviceaccounts"] verbs: ["update", "create", "delete", "get",
"watch", "list"] - apiGroups:["apps"] resources: ["deployments"] verbs:
["update", "create", "delete", "get", "watch", "list"]
- Aplica el rol anterior:
kubectl create -f developer-role.yaml
-
Crea una vinculación de rol entre la cuenta de servicio team-a-developers y
el rol developer-role:
kubectl create rolebinding team-a-developers \ --role=developer
--user=team-a-dev@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Prueba la RoleBinding
-
Descarga las claves de la cuenta de servicio que se usaron para utilizar la
identidad de la cuenta de servicio:
gcloud iam service-accounts keys create /tmp/key.json --iam-account
team-a-dev@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Haz clic en Revisar mi progreso para verificar la realización
de la tarea indicada arriba.
Control de acceso en espacios de nombres
-
En Cloud Shell, haz clic en el signo + para abrir una pestaña
nueva de la terminal.
-
A continuación, ejecuta el siguiente comando para activar la cuenta de
servicio. Esto te permitirá ejecutar los comandos como si fueras la
cuenta:
gcloud auth activate-service-account --key-file=/tmp/key.json
-
Obtén las credenciales para el clúster, como si fueras la cuenta de
servicio:
export ZONE={{{project_0.default_zone|placeholder}}} gcloud container clusters
get-credentials multi-tenant-cluster --zone ${ZONE} --project
${GOOGLE_CLOUD_PROJECT}
-
Verás que, como team-a-dev, ahora puedes enumerar los Pods en el espacio de
nombres team-a:
kubectl get pods --namespace=team-a
Resultado:
NAME READY STATUS RESTARTS AGE app-server 1/1 Running 0 6d
-
Sin embargo, enumerar los Pods en el espacio de nombres team-b es una acción
que está restringida:
kubectl get pods --namespace=team-b
Resultado:
Error from server (Forbidden): pods is forbidden: User
"team-a-dev@a-gke-project.iam.gserviceaccount.com" cannot list resource "pods"
in API group "" in the namespace "team-b": requires one of
["container.pods.list"] permission(s).
-
Regresa a la primera pestaña de Cloud Shell o abre una nueva.
-
Renueva las credenciales del clúster y restablece tu contexto al espacio
de nombres team-a:
export ZONE={{{project_0.default_zone|placeholder}}} gcloud container clusters
get-credentials multi-tenant-cluster --zone ${ZONE} --project
${GOOGLE_CLOUD_PROJECT}
Tarea 4: Cuotas de recursos
Cuando se comparte un clúster con múltiples usuarios, es importante asegurarse
de que los usuarios no puedan usar más que su cuota justa de los recursos del
clúster. Un objeto de cuota de recursos (ResourceQuota) definirá las
restricciones que limitarán el consumo de recursos en un espacio de nombres.
Una cuota de recursos puede especificar un límite para la cantidad total de
objetos (Pods, Services, StatefulSets, etc.), la suma total de recursos de
almacenamiento (reclamaciones de volumen persistente, almacenamiento efímero y
clases de almacenamiento) o la suma total de recursos de procesamiento (CPU y
memoria).
-
Por ejemplo, el siguiente comando establecerá un límite de 2 para la
cantidad de Pods permitidos en el espacio de nombres
team-a y
de 1 para los LoadBalancers:
kubectl create quota test-quota \
--hard=count/pods=2,count/services.loadbalancers=1 --namespace=team-a
- Crea un segundo Pod en el espacio de nombres team-a:
kubectl run app-server-2 --image=quay.io/centos/centos:9 --namespace=team-a --
sleep infinity
- Ahora, intenta crear un tercer Pod:
kubectl run app-server-3 --image=quay.io/centos/centos:9 --namespace=team-a --
sleep infinity
Deberías recibir el siguiente error:
Error from server (Forbidden): pods "app-server-3" is forbidden: exceeded
quota: test-quota, requested: count/pods=1, used: count/pods=2, limited:
count/pods=2
-
Puedes verificar los detalles sobre la cuota de recursos con el comando
kubectl describe:
kubectl describe quota test-quota --namespace=team-a
Resultado:
Name: test-quota Namespace: team-a Resource Used Hard -------- ---- ----
count/pods 2 2 count/services.loadbalancers 0 1
Aquí puedes ver una lista de los recursos restringidos por la cuota de
recursos, junto con el límite estricto configurado y la cantidad que se usa
actualmente.
-
Actualiza
test-quota para que tenga un límite de 6 Pods. Para
ello, ejecuta el siguiente comando:
export KUBE_EDITOR="nano" kubectl edit quota test-quota --namespace=team-a
Podrás editar un archivo yaml que kubectl usará para
actualizar la cuota. La cuota fija es el valor de count/pods que
se encuentra en la sección spec.
-
Cambia el valor de
count/pods de la sección spec a
6:
apiVersion: v1 kind: ResourceQuota metadata: creationTimestamp:
"2020-10-21T14:12:07Z" name: test-quota namespace: team-a resourceVersion:
"5325601" selfLink: /api/v1/namespaces/team-a/resourcequotas/test-quota uid:
a4766300-29c4-4433-ba24-ad10ebda3e9c spec: hard: count/pods: "6"
count/services.loadbalancers: "1" status: hard: count/pods: "5"
count/services.loadbalancers: "1" used: count/pods: "2"
- Presiona Ctrl + X, Y y, luego, Intro para guardar y salir.
La cuota actualizada debería reflejarse en el resultado:
kubectl describe quota test-quota --namespace=team-a
Resultado:
Name: test-quota Namespace: team-a Resource Used Hard -------- ---- ----
count/pods 2 6 count/services.loadbalancers 0 1
Cuotas de CPU y memoria
Cuando configuras cuotas de CPU y memoria, puedes indicar una cuota para la
suma de solicitudes (un valor que se garantiza a un contenedor) o la suma de
límites (un valor que un contenedor nunca podrá pasar).
En este lab, tu clúster tendrá 4 máquinas e2-standard-2, con 2 núcleos y 8 GB
de memoria cada una. Se te proporcionó un archivo yaml de cuota de recursos de
muestra para el clúster:
cpu-mem-quota.yaml
apiVersion: v1 kind: ResourceQuota metadata: name: cpu-mem-quota namespace:
team-a spec: hard: limits.cpu: "4" limits.memory: "12Gi" requests.cpu: "2"
requests.memory: "8Gi"
- Aplica la configuración del archivo:
Nota: Asegúrate de seguir en el directorio
gke-qwiklab.
kubectl create -f cpu-mem-quota.yaml
Al establecer esta cuota, la suma de todas las solicitudes de CPU y memoria de
los Pods se limitará a 2 CPU y 8 GiB, y sus límites a 4 CPU y 12 GiB,
respectivamente.
Nota: Cuando existe una cuota de recursos para CPU o memoria
en un espacio de nombres, cada contenedor que se cree en ese espacio de
nombres debe tener su propio límite de CPU y memoria definido durante su
creación o un valor predeterminado asignado en el espacio de nombres como
LimitRange.
-
Para demostrar la cuota de CPU y memoria, crea un Pod nuevo con el comando
cpu-mem-demo-pod.yaml:
cpu-mem-demo-pod.yaml:
apiVersion: v1 kind: Pod metadata: name: cpu-mem-demo namespace: team-a spec:
containers: - name: cpu-mem-demo-ctr image: nginx resources: requests: cpu:
"100m" memory: "128Mi" limits: cpu: "400m" memory: "512Mi"
- Aplica la configuración del archivo:
kubectl create -f cpu-mem-demo-pod.yaml --namespace=team-a
-
Una vez que se haya creado el Pod, ejecuta el siguiente comando para ver sus
solicitudes y límites de CPU y memoria reflejados en la cuota:
kubectl describe quota cpu-mem-quota --namespace=team-a
Resultado:
Name: cpu-mem-quota Namespace: team-a Resource Used Hard -------- ---- ----
limits.cpu 400m 4 limits.memory 512Mi 12Gi requests.cpu 100m 2 requests.memory
128Mi 8Gi
Haz clic en Revisar mi progreso para verificar la realización
de la tarea indicada arriba.
Cuotas de recursos
Tarea 5: Supervisa y mide el uso de GKE
En la mayoría de los clústeres de múltiples usuarios, es probable que cambien
las cargas de trabajo y los requisitos de los recursos de cada usuario.
Además, es posible que tengas que ajustar las cuotas de recursos. Con
Monitoring, puedes obtener una vista general de los recursos que usa cada
espacio de nombres.
Con la medición de uso de GKE, puedes obtener una vista más detallada del uso
de los recursos y, posteriormente, una mejor idea de los costos asociados con
cada usuario.
Panel de Monitoring
-
En la consola de Cloud, haz clic en el
menú de navegación (
) > Ver todos los productos. En la sección
Observabilidad, haz clic en Monitoring.
Espera un momento mientras se crea el espacio de trabajo para tu proyecto.
-
En la página Descripción general, selecciona Paneles en el
menú de la izquierda:
-
Selecciona GKE en la página
Resumen de los paneles.
El Panel de GKE te ofrece una colección de tablas en las que se detalla el uso
agregado por varios recursos de la CPU, la memoria y el disco.
Por ejemplo, la tabla Espacios de nombres mostrará el uso de cada uno de los
espacios de nombres de tus clústeres:
También puedes consultar los datos de uso de las cargas de trabajo que se
ejecutan en tu clúster en la tabla Cargas de trabajo.
-
Haz clic en Ver todo.
-
En la casilla AGREGAR FILTRO, selecciona
Espacios de nombres > team-a.
-
Luego, haz clic en Aplicar.
Esto filtrará las cargas de trabajo para incluir solo aquellas que se ejecuten
en el espacio de nombres team-a:
Explorador de métricas
-
En el panel de la izquierda, selecciona
Explorador de métricas.
-
En el campo Selecciona una métrica, haz clic en el menú desplegable
Métrica.
-
Escribe Contenedor de Kubernetes en Filtrar por nombre de
recurso y métrica.
-
Haz clic en Contenedor de Kubernetes > Contenedor.
-
Selecciona Tiempo de uso de CPU.
-
Haz clic en Aplicar.
Nota: Escribe cp en el campo de la métrica
y deberías ver el tiempo de uso de CPU como una opción en el menú desplegable.
-
Para excluir el nombre de espacio de kube-system, haz clic en
Agregar filtro en la sección de filtro.
-
Selecciona namespace_name como etiqueta.
-
Selecciona != (no es igual a) como comparación y
kube-system como valor.
-
Luego, en el menú desplegable Agregación selecciona
Suma y, en el menú desplegable de
namespace_name, haz clic en Aceptar.
Verás un gráfico que muestra el tiempo de uso de CPU del contenedor por
espacio de nombres:
Medición de uso de GKE
La medición de uso de GKE te permite exportar el uso y el consumo de recursos
del clúster de GKE a un conjunto de datos de BigQuery; allí podrás
visualizarlo con Data Studio. Permite una vista más detallada del uso de
recursos. Con la medición de uso, puedes tomar decisiones mejor fundamentadas
sobre las cuotas de recursos y la configuración eficiente para el clúster.
Nota: Puesto que los datos de las métricas de GKE pueden
tardar varias horas en propagarse a BigQuery, el proyecto del lab incluye
conjuntos de datos de BigQuery con datos de uso y facturación simulados con
fines ilustrativos.
Se agregaron a tu proyecto los dos conjuntos de datos que se detallan a
continuación:
cluster_dataset: Es un conjunto de datos que se crea de forma
manual antes de habilitar la medición de uso de GKE en el clúster. Este
conjunto de datos contiene 2 tablas generadas por GKE
(gke_cluster_resource_consumption y gke_cluster_resource_usage) y se actualiza
de forma continua con las métricas de uso del clúster.
billing_dataset: Es un conjunto de datos que se crea de forma
manual antes de habilitar la exportación a BigQuery para la facturación. Este
conjunto de datos contiene 1 tabla (gcp_billing_export_v1_xxxx) y se actualiza
todos los días con los costos diarios de un proyecto.
-
Ejecuta el siguiente comando para habilitar la medición de uso de GKE en el
clúster y especificar el conjunto de datos
cluster_dataset:
export ZONE={{{project_0.default_zone|placeholder}}} gcloud container clusters
\ update multi-tenant-cluster --zone ${ZONE} \
--resource-usage-bigquery-dataset cluster_dataset
Crea la tabla de desglose de costos de GKE
Puedes generar una tabla cost_breakdown a partir de las tablas de facturación
y uso de recursos de tu proyecto. Generarás esta tabla en el conjunto de datos
del clúster con el archivo usage_metering_query_template.sql.
Esta plantilla está disponible a través de
Información sobre el uso de recursos del clúster.
Primero, configura algunas variables de entorno en Cloud Shell.
-
Establece la ruta de acceso de la tabla de facturación y del conjunto de
datos de medición de uso proporcionados, y un nombre para la nueva tabla de
desglose de costos:
export
GCP_BILLING_EXPORT_TABLE_FULL_PATH=${GOOGLE_CLOUD_PROJECT}.billing_dataset.gcp_billing_export_v1_xxxx
export USAGE_METERING_DATASET_ID=cluster_dataset export
COST_BREAKDOWN_TABLE_ID=usage_metering_cost_breakdown
-
A continuación, especifica la ruta de acceso de la plantilla de consulta de
medición de uso que descargaste al comienzo de este lab, un archivo de
salida para la consulta de medición de uso que se generará y una fecha de
inicio para los datos (la fecha más temprana de los datos es el 26/10/2020):
export
USAGE_METERING_QUERY_TEMPLATE=~/gke-qwiklab/usage_metering_query_template.sql
export USAGE_METERING_QUERY=cost_breakdown_query.sql export
USAGE_METERING_START_DATE=2020-10-26
-
Ahora, con estas variables de entorno y la plantilla de consulta, genera la
consulta de medición de uso:
sed \ -e
"s/\${fullGCPBillingExportTableID}/$GCP_BILLING_EXPORT_TABLE_FULL_PATH/" \ -e
"s/\${projectID}/$GOOGLE_CLOUD_PROJECT/" \ -e
"s/\${datasetID}/$USAGE_METERING_DATASET_ID/" \ -e
"s/\${startDate}/$USAGE_METERING_START_DATE/" \
"$USAGE_METERING_QUERY_TEMPLATE" \ > "$USAGE_METERING_QUERY"
-
Ejecuta el siguiente comando para configurar tu tabla de desglose de costos
mediante la consulta que realizaste en el paso anterior:
bq query \ --project_id=$GOOGLE_CLOUD_PROJECT \ --use_legacy_sql=false \
--destination_table=$USAGE_METERING_DATASET_ID.$COST_BREAKDOWN_TABLE_ID \
--schedule='every 24 hours' \ --display_name="GKE Usage Metering Cost
Breakdown Scheduled Query" \ --replace=true \ "$(cat $USAGE_METERING_QUERY)"
-
La Transferencia de datos debe proporcionar un vínculo para la autorización.
Haz clic en él, accede con tu cuenta de estudiante, sigue las instrucciones
y vuelve a pegar
version_info en Cloud Shell.
Luego, debería devolverse un mensaje que indique que la configuración de
transferencia se creó correctamente.
Crea la fuente de datos en Data Studio
-
Abre la
página Fuentes de datos de Data Studio.
-
En la esquina superior izquierda, haz clic en Crear >
Fuente de datos para agregar una fuente de datos nueva.
Para empezar, verás la ventana
Primero, completemos la configuración de tu cuenta.
-
Selecciona el país, ingresa el nombre de la empresa, marca la casilla de
confirmación y, luego, haz clic en Continuar.
-
Selecciona No para cada opción de
Configura tus preferencias de correo electrónico, ya que
se trata de un lab o una cuenta temporales.
-
Haz clic en Continuar.
Verás una lista de Google Connectors que son compatibles con Data Studio.
- Selecciona BigQuery de la lista.
-
Haz clic en el botón Autorizar para permitir que Data
Studio acceda a tu proyecto de BigQuery.
-
En la parte superior izquierda de la página, cambia el nombre de tu fuente
de datos de Fuente de datos sin título a
GKE Usage.
-
En la primera columna, selecciona Consulta personalizada.
-
Selecciona tu ID del proyecto en la columna de proyectos.
-
Ingresa la siguiente consulta en el cuadro de consulta personalizada y
reemplaza [PROJECT-ID] por el ID de tu proyecto de Qwiklabs:
SELECT * FROM `[PROJECT-ID].cluster_dataset.usage_metering_cost_breakdown`
- Haz clic en CONECTAR.
Haz clic en Revisar mi progreso para verificar la realización
de la tarea indicada arriba.
Supervisar y medir el uso de GKE
- A continuación, haz clic en la parte superior derecha.
Ahora que se agregó la fuente de datos, es momento de usarla para crear un
informe.
-
En la parte superior de la página de fuente de datos, haz clic en
Crear informe.
Nota: Si recibes un error en este punto, es posible que tu
trabajo de transferencia de datos aún no se haya completado. Espera un minuto
y vuelve a intentarlo.
Cuando crees un informe nuevo desde una fuente de datos, se te solicitará que
agregues datos a él.
- Haz clic en AÑADIR AL INFORME.
Crea un informe de Data Studio
En el informe, podrás visualizar las métricas de uso de la fuente de datos
basadas en tu tabla de BigQuery.
Comenzarás con una tabla simple:
Configurarás esta tabla para mostrar un desglose de costos por espacio de
nombres. Si seleccionas la tabla, verás los datos relacionados en el panel de
la derecha.
-
Haz clic en “Diseño de formato libre” o en
Agregar un gráfico, selecciona tabla y cambia lo siguiente
en ese panel:
-
Data Range Dimension:
usage_start_time
-
Dimension:
namespace
-
Metric:
cost
Deja todos los otros campos con sus valores predeterminados.
Para limitar la tabla a recursos con espacio de nombres, puedes aplicar un
filtro.
-
En el panel de datos, haz clic en Agregar un filtro en la
sección Filtro. Crea un filtro que excluya los recursos no
asignados a un espacio de nombres:
-
Haz clic en Guardar.
-
Vuelve a hacer clic en Agregar un filtro y, luego,
selecciona Crear un filtro para crear un segundo filtro
que limite los datos a solicitudes:
-
Haz clic en Guardar para aplicar el filtro. La tabla
resultante debería verse de la siguiente manera:
A continuación, agregarás un gráfico circular al informe, que mostrará el
desglose de costos por espacio de nombres.
-
Haz clic con el botón derecho en la tabla que creaste y selecciona
Duplicar.
-
Arrastra el objeto de tabla duplicado hacia cualquier parte del informe.
-
Luego, haz clic en el encabezado Tipos de gráficos del
panel de configuración:
-
En las opciones que aparecen, haz clic en el ícono de
gráfico circular:
El gráfico circular resultante se verá de la siguiente manera:
A continuación, agregarás un gráfico de anillo que mostrará el desglose de
costos por tipo de recurso.
-
En la barra de herramientas superior, haz clic en
Agregar un gráfico y selecciona
(Anillo)
para crear un gráfico de este tipo.
-
Arrastra el gráfico hacia cualquier parte del informe y configúralo con lo
siguiente:
-
Data Range Dimension:
usage_start_time
-
Dimension:
resource_name
-
Metric:
cost
-
Haz clic en Agregar un filtro y selecciona los 2 filtros
que aplicaste al gráfico anterior. El gráfico de anillo resultante se verá
de la siguiente manera:
-
Para agregar un desglose por espacio de nombres, en la barra de
herramientas superior, haz clic en Agregar un control y
selecciona Lista desplegable.
-
Arrastra la lista junto al gráfico de anillo y configúrala con lo
siguiente:
-
Data Range Dimension:
usage_start_time
-
Campo de control:
namespace
-
Metric:
None
-
Haz clic en Agregar un filtro.
-
Selecciona unallocated (namespace filter) en la lista.
-
Para configurar el control de modo que afecte solo al gráfico de anillo,
debes seleccionar el objeto de control y el gráfico de anillo con el
cursor selector y, luego, dibujar un rectángulo alrededor de ambos
objetos.
-
Haz clic con el botón derecho y selecciona Grupo para
vincularlos a un grupo:
-
Para obtener una vista previa del informe, haz clic en
Ver en la barra de herramientas superior.
En el modo de lectura, podrás ajustar la vista del gráfico de anillo a un
espacio de nombres específico:
-
En el menú Compartir que se encuentra en la parte superior
de la página, haz clic en Descargar informe para descargar
una copia del informe completo en formato PDF.
¡Felicitaciones!
Mediante el uso de espacios de nombres, puedes configurar clústeres como
clústeres de múltiples usuarios. Esto minimiza el riesgo de que no se usen
todos los recursos y de que haya proliferación de los clústeres, y evita que
se generen costos adicionales. Usando Monitoring y la medición de GKE, también
puedes visualizar el uso de recursos por espacios de nombres para tomar
decisiones mejor fundamentadas sobre las cuotas de recursos y la configuración
de los clústeres.
Próximos pasos y más información
Capacitación y certificación de Google Cloud
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 18 de marzo de 2026
Prueba más reciente del lab: 18 de marzo de 2026
Copyright 2026 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.