arrow_back

Aspectos básicos de Kubernetes v1.6

Acceder Unirse
Pon a prueba tus conocimientos y compártelos con nuestra comunidad
done
Obtén acceso a más de 700 labs prácticos, insignias de habilidad y cursos

Aspectos básicos de Kubernetes v1.6

Lab 3 horas universal_currency_alt 5 créditos show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Pon a prueba tus conocimientos y compártelos con nuestra comunidad
done
Obtén acceso a más de 700 labs prácticos, insignias de habilidad y cursos

Descripción general

En este lab, aprenderá a realizar lo siguiente:

  • Aprovisionar un clúster de Kubernetes mediante Google Kubernetes Engine
  • Usar kubectl para implementar y administrar contenedores de Docker
  • Usar las implementaciones y los servicios de Kubernetes para dividir una aplicación en microservicios

Usará Kubernetes Engine y su API de Kubernetes para implementar, administrar y actualizar aplicaciones. Asimismo, usará una aplicación de ejemplo llamada "app" para completar los labs.

Configuración

Paso 1

En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.

  1. Accede a Qwiklabs desde una ventana de incógnito.

  2. Ten en cuenta el tiempo de acceso del lab (por ejemplo, 1:15:00) y asegúrate de finalizarlo en el plazo asignado.
    No existe una función de pausa. Si lo necesita, puede reiniciar el lab, pero deberá hacerlo desde el comienzo.

  3. Cuando esté listo, haga clic en Comenzar lab.

  4. Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.

  5. Haga clic en Abrir Google Console.

  6. Haga clic en Usar otra cuenta, copie las credenciales para este lab y péguelas en el mensaje emergente que aparece.
    Si usa otras credenciales, se generarán errores o incurrirá en cargos.

  7. Acepta las condiciones y omite la página de recursos de recuperación.

Paso 2

Asegúrese de que las siguientes API estén habilitadas en Cloud Platform Console:

  • API de Kubernetes Engine
  • API de Container Registry


En el menú de navegación (Menú de navegación), haga clic en API y servicios.

Desplácese por la lista y confirme que sus API estén habilitadas.

Si falta una API, haga clic en HABILITAR API Y SERVICIOS en la parte superior, busque la API por nombre y habilítela para su proyecto.

Paso 3

Activa Google Cloud Shell

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

Google Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. En la consola de Cloud, en la barra de herramientas superior derecha, haz clic en el botón Abrir Cloud Shell.

    Ícono de Cloud Shell destacado

  2. Haz clic en Continuar.

El aprovisionamiento y la conexión al entorno demorarán unos minutos. Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. Por ejemplo:

ID del proyecto destacado en la terminal de Cloud Shell

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con el completado de línea de comando.

  • Puedes solicitar el nombre de la cuenta activa con este comando:
gcloud auth list

Resultado:

Credentialed accounts: - @.com (active)

Resultado de ejemplo:

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Puedes solicitar el ID del proyecto con este comando:
gcloud config list project

Resultado:

[core] project =

Resultado de ejemplo:

[core] project = qwiklabs-gcp-44776a13dea667a6 Nota: La documentación completa de gcloud está disponible en la guía de descripción general de gcloud CLI .

Paso 4

Obtenga el código de muestra del repositorio de Git.

git clone https://github.com/googlecodelabs/orchestrate-with-kubernetes.git

Paso 5

Revise el diseño de la aplicación.

cd orchestrate-with-kubernetes/kubernetes

ls

Observará la siguiente estructura:

deployments/

Deployment manifests

nginx/

nginx config files

pods/

pod manifests

services/

Services manifests

tls/

TLS certificates

cleanup.sh

Cleanup script

Ya puede usar su código para probar Kubernetes.

Una demostración rápida de Kubernetes

Inicie un clúster de Kubernetes

Paso 1

Defina su zona como una zona predeterminada del proyecto. De esta manera, no necesita especificar el parámetro --zone en los comandos de gcloud.

gcloud config set compute/zone us-central1-a

En Cloud Shell, ejecute el siguiente comando para iniciar un clúster de Kubernetes llamado bootcamp que ejecuta 5 nodos:

gcloud container clusters create bootcamp --num-nodes 5 --scopes "https://www.googleapis.com/auth/projecthosting,storage-rw"

