arrow_back

Administra un clúster de múltiples usuarios de GKE con espacios de nombres

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Administra un clúster de múltiples usuarios de GKE con espacios de nombres

Lab 1 hora 15 minutos universal_currency_alt 5 créditos show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP766

Labs de autoaprendizaje de Google Cloud

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.

Actividades

  • 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 Looker Studio para obtener métricas detalladas sobre el uso de recursos por espacio de nombres

Configuración

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, 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 de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto 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: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

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 crea un clúster, se copian los conjuntos de datos de BigQuery y se generan 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.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola 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 YOUR_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.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

  2. Ahora, el resultado debería verse de la siguiente manera:

Resultado:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = <project_ID>

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: Para obtener toda la documentación de gcloud, consulta la guía con la descripción general de gcloud CLI en Google Cloud.

Tarea 1: Descarga los archivos necesarios

  1. 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 ~
  1. 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.

  1. 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.

  1. 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.

  1. 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.
  1. 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.

  1. 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=centos --namespace=team-a -- sleep infinity && \ kubectl run app-server --image=centos --namespace=team-b -- sleep infinity
  1. 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

  1. 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
  1. 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
  1. 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. 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á.

  1. 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.

  1. 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"]
  1. Aplica el rol anterior:
kubectl create -f developer-role.yaml
  1. 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

  1. Descarga las claves de la cuenta de servicio que se usaron para usar 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

  1. En Cloud Shell, haz clic en el signo + para abrir una pestaña nueva de la terminal.

  2. 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
  1. 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}
  1. 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
  1. 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).
  1. Regresa a la primera pestaña de Cloud Shell o abre una nueva.

  2. 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 de 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).

  1. 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
  1. Crea un segundo Pod en el espacio de nombres team-a:
kubectl run app-server-2 --image=centos --namespace=team-a -- sleep infinity
  1. Ahora, intenta crear un tercer Pod:
kubectl run app-server-3 --image=centos --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
  1. 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.

  1. 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.

  1. 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"
  1. 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 machines, 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"
  1. 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.
  1. 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"
  1. Aplica la configuración del archivo:
kubectl create -f cpu-mem-demo-pod.yaml --namespace=team-a
  1. 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

  1. En la consola de Cloud, expande el menú de navegación de la esquina superior izquierda de la página y, a continuación, en Operaciones > Monitoring en ese menú.

Espera un momento mientras se crea el lugar de trabajo para tu proyecto.

  1. En la página Descripción general, selecciona Paneles en el menú de la izquierda:

La opción Paneles aparece destacada en la página Descripción general.

  1. Selecciona GKE en la página Descripción general 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:

Varios nombres enumerados dentro de la tabla Espacios de nombres, que incluye información, como alertas y registros de errores.

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.

  1. Haz clic en Ver todos.

  2. En la casilla AGREGAR FILTRO, selecciona Espacios de nombres > team-a.

  3. 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

  1. En el panel de la izquierda, selecciona Explorador de métricas.

  2. En el campo Selecciona una métrica, haz clic en el menú desplegable Métrica.

  3. Escribe Contenedor de Kubernetes en Filtrar por nombre de recurso y métrica.

  4. Haz clic en Contenedor de Kubernetes > Contenedor.

  5. Selecciona Tiempo de uso de CPU.

  6. 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.
  1. Para excluir el nombre de espacio de kube-system, haz clic en Agregar filtro en la sección de filtro.

  2. Selecciona namespace_name como etiqueta.

  3. Selecciona != (no es igual a) como comparación y kube-system como valor.

  4. A continuación, en el campo Agrupar por, ingresa namespace_name y haz clic en Aceptar.

    Verás un gráfico que muestra el tiempo de uso de CPU del contenedor por espacio de nombres:

El Explorador de métricas muestra un gráfico, en el que el tiempo de uso se muestra por nombre del espacio de nombres y tasa.

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 Looker 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.

  1. 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
  1. 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
  1. 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"
  1. 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)"
  1. La Transferencia de datos debe proporcionar un vínculo para la autorización. Haz clic en él, accede con tu cuenta de alumno, 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 Looker Studio

  1. Abre la página Looker Studio Data Sources.

  2. En la esquina superior izquierda, haz clic en Create > Data Source para agregar una fuente de datos nueva.

Primero verás la ventana To get started, let's complete your account setup.

  1. Marca la casilla de confirmación y, luego, haz clic en Continue.

  2. Selecciona No para cada opción de Set up your email preferences, ya que se trata de un lab o una cuenta temporales.

  3. Haz clic en Continue.

Verás una lista de Google Connectors que son compatibles con Looker Studio.

  1. Selecciona BigQuery de la lista.

