Puntos de control
Deploy GKE clusters
/ 30
Deploy Pods to GKE clusters
/ 35
Deploy a new pod using a Yaml file
/ 35
Implementa clústeres de GKE Autopilot desde Cloud Shell
Descripción general
En este lab, usarás la línea de comandos para crear clústeres de GKE. Inspeccionarás el archivo kubeconfig y usarás kubectl
para manipular el clúster.
Objetivos
En este lab, aprenderás a realizar las siguientes tareas:
- Usar
kubectl
para crear y manipular clústeres de GKE - Usar
kubectl
y archivos de configuración para implementar Pods - Usar Container Registry para implementar y almacenar contenedores
Configuración del lab
Accede a Qwiklabs
En cada lab, recibirá un proyecto de Google Cloud y un conjunto de recursos nuevos por tiempo limitado y sin costo adicional.
-
Accede a Qwiklabs desde una ventana de incógnito.
-
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. -
Cuando esté listo, haga clic en Comenzar lab.
-
Anote las credenciales del lab (el nombre de usuario y la contraseña). Las usarás para acceder a la consola de Google Cloud.
-
Haga clic en Abrir Google Console.
-
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. -
Acepta las condiciones y omite la página de recursos de recuperación.
Después de completar los pasos iniciales de acceso, aparecerá el panel del proyecto.
Abre Cloud Shell
La mayor parte del trabajo la harás en Cloud Shell. Cloud Shell es un entorno de línea de comandos que se ejecuta en Google Cloud. Esta máquina virtual basada en Debian está cargada con todas las herramientas de administración que necesitas (como Docker
, gcloud, gsutil
y kubectl
) y ofrece un directorio principal persistente de 5 GB.
- En la barra de título de la consola de Google Cloud, haz clic en Activar Cloud Shell ().
- Haz clic en Continuar.
Después de un momento de aprovisionamiento, se mostrará el símbolo del sistema de Cloud Shell:
Tarea 1: Implementa clústeres de GKE
En esta tarea, usarás Cloud Shell para implementar clústeres de GKE.
- En Cloud Shell, escribe el siguiente comando para establecer la variable de entorno para la zona y el nombre del clúster:
- En Cloud Shell, escribe el siguiente comando para crear un clúster de Kubernetes:
Esta versión del comando establece la mayor parte de las opciones en sus valores predeterminados. Para ver todas las opciones posibles, consulta la referencia de gcloud container clusters create.
Verás algunas advertencias en las que se indican los cambios realizados en la configuración predeterminada de los clústeres de GKE en función de las versiones nuevas de Kubernetes que se adoptaron.
Una vez completada la implementación, la página Kubernetes Engine > Clústeres de la consola de Google Cloud debería verse como en la captura de pantalla:
Haz clic en Revisar mi progreso para verificar el objetivo.
Tarea 2: Conéctate a un clúster de GKE
En esta tarea, usarás Cloud Shell para autenticarte en un clúster de GKE y, luego, inspeccionarás los archivos de configuración de kubectl.
La autenticación en Kubernetes se aplica tanto a la comunicación con el clúster desde un cliente externo, mediante el kube-apiserver que se ejecuta en la instancia principal, como a los contenedores del clúster que se comunican dentro del clúster o de manera externa.
En Kubernetes, la autenticación puede adoptar varias formas. Para GKE, la autenticación suele realizarse con tokens de OAuth2 y puede administrarse mediante Cloud Identity and Access Management en todo el proyecto. De manera opcional, también puede administrarse mediante un control de acceso basado en roles, que puede definirse y configurarse dentro de cada clúster.
En GKE, los contenedores del clúster pueden usar cuentas de servicio para autenticarse en los recursos externos y acceder a ellos.
- Para crear un archivo kubeconfig con las credenciales del usuario actual (para permitir la autenticación) y proporcionar los detalles del extremo de un clúster específico (para permitir la comunicación con ese clúster a través de la herramienta de línea de comandos
kubectl
), ejecuta el siguiente comando:
Con este comando, se crea un directorio .kube
en tu directorio principal en caso de que aún no haya uno. En el directorio .kube
, el comando crea un archivo llamado config
, en caso de que aún no haya uno, que se utiliza para almacenar la información de autenticación y configuración. Por lo general, el archivo de configuración se llama archivo kubeconfig.
- Abre el archivo kubeconfig con el editor de texto nano:
Ahora puedes examinar todos los datos de autenticación y configuración del extremo que están almacenados en el archivo. Debería aparecer información sobre el clúster, que se propagó durante la creación de este.
- Presiona Ctrl + X para salir del editor nano.
current-context
indica cuál es el contexto activo actualmente (el clúster que manipulan los comandos de kubectl
).
No es necesario que ejecutes el comando gcloud container clusters get-credentials
y propagues así el archivo kubeconfig para los clústeres que creaste en el mismo contexto (el mismo usuario en el mismo entorno), dado que los detalles de esos clústeres ya se propagan durante su creación. Sin embargo, debes ejecutar el comando para conectarte a un clúster creado por otro usuario o en otro entorno. El comando también permite cambiar con facilidad el contexto activo a un clúster distinto.
Tarea 3: Usa kubectl para inspeccionar un clúster de GKE
En esta tarea, usarás Cloud Shell y kubectl para inspeccionar un clúster de GKE.
Una vez que el archivo kubeconfig se haya propagado y el contexto activo esté establecido en un clúster determinado, puedes usar la herramienta de línea de comandos kubectl
para ejecutar comandos en el clúster. La mayoría de estos comandos activan finalmente una llamada a la API de REST en el servidor de API de la instancia principal, lo cual activa la acción asociada.
- En Cloud Shell, ejecuta el siguiente comando para mostrar el contenido del archivo kubeconfig:
Los datos sensibles del certificado se reemplazan por DATA+OMITTED.
- En Cloud Shell, ejecuta el siguiente comando para mostrar la información del clúster correspondiente al contexto activo:
El resultado describe el clúster del contexto activo.
Resultado:
- En Cloud Shell, ejecuta el siguiente comando para mostrar el contexto activo:
Una línea de resultado indica el clúster del contexto activo.
Resultado:
PROJECT_ID
es el ID de tu proyecto. Esta información coincide con la de la propiedad current-context
del archivo kubeconfig.
- En Cloud Shell, ejecuta el siguiente comando para mostrar algunos detalles de todos los contextos del clúster en el archivo kubeconfig:
Varias líneas de resultado indican los detalles del clúster que creaste y cuál es el clúster del contexto activo. En general, este comando muestra una lista con algunos detalles de los clústeres presentes en el archivo kubeconfig del usuario, incluidos los demás clústeres que el usuario creó y los que se agregaron manualmente al archivo kubeconfig.
- En Cloud Shell, ejecuta el siguiente comando para cambiar el contexto activo:
En este caso, dado que tienes un solo clúster, el comando no modificará nada.
Sin embargo, es posible que tengas más de un clúster en algún proyecto en el futuro. Puedes usar este enfoque para cambiar el contexto activo cuando tu archivo kubeconfig ya tenga propagadas las credenciales y la configuración de varios clústeres. Este enfoque requiere el nombre completo del clúster, que incluye el prefijo gke
, el ID del proyecto, la ubicación y el nombre visible, todos concatenados con guiones bajos.
- En Cloud Shell, ejecuta el siguiente comando para habilitar el autocompletado de bash para
kubectl
:
Este comando no produce resultados.
- En Cloud Shell, escribe kubectl seguido de un espacio y presiona dos veces la tecla Tab.
La shell muestra todos los comandos posibles:
- En Cloud Shell, escribe kubectl co y presiona dos veces la tecla Tab.
La shell muestra todos los comandos que empiezan con "co" (o cualquier texto que escribas).
Tarea 4: Implementa Pods en los clústeres de GKE
En esta tarea, usarás Cloud Shell para implementar Pods en clústeres de GKE.
Usa kubectl para implementar Pods en GKE
Kubernetes presenta la abstracción de un Pod para agrupar uno o más contenedores relacionados como una única entidad que se programará y se implementará como una unidad en el mismo nodo. Puedes implementar un Pod que es un único contenedor a partir de una única imagen de contenedor. O bien, un Pod puede contener muchos contenedores de muchas imágenes de contenedor.
- En Cloud Shell, ejecuta el siguiente comando para implementar NGINX como un Pod llamado nginx-1:
Con este comando, se crea un Pod llamado nginx con un contenedor que ejecuta la imagen de NGINX. Cuando no se especifica un repositorio, el comportamiento predeterminado es intentar buscar la imagen, ya sea de forma local o en el registro público de Docker. En este caso, la imagen se extrae del registro público de Docker.
- En Cloud Shell, ejecuta el siguiente comando para ver todos los Pods implementados en el clúster del contexto activo:
El resultado debería verse como el siguiente ejemplo, pero con un nombre de Pod ligeramente distinto.
Resultado:
- En Cloud Shell, ejecuta el siguiente comando para ver el uso de recursos en todos los nodos del clúster:
El resultado debería verse como el siguiente ejemplo.
Resultado:
Otro comando top
(kubectl top pods
) muestra información similar en todos los Pods implementados en el clúster.
- Ahora ingresarás el nombre de tu Pod en una variable que usaremos a lo largo de este lab. Usar variables como esta puede ayudarte a minimizar errores humanos cuando se escriben nombres largos. Debes escribir el nombre único de tu Pod en lugar de
[your_pod_name]
:
Ejemplo:
- Confirma que estableciste la variable de entorno correctamente. Para ello, haz que la shell te repita el valor:
Resultado:
- En Cloud Shell, ejecuta el siguiente comando para ver todos los detalles del Pod que acabas de crear.
El resultado debería verse como el siguiente ejemplo. Se mostrarán los detalles del Pod junto con su estado, sus condiciones y los eventos de su ciclo de vida.
Resultado:
Envía un archivo a un contenedor
Para poder entregar contenido estático a través del servidor web de NGINX, debes crear un archivo y colocarlo en el contenedor.
- En Cloud Shell, escribe los siguientes comandos para abrir un archivo llamado
test.html
en el editor de texto nano.
- Agrega el siguiente texto (secuencia de comandos de shell) al archivo
test.html
vacío:
-
Presiona Ctrl + X y, luego, la tecla Y seguida de Intro para guardar el archivo y salir del editor nano.
-
En Cloud Shell, ejecuta el siguiente comando para colocar el archivo en la ubicación adecuada dentro del contenedor de NGINX en el Pod correspondiente, que se entregará de manera estática:
Con este comando, se copia el archivo test.html
del directorio principal local en el directorio /usr/share/nginx/html
del primer contenedor en el Pod de nginx. Puedes especificar otros contenedores en un Pod de varios contenedores con la opción -c
seguida del nombre del contenedor.
Expón el Pod para realizar pruebas
Se necesita un servicio para exponer un Pod a los clientes externos al clúster. Los servicios se abordan en otras secciones del curso y se usan con frecuencia en otros labs. Puedes usar un comando simple para crear un servicio y exponer un Pod.
- En Cloud Shell, ejecuta el siguiente comando para crear un servicio y exponer nuestro Pod de NGINX externamente:
Con este comando, se crea un servicio LoadBalancer, que permite que se acceda al Pod de nginx desde direcciones de Internet externas al clúster.
- En Cloud Shell, ejecuta el siguiente comando para ver los detalles de los servicios en el clúster:
El resultado debería verse como el siguiente ejemplo. Usarás la dirección IP externa en el próximo paso.
Resultado:
El servicio Kubernetes es uno de los servicios predeterminados que se crean o utilizan en el clúster. También se muestra el servicio nginx que creaste.
Es posible que debas ejecutar de nuevo este comando varias veces para que se muestre la dirección IP externa.
Resultado:
Haz clic en Revisar mi progreso para verificar el objetivo.
- En Cloud Shell, ejecuta el siguiente comando para verificar que el contenedor de NGINX esté entregando el archivo HTML estático que copiaste.
Reemplaza [EXTERNAL_IP] por la dirección IP externa de tu servicio, la cual obtuviste en el resultado del paso anterior.
El contenido del archivo aparecerá en el resultado. Puedes dirigirte a la misma dirección en tu navegador para comprobar si el archivo se procesa como HTML.
Ejemplo:
- En Cloud Shell, ejecuta el siguiente comando para ver los recursos que utiliza el Pod de nginx:
Resultado:
Tarea 5: Inspecciona los Pods de GKE
En esta tarea, te conectarás a un Pod para cambiar la configuración, editar archivos y hacer otras modificaciones en el Pod sin desconectarlo.
Prepara el entorno
Para implementar Pods y otros recursos en Kubernetes, se prefieren los archivos de configuración, que suelen llamarse archivos de manifiesto. Por lo general, los archivos de configuración se escriben en la sintaxis YAML, y se especifican los detalles del recurso. Te resultará más fácil especificar opciones complejas con estos archivos que si utilizas una línea larga de argumentos de línea de comandos.
La sintaxis YAML es similar a la sintaxis JSON, aunque más concisa, y permite el mismo tipo de estructuración jerárquica de objetos y propiedades. El repositorio de código fuente del lab contiene archivos YAML de ejemplo que se prepararon para ti.
- En Cloud Shell, ingresa el siguiente comando para clonar el repositorio en el entorno de Cloud Shell del lab.
- Crea un vínculo simbólico como un acceso directo al directorio de trabajo:
- Cambia al directorio que contenga los archivos de muestra de este lab:
Se proporcionó un archivo YAML del manifiesto de muestra para un Pod llamado new-nginx-pod.yaml
:
- Para implementar tu manifiesto, ejecuta el siguiente comando:
Haz clic en Revisar mi progreso para verificar el objetivo.
- Para ver una lista de Pods, ejecuta el siguiente comando:
El resultado debería verse como el ejemplo.
Resultado:
Puedes ver tu nuevo Pod de NGINX, así como el que creaste anteriormente en el lab.
Utiliza el redireccionamiento de shell para conectarte a un Pod
Algunas imágenes de contenedor incluyen un entorno de shell que puedes iniciar. Es posible que este entorno de shell resulte más conveniente que ejecutar comandos individuales con kubectl
. Por ejemplo, la imagen nginx incluye una shell bash. En esta tarea, usarás el redireccionamiento de shell para conectarte a la shell bash de tu nuevo Pod nginx y realizar una secuencia de acciones.
- En Cloud Shell, ejecuta el siguiente comando para iniciar una shell de Bash interactiva en el contenedor de NGINX:
Se mostrará un nuevo prompt de la shell.
Resultado:
Iniciaste una shell de Bash interactiva en el contenedor del Pod new-nginx. Si el Pod tiene varios contenedores, podrías especificar uno por su nombre mediante la opción -c
.
Dado que la imagen del contenedor nginx no posee herramientas de edición de texto de forma predeterminada, deberás instalar una.
- En Cloud Shell, en la shell de Bash de NGINX, ejecuta los siguientes comandos para instalar el editor de texto nano:
Cuando se te pregunte si deseas continuar "Do you want to continue (Y/n)", presiona Y para confirmar.
Debes crear un archivo test.html
en el directorio de entrega estática del contenedor de NGINX.
- En Cloud Shell, en la shell de Bash de NGINX, ejecuta los siguientes comandos para cambiar al directorio de archivos estáticos y crear un archivo
test.html
:
- En Cloud Shell, en la sesión de nano de la shell de Bash de NGINX, escribe el siguiente texto:
- Presiona Ctrl + X y, luego, la tecla Y seguida de Intro para guardar el archivo y salir del editor nano.
- En Cloud Shell, en la shell de Bash de NGINX, ejecuta el siguiente comando para salir:
Para conectarte al contenedor de NGINX modificado y poder probarlo (con el nuevo archivo HTML estático), podrías crear un servicio. Una manera más fácil de hacerlo es usar la redirección de puertos para conectarte al Pod directamente desde Cloud Shell.
- En Cloud Shell, ejecuta el siguiente comando para establecer la redirección de puertos de Cloud Shell al Pod de NGINX (desde el puerto 10081 de la VM de Cloud Shell hasta el puerto 80 del contenedor de NGINX):
El resultado debería verse como el ejemplo.
Resultado:
Este proceso se realiza en primer plano, de modo que tendrás que abrir otra instancia de Cloud Shell para hacer la prueba.
- En la barra de menú de Cloud Shell, haz clic en el ícono del signo más (+) para iniciar una nueva sesión de Cloud Shell.
Aparecerá una segunda sesión en tu ventana de Cloud Shell. Puedes alternar entre las sesiones haciendo clic en los títulos en la barra de menú.
- En la segunda sesión de Cloud Shell, ejecuta el siguiente comando para probar el contenedor de NGINX modificado mediante la redirección de puertos:
Se mostrará el texto HTML que colocaste en el archivo test.html
.
Visualiza los registros de un Pod
- En la barra de menú de Cloud Shell, haz clic en el ícono del signo más (+) para iniciar otra sesión de Cloud Shell nueva.
Aparecerá una tercera sesión en tu ventana de Cloud Shell. Como antes, puedes alternar entre las sesiones haciendo clic en ellas en la barra de menú.
- En la tercera ventana de Cloud Shell, ejecuta el siguiente comando para mostrar los registros y transmitir los registros nuevos a medida que llegan (y, además, incluir marcas de tiempo) para el Pod new-nginx:
- Verás que los registros se muestran en esta nueva ventana.
- Regresa a la segunda ventana de Cloud Shell y ejecuta el comando curl de nuevo para generar algo de tráfico en el Pod.
- Revisa los mensajes de registro adicionales a medida que aparecen en la tercera ventana de Cloud Shell.
- Cierra la tercera ventana de Cloud Shell para dejar de mostrar los mensajes de registro.
- Cierra la ventana original de Cloud Shell para detener el proceso de redirección de puertos.
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.