El argumento scopes brinda acceso al alojamiento del proyecto y a las API de Google Cloud Storage que usará más adelante.

Haga clic en Revisar mi progreso para verificar el objetivo. Cree un clúster de Kubernetes

Paso 2

Una vez creado el clúster, verifique su versión instalada de Kubernetes mediante el comando kubectl version.

kubectl version

Paso 3

Use kubectl cluster-info para obtener más información sobre el clúster.

kubectl cluster-info

Paso 4

Vea sus nodos en ejecución en Cloud Platform Console.

Abra el menú de navegación y vaya a Compute Engine > Instancias de VM.

Compleción por bash (opcional)

Kubernetes viene con la función de autocompletar. Puede usar el comando kubectl completion y el comando incorporado source para configurarla.

Paso 1

Ejecute este comando:

source <(kubectl completion bash)

Paso 2

Presione Tab para mostrar una lista de los comandos disponibles.

Pruebe los siguientes ejemplos:

kubectl <TAB><TAB>

35350b93c86e21bc.png

También puede completar un comando parcial:

kubectl co<TAB><TAB>

439b36f031f3e4ed.png

Esta función facilita aún más el uso de kubectl.

Implemente y ejecute un contenedor

La manera más fácil de comenzar a usar Kubernetes es mediante el comando kubectl create deployment.

Paso 1

Use kubectl create deployment para iniciar una sola instancia del contenedor nginx:

kubectl create deployment nginx --image=nginx:1.10.0

Paso 2

Use el comando kubectl get pods para ver el pod que ejecuta el contenedor nginx.

kubectl get pods

Paso 3

Use el comando kubectl expose para exponer el contenedor nginx fuera de Kubernetes.

kubectl expose deployment nginx --port 80 --type LoadBalancer

Paso 4

Use el comando kubectl get para ver el nuevo servicio.

kubectl get services

Verá una IP externa que puede usar para probar y contactar al contenedor nginx de forma remota.

Paso 5

Use el comando kubectl scale para escalar la cantidad de aplicaciones de backend (pods) que se ejecutan en su servicio mediante el siguiente código:

kubectl scale deployment nginx --replicas 3

Esta acción es útil cuando desea aumentar la carga de trabajo para una aplicación web que es cada vez más popular.

Paso 6

Obtenga los pods una vez más para confirmar que Kubernetes haya actualizado la cantidad de pods.

kubectl get pods

Paso 7

Vuelva a usar el comando kubectl get services para confirmar que su dirección IP externa no haya cambiado.

kubectl get services

Paso 8

Use la dirección IP externa con el comando curl para probar la demostración de su aplicación.

curl http://<External IP>:80

Kubernetes es compatible con un flujo de trabajo inmediato y fácil de usar mediante el uso de los comandos kubectl run, expose y scale.

Limpie

Ejecute los siguientes comandos para limpiar nginx:

kubectl delete deployment nginx
kubectl delete service nginx

Ahora que terminó de revisar esta breve demostración de Kubernetes, es momento de profundizar en cada uno de los componentes y las abstracciones.

Pods

Investigue los pods en mayor detalle.

Cómo crear pods

Los pods se pueden crear con archivos de configuración de pod.

Paso 1

Explore la documentación incorporada del pod con el comando kubectl explain:

kubectl explain pods

Paso 2

Explore el archivo de configuración del pod monolith.

cat pods/monolith.yaml

Paso 3

Use el comando kubectl explain con la opción .spec para obtener más información sobre los objetos de la API. Este ejemplo inspecciona los contenedores:

kubectl explain pods.spec.containers

Explore el resto de la API antes de continuar.

Paso 4

Cree el pod monolith con kubectl create:

kubectl create -f pods/monolith.yaml

Haga clic en Revisar mi progreso para verificar el objetivo. Cree el pod de monolith

Paso 5

Use el comando kubectl get pods para obtener una lista de todos los pods que se ejecutan en el espacio de nombres predeterminado:

kubectl get pods

Paso 6

Cuando se ejecute el pod, use el comando kubectl describe para obtener más información sobre el pod monolith.

kubectl describe pods monolith

Verá mucha información sobre el pod monolith, como la dirección IP y el registro de acontecimientos. Esta información será útil cuando solucione problemas.

