Kubernetes mantiene programas en marcha
Kubernetes es un programa que mantiene en marcha otros programas dentro de un conjunto de ordenadores. Si sabes leer lo que te cuenta, sabes en qué estado está tu aplicación.
Una librería online vende libros las veinticuatro horas. Su web, su gestor de pedidos y su buscador son tres programas distintos. Alguien tiene que vigilar que los tres sigan funcionando. Hoy aprendes a mirar ese trabajo en un clúster de verdad.
Al final de esta lección
Nota
Puedo decir qué son un nodo, un namespace y un pod.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Clúster | el conjunto de máquinas que usa Kubernetes | |
| Nodo | una máquina del clúster | |
| Namespace | una carpeta con nombre que agrupa cosas | kube-system |
| Pod | una copia en marcha de un programa | |
| Contenedor | un programa y lo que necesita, aislado de los demás | |
| kubectl | la orden que habla con el clúster |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un clúster es un grupo de nodos
Un clúster es el conjunto de máquinas que usa Kubernetes. Cada máquina es un nodo. Una empresa real tiene decenas de nodos. En este laboratorio hay uno solo: la máquina virtual entera.
La orden kubectl habla con el clúster. kubectl get lista cosas de un tipo. Con kubectl get nodes ves los nodos y su estado.
Las columnas de kubectl get nodes
| Columna | Qué dice | Un valor posible |
|---|---|---|
| NAME | El nombre del nodo | el de tu máquina |
| STATUS | Si puede recibir trabajo | Ready |
| ROLES | Si además dirige el clúster | control-plane |
| VERSION | La versión de k3s que corre | v1.35.9+k3s1 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Lista los nodos del clúster
kubectl get nodesSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Lista los namespaces del clúster
kubectl get namespacesSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
¿Qué hace un namespace?
Un namespace o espacio de nombres agrupa las cosas de una aplicación o de un equipo. Dos equipos pueden usar el mismo nombre sin chocar, porque cada uno trabaja en el suyo.
Kubernetes trae sus namespaces: default, kube-system, kube-public y kube-node-lease. En kube-system viven los pods que el propio Kubernetes necesita, como el que resuelve nombres. La opción -n dice en qué namespace mirar.
Mira los pods propios de Kubernetes
kubectl get pods -n kube-systemSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un pod envuelve a un contenedor
Un pod es lo más pequeño que Kubernetes ejecuta. Contiene un contenedor, o a veces varios que comparten red. Tiene un nombre y una dirección propia, y vive en un nodo.
Un pod se crea a partir de una imagen, el archivo de partida del contenedor. Esta máquina no puede descargar imágenes de internet. Todos los pods usan busybox:1.37.0, una caja de herramientas diminuta que ya está dentro.
Crea tu propio namespace, almacen
kubectl create namespace almacenSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Crea un pod llamado caja en ese namespace
kubectl run caja --image=busybox:1.37.0 -n almacen -- sleep 3600Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Lista los pods de almacen
kubectl get pods -n almacenSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Pregunta con qué imagen corre caja
kubectl get pod caja -n almacen -o jsonpath='{.spec.containers[0].image}'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 un pod y un contenedor son lo mismo. No lo son: el pod envuelve al contenedor y es lo que Kubernetes cuenta, nombra y reinicia. Como casi todos los pods llevan un solo contenedor, la confusión es fácil. Pregunta siempre por el pod.
READY y STATUS dicen si un pod funciona
kubectl get pods imprime una fila por pod. READY muestra los contenedores listos y los totales: 1/1 está bien y 0/1 no. STATUS dice en qué fase está el pod. RESTARTS cuenta las veces que se reinició sin que lo pidieras.
Mira siempre las dos columnas juntas: un pod puede estar Running y tener 1/2 listos.
Ejemplo: qué significa cada estado
| STATUS | Qué significa | Qué haces |
|---|---|---|
| Running | El pod funciona | Mira READY por si falta algo |
| ContainerCreating | Se está preparando | Espera unos segundos |
| Pending | Todavía no tiene sitio en un nodo | Lee la lección 5 |
| CrashLoopBackOff | Arranca y se cae una y otra vez | Lee la lección 5 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Borra el pod caja
kubectl delete pod caja -n almacen --grace-period=1Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Comprueba que no vuelve
kubectl get pods -n almacenSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Borra el namespace y todo lo que tiene
kubectl delete namespace almacenSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.