¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Fundamentos de Kubernetes

Aquí está la lección completa para leer. Crea una cuenta gratuita para practicarla en un laboratorio en vivo.

Laboratorio de máquina virtual12 min de lectura10 comandos

Mantenerlo en marcha

La web de una tienda tiene que estar ahí todo el día. Si el ordenador que la sirve se estropea a las tres de la madrugada, alguien tiene que ponerla en marcha de nuevo en otro sitio. Kubernetes hace ese trabajo: le dices qué debe estar funcionando y lo mantiene funcionando, arrancando una copia nueva cada vez que una desaparece.

Al terminar esta lección

Nota

Puedo decir qué hace un Deployment y qué ocurre cuando se borra uno de sus pods.

Palabras clave

  • Clúster: las máquinas en las que Kubernetes ejecuta tus programas.
  • Nodo (node): una máquina del clúster.
  • Pod: una copia en marcha de un programa, hecha de uno o más contenedores.
  • Deployment: tu deseo de un número de pods idénticos, que Kubernetes mantiene cumplido.
  • Espacio de nombres (namespace): una carpeta con nombre que separa las cosas de un grupo de las de otro.
  • kubectl: el comando que habla con el clúster.

Para empezar: lo que ya sabes

Nota

Responde mentalmente. 1. ¿Qué es un contenedor? 2. ¿Qué sale mal si un programa funciona en un solo ordenador y ese ordenador se estropea? 3. ¿Qué significa escalar un programa? Necesitas las tres respuestas dentro de un momento.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra de la parte superior de esta lección. Este laboratorio es una máquina Ubuntu completa para ti, con un pequeño clúster de Kubernetes, k3s, instalado dentro, así que la primera vez tarda unos minutos en arrancar. Cada botón Ejecutar escribe su comando en el terminal de la máquina, uno tras otro en la misma sesión. Si uno dice que el clúster no está listo, espera un minuto y púlsalo de nuevo. Para verlos, o para escribir los tuyos, pulsa Abrir el terminal en la barra. Kubernetes necesita 2 GB de memoria: es la máquina de una cuenta de centro, y la de una cuenta gratuita tiene 1 GB.

Un clúster que se puede leer

Este clúster es una sola máquina, así que tiene un nodo. kubectl get nodes lo lista: su STATUS es Ready, su rol es control-plane y la última columna es la versión de k3s. kubectl get pods -A lista los pods de todos los espacios de nombres. Los de kube-system los arrancó el propio Kubernetes: coredns da nombres al clúster y local-path-provisioner da a los pods un sitio donde guardar archivos.

Comando
kubectl get nodes

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
kubectl get pods -A

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un Deployment mantiene pods en marcha

Primero un espacio de nombres propio, demo, para que nada de esto estorbe al laboratorio. Luego un Deployment llamado hello: tres copias de un programa pequeño, busybox ejecutando sleep. Esta máquina no llega a ningún registro de imágenes, así que todos los pods de este laboratorio usan la única imagen que tiene, busybox. kubectl get pods -n demo lista tres pods cuyos nombres empiezan por hello- y acaban en letras al azar. Están Running a los pocos segundos, y Pending o ContainerCreating hasta entonces.

Comando
kubectl create namespace demo

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
kubectl create deployment hello --image=busybox:1.37.0 --replicas=3 -n demo -- sleep 3600

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
kubectl get pods -n demo

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error frecuente

Advertencia

Mucha gente cree que borrar un pod detiene el programa. No es así. El Deployment sigue queriendo tres pods, así que crea otro. Para detener el programa se borra el Deployment, o se reduce.

Borra los pods, y vuelven

Ahora borra los tres pods de una vez. --grace-period=1 solo sirve para pararlos rápido. El comando imprime tres líneas, una por cada pod borrado. Luego lista los pods otra vez: hay tres, con nombres nuevos y un AGE de unos segundos. Nadie dijo a Kubernetes que los arrancara. El Deployment notó que no tenía ninguno y creó tres.

Comando
kubectl delete pods -n demo -l app=hello --grace-period=1

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
kubectl get pods -n demo

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comprueba

Consejo

¿Por qué siguen siendo tres los pods después de borrar los tres? Respuesta: el Deployment es un deseo de tres pods, y Kubernetes sigue haciendo cierto ese deseo.

Escálalo y ordena

Escalar es cambiar el número del deseo. kubectl scale pide cinco. El Deployment muestra READY como 3/5 mientras arrancan los dos pods nuevos, y luego 5/5. El último comando borra el espacio de nombres, y todo lo que contiene se va con él, listo para el laboratorio.

Comando
kubectl scale deployment hello -n demo --replicas=5

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
kubectl get deployment hello -n demo

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Comando
kubectl delete namespace demo

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ahora haz el laboratorio

Consejo

Has visto cómo un Deployment mantiene tres pods. Tu laboratorio pide más: tres servidores web detrás de un solo nombre de Service, un ConfigMap con el que se hacen las páginas y tres Deployments rotos que arreglas leyendo lo que dice Kubernetes. Abre el archivo README.md de tu carpeta personal con cat README.md en el terminal.

Comprobación final

Consejo

Responde sin mirar atrás. 1. ¿Qué hace un Deployment? 2. ¿Qué pasa cuando borras un pod de un Deployment de tres? 3. ¿Qué cambia kubectl scale? 4. ¿Para qué sirve un espacio de nombres? Respuestas: mantiene en marcha un número de pods idénticos; crea uno nuevo, así que vuelve a haber tres; el número de pods que quiere el Deployment; separar las cosas de un grupo de las de otro.

Para el profesorado

Consejo

Esta lección es un pequeño ejemplo de lección dada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia de cada alumno. Se da en un laboratorio VM: cada alumno tiene su propia máquina Ubuntu con un clúster de Kubernetes de un nodo (k3s), y un botón Ejecutar escribe en su terminal y muestra lo que imprimió. Puntos clave: 1. Un Deployment es un deseo de un número de pods. 2. Kubernetes mantiene cumplido el deseo, así que un pod borrado vuelve. 3. Escalar cambia el número. Error frecuente: creer que borrar un pod detiene el programa. Material: el laboratorio y un navegador, y una cuenta de centro, porque el clúster necesita 2 GB. Consejo: antes de borrar los pods, pregunte a la clase qué pasará y por qué. El propio laboratorio tiene una comprobación que califica el clúster. Copie la lección en su propio módulo para cambiarla, o construya una desde cero con el menú Laboratorio del constructor de lecciones.

Sobre este laboratorio y su código: Laboratorio de Kubernetes: un clúster k3s de un nodo para cada alumno en una VM Ubuntu privada

¿Enseñas a una clase? Asigna estas lecciones a tus estudiantes con calificación y un laboratorio para cada uno.