Como puede ver, con Kubernetes es fácil crear pods con solo describirlos en los archivos de configuración y ver información al respecto mientras se ejecutan. En este momento, puede crear todos los pods que requiera su implementación.

Cómo interactuar con los pods

De manera predeterminada, los pods reciben una dirección IP privada a la que no se puede acceder desde fuera del clúster. Use el comando kubectl port-forward para mapear un puerto local a un puerto dentro del pod monolith.

Use dos terminales: una para ejecutar el comando kubectl port-forward y la otra para ejecutar los comandos curl.

Paso 1

Haga clic en el botón + en Cloud Shell para abrir una nueva terminal.

d7448996c0310a94.png

Paso 2

Ejecute el siguiente comando para configurar la redirección de puertos desde un puerto local, 10080, a un puerto de pod, 80 (donde está escuchando su contenedor):

kubectl port-forward monolith 10080:80

Paso 3

Para acceder a su pod, regrese a la primera ventana de la terminal y ejecute el siguiente comando curl:

curl http://127.0.0.1:10080

Obtendrá un amigable "Hola" del contenedor.

Paso 4

Vea qué sucede cuando accede a un extremo seguro.

curl http://127.0.0.1:10080/secure

Debería ver un error.

Paso 5

Acceda para que monolith le proporcione un token de autenticación.

curl -u user http://127.0.0.1:10080/login

En el indicador de acceso, ingrese la contraseña como password para acceder.

Paso 6

Ya que Cloud Shell no copia bien las strings largas, copie el token en una variable de entorno.