El conector de BigQuery Google se muestra junto con el ícono Más.

  1. Haz clic en el botón Authorize para permitir que Looker Studio acceda a tu proyecto de BigQuery.

  2. En la parte superior izquierda de la página, cambia el nombre de tu fuente de datos de Untitled Data Source a GKE Usage.

  3. En la primera columna, selecciona CUSTOM QUERY.

  4. Selecciona tu ID del proyecto en la columna de proyectos.

  5. 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`
  1. Haz clic en CONNECT.

Haz clic en Revisar mi progreso para verificar la realización de la tarea indicada arriba. Supervisar y medir el uso de GKE

  1. 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.

  1. En la parte superior de la página de fuente de datos, haz clic en CREATE REPORT.

El botón Create report aparece destacado en la página de fuente de datos GKE Metering.

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.

  1. Haz clic en ADD TO REPORT.

Crea un informe de Looker 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:

Una tabla de dos columnas con dos filas de datos debajo de los encabezados de las columnas: cluster_location y Record Count.

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.

  1. En el panel, cambia lo siguiente:
  • 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.

  1. En el panel de datos, haz clic en Add a Filter en la sección Filter. Crea un filtro que excluya los recursos no asignados a un espacio de nombres:

La opción para filtrar se establece en Exclude, en la que se ha seleccionado el espacio de nombres.

  1. Haz clic en Save.

  2. Vuelve a hacer clic en Add a Filter y, luego, selecciona Create a Filter para crear un segundo filtro que limite los datos a solicitudes:

La opción para filtrar se establece en Include, en la que se seleccionó el tipo.

  1. Haz clic en Save para aplicar el filtro. La tabla resultante debería verse de la siguiente manera:

Una tabla de dos columnas con cuatro filas de datos debajo de los encabezados de columna: espacio de nombres y costo.

A continuación, agregarás un gráfico circular al informe, que mostrará el desglose de costos por espacio de nombres.

  1. Haz clic con el botón derecho en la tabla que creaste y selecciona Duplicate.

  2. Arrastra el objeto de tabla duplicado hacia cualquier parte del informe.

  3. Luego, haz clic en el encabezado del panel de configuración:

La categoría Table aparece destacada en la sección Chart del panel de configuración.

  1. En las opciones que aparecen, haz clic en el ícono de gráfico circular:

Varios mosaicos que muestran diferentes tipos de gráficos, con el gráfico circular destacado.

El gráfico circular resultante se verá de la siguiente manera:

Las cuatro filas de los datos de tabla ahora se muestran en formato de gráfico circular.

A continuación, agregarás un gráfico de anillo que mostrará el desglose de costos por tipo de recurso.

  1. En la barra de herramientas superior, haz clic en Add a chart y selecciona 23497d0573f8232a.png (Anillo) para crear un gráfico de este tipo.

  2. 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
  1. Haz clic en Add a Filter y selecciona los 2 filtros que aplicaste al gráfico anterior. El gráfico de anillo resultante se verá de la siguiente manera:

El gráfico circular muestra las dos filas de datos que quedan después de aplicar los filtros.

  1. Para agregar un desglose por espacio de nombres, en la barra de herramientas superior, haz clic en Add a control y selecciona Drop-down list.

  2. Arrastra la lista junto al gráfico de anillo y configúrala con lo siguiente:

  • Data Range Dimension: usage_start_time
  • Control field: namespace
  • Metric: None
  1. Haz clic en Add a filter.

  2. Selecciona unallocated (namespace filter) en la lista.

  3. 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.

  4. Haz clic con el botón derecho y selecciona Group para vincularlos a un grupo:

Un rectángulo alrededor de los objetos y la opción Group destacada en el menú que aparece cuando haces clic con el botón derecho

  1. Para obtener una vista previa del informe, haz clic en View 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:

Una tabla de tres columnas junto a dos gráficos circulares, cada uno de los cuales contiene diferentes datos.

  1. En el menú Share que se encuentra en la parte superior de la página, haz clic en Download report 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.

Finaliza la Quest

Este lab de autoaprendizaje forma parte de la Quest Optimize Costs for Google Kubernetes Engine. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás una insignia como reconocimiento por tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en esta Quest y obtén un crédito inmediato de realización. Consulta el catálogo de Google Cloud Skills Boost para ver todas las Quests disponibles.

Realiza tu próximo lab

Continúa tu Quest con Explora la optimización de costos para máquinas virtuales de GKE o consulta las siguientes sugerencias:

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.

Actualización más reciente del manual: 20 de septiembre de 2023

Prueba más reciente del lab: 20 de septiembre de 2023

Copyright 2024 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.