TOKEN=$(curl http://127.0.0.1:10080/login -u user|jq -r '.token')

En el indicador de acceso, ingrese la contraseña como password para acceder.

Paso 7

Acceda al extremo seguro otra vez y, esta vez, incluya el token de autenticación.

curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:10080/secure

Paso 8

Use el comando kubectl logs para ver los registros del pod monolith.

kubectl logs monolith

Paso 9

Abra otra terminal y use la marca -f para obtener una secuencia de registros en tiempo real.

Para crear la tercera terminal, haga clic en el botón + en Cloud Shell y ejecute el siguiente comando:

kubectl logs -f monolith

Paso 10

Use curl en la terminal 1 para interactuar con monolith. Verá la actualización de los registros en la terminal 3.

curl http://127.0.0.1:10080

Paso 11

Use el comando kubectl exec para ejecutar una shell interactiva dentro del pod monolith. Esto puede ser útil para solucionar problemas en un contenedor.

kubectl exec monolith --stdin --tty -c monolith /bin/sh

Paso 12

Opcional: En la shell, puede usar el comando ping para probar la conectividad externa (orientada al exterior).

ping -c 3 google.com

Paso 13

Salga de la shell.

exit

Como puede ver, interactuar con los pods es tan sencillo como usar el comando kubectl. Si necesita probar un contenedor en forma remota o bien obtener una shell de acceso, Kubernetes le proporciona todo lo que necesita para comenzar.

Paso 14

Para salir de kubectl port-forward y kubectl logs en las terminales 2 y 3, presione Ctrl+C.

Cómo supervisar y realizar verificaciones de estado

Kubernetes admite aplicaciones de supervisión en forma de sondeos de preparación y capacidad de respuesta. Se pueden realizar verificaciones de estado en cada contenedor de un pod. Los sondeos de preparación indican cuando un pod está "listo" para procesar el tráfico. Los sondeos de capacidad de respuesta indican si un contenedor es "responsivo". Si un sondeo de capacidad de respuesta falla varias veces, el contenedor se reinicia. Los sondeos de capacidad de respuesta que continúan fallando hacen que un pod entre en un bucle de fallas. Si falla una verificación de preparación, el contenedor se marca como no listo y se quita de cualquier balanceador de cargas.

En este lab, desplegará un nuevo pod llamado healthy-monolith, que se basa en gran medida en el pod monolith con la incorporación de sondeos de preparación y capacidad de respuesta.

En este lab, aprenderá a realizar lo siguiente:

  • Crear pods con sondeos de preparación y capacidad de respuesta

  • Solucionar problemas de fallas en los sondeos de preparación y capacidad de respuesta

Cómo crear pods con sondeos de capacidad de respuesta y preparación

Paso 1

Explore el archivo de configuración del pod healthy-monolith:

cat pods/healthy-monolith.yaml

Paso 2

Cree el pod healthy-monolith con kubectl:

kubectl create -f pods/healthy-monolith.yaml

Haga clic en Revisar mi progreso para verificar el objetivo. Cree el pod de healthy-monolith

Paso 3

Los pods no se marcan como listo hasta que el sondeo de preparación devuelva una respuesta de HTTP 200. Use el comando kubectl describe para ver los detalles del pod healthy-monolith.

kubectl describe pod healthy-monolith

Sondeos de preparación

Vea cómo Kubernetes responde a las fallas de los sondeos de preparación. El contenedor monolith admite la capacidad de forzar fallas de sus sondeos de preparación y capacidad de respuesta. Esto le permite simular fallas para el pod healthy-monolith.

Paso 1

Use el comando kubectl port-forward en la terminal 2 para redireccionar un puerto local al puerto de estado del pod healthy-monolith:

kubectl port-forward healthy-monolith 10081:81

Paso 2

Fuerce el sondeo de preparación del contenedor monolith a que falle. Use el comando curl en la terminal 1 para alternar el estado del sondeo de preparación. Tenga en cuenta que este comando no muestra ningún resultado:

curl http://127.0.0.1:10081/readiness/status

Paso 3

Obtenga el estado del pod healthy-monolith mediante el comando kubectl get pods -w:

kubectl get pods healthy-monolith -w

Paso 4

Presione Ctrl+C cuando haya 0/1 contenedores listos. Use el comando kubectl describe para obtener más detalles sobre la falla del sondeo de preparación:

kubectl describe pods healthy-monolith

Paso 5

Observe los eventos de los detalles del informe del pod healthy-monolith sobre las fallas de los sondeos de preparación.

Para forzar al sondeo de preparación del contenedor monolith a que pase, alterne el estado del sondeo de preparación mediante el comando curl:

curl http://127.0.0.1:10081/readiness/status

Paso 6

Espere aproximadamente 15 segundos y obtenga el estado del pod healthy-monolith mediante el comando kubectl get pods:

kubectl get pods healthy-monolith

Paso 7

Presione Ctrl+C en la terminal 2 para cerrar el comando kubectl proxy (es decir, port-forward).

Sondeos de capacidad de respuesta

Sobre la base de lo que aprendió en el instructivo anterior, use los comandos kubectl port-forward y curl para forzar la falla del sondeo de capacidad de respuesta del contenedor monolith. Observe cómo Kubernetes responde a las fallas de los sondeos de capacidad de respuesta.

Paso 1

Use el comando kubectl port-forward para redireccionar un puerto local al puerto de estado del pod healthy-monolith en la terminal 2.

kubectl port-forward healthy-monolith 10081:81

Paso 2

Para forzar al sondeo de preparación del contenedor monolith a que pase, alterne el estado del sondeo de preparación mediante el uso del comando curl en otra terminal:

curl http://127.0.0.1:10081/healthz/status

Paso 3

Obtenga el estado del pod healthy-monolith mediante el comando kubectl get pods -w:

kubectl get pods healthy-monolith -w

Paso 4

Cuando falla un sondeo de capacidad de respuesta, el contenedor se reinicia. Una vez reiniciado, el pod healthy-monolith debería volver a un buen estado. Presione Ctrl+C para salir de ese comando cuando se reinicie el pod. Tome nota del número de reinicios.

Paso 5

Use el comando kubectl describe para obtener más detalles sobre las fallas del sondeo de capacidad de respuesta. Puede ver los eventos relacionados en los casos en que falló el sondeo de capacidad de respuesta y se reinició el pod.

kubectl describe pods healthy-monolith

Paso 6

Cuando haya terminado, presione Ctrl+C en la terminal 2 para cerrar el comando kubectl proxy.

Servicios

Próximos pasos:

  • Cómo crear un servicio

  • Cómo usar los selectores de etiquetas para exponer de forma externa un conjunto limitado de pods

Cómo crear un servicio

Antes de crear sus servicios, cree un pod seguro con un servidor nginx llamado secure-monolith que pueda manejar el tráfico HTTPS.

Paso 1

Cree dos volúmenes que utilizará el pod seguro para importar (o consumir) los datos.

El primer volumen de tipo secret almacena archivos del certificado TLS para su servidor nginx.

Vuelva a la terminal 1 y cree el primer volumen mediante el siguiente comando:

kubectl create secret generic tls-certs --from-file tls/

Cree el segundo volumen de tipo ConfigMap para contener el archivo de configuración de nginx:

kubectl create configmap nginx-proxy-conf --from-file nginx/proxy.conf

Paso 2

Explore el archivo proxy.conf que nginx usará.

cat nginx/proxy.conf

Este archivo especifica que SSL está ACTIVO y la ubicación de los archivos de certificación en el sistema de archivos del contenedor.

Paso 3

Explore el archivo de configuración del pod secure-monolith.

cat pods/secure-monolith.yaml

Paso 4

Ejecute el siguiente comando para crear el pod secure-monolith con sus datos de configuración:

kubectl create -f pods/secure-monolith.yaml

Ahora que tiene un pod seguro, exponga de forma externa el pod secure-monolith mediante un servicio de Kubernetes.

Paso 5

Explore el archivo de configuración del servicio monolith.

cat services/monolith.yaml

Paso 6

Use el comando kubectl create para crear el servicio monolith a partir del archivo de configuración de este servicio:

kubectl create -f services/monolith.yaml

Normalmente, Kubernetes se encarga de la asignación de puertos. En este lab, usted eligió uno para que más adelante sea más fácil configurar las verificaciones de estado.

Paso 7

Use el comando gcloud compute firewall-rules para permitir el tráfico hacia el servicio monolith en el puerto de nodo expuesto:

gcloud compute firewall-rules create allow-monolith-nodeport --allow=tcp:31000

Ahora que todo está configurado, debería poder probar el servicio secure-monolith desde fuera del clúster sin usar la redirección de puertos.

Paso 8

Obtenga una dirección IP para uno de sus nodos:

gcloud compute instances list

Paso 9

Intente abrir la URL en el navegador:

https://<EXTERNAL_IP>:31000

Cómo agregar etiquetas a los pods

De momento, el servicio monolith no cuenta con extremos. Una forma de solucionar un problema como este es usar el comando kubectl get pods con una consulta sobre etiquetas.

Paso 1

Determine que haya varios pods en ejecución con la etiqueta monolith.

kubectl get pods -l "app=monolith"

Paso 2

Sin embargo, ¿qué sucede con app=monolith y secure=enabled?

kubectl get pods -l "app=monolith,secure=enabled"

Paso 3

Use el comando kubectl label para agregar la etiqueta faltante secure=enabled al pod secure-monolith.

kubectl label pods secure-monolith 'secure=enabled'

Haga clic en Revisar mi progreso para verificar el objetivo. Cree una regla de firewall y un pod secreto y de servicio con una etiqueta

Paso 4

Verifique que las etiquetas estén actualizadas.

kubectl get pods secure-monolith --show-labels

Paso 5

Vea la lista de extremos en el servicio monolith.

kubectl get endpoints monolith

Paso 6

Pruébelo con uno de sus nodos nuevamente.

gcloud compute instances list | grep gke-

Abra la siguiente URL en su navegador. Deberá hacer clic en la advertencia de SSL porque secure-monolith usa un certificado autofirmado:

https://<EXTERNAL_IP>:31000

Finalice su lab

Cuando haya completado el lab, haga clic en Finalizar lab. Google Cloud Skills Boost quitará los recursos que usó y limpiará la cuenta.

Tendrá la oportunidad de calificar su experiencia en el lab. Seleccione la cantidad de estrellas que corresponda, ingrese un comentario y haga clic en Enviar.

La cantidad de estrellas indica lo siguiente:

  • 1 estrella = Muy insatisfecho
  • 2 estrellas = Insatisfecho
  • 3 estrellas = Neutral
  • 4 estrellas = Satisfecho
  • 5 estrellas = Muy satisfecho

Puede cerrar el cuadro de diálogo si no desea proporcionar comentarios.

Para enviar comentarios, sugerencias o correcciones, use la pestaña Asistencia.

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

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible