Contenido del curso
Objetos y Recursos de Kubernetes
Redes y Almacenamiento en Kubernetes
Cargas de Trabajo y Escalado
Kubernetes en la Nube
Troubleshooting, Casos de uso y Certificaciones K8s
kubectl: get, describe, apply y delete
Resumen
Aprender a usar kubectl es el primer paso para tomar el control de un clúster de Kubernetes desde la terminal. Aquí descubrirás cómo consultar, crear, describir y eliminar recursos en Minikube usando los comandos esenciales que todo desarrollador o DevOps debe dominar.
kubectl es el punto de entrada al API server de Kubernetes y te permite ejecutar operaciones CRUD (create, request, update, delete) sobre cualquier recurso del clúster: pods, namespaces, nodos, replica sets o deployments.
¿Qué hace kubectl y cómo se conecta al API server?
Cuando ejecutas un comando con kubectl, en realidad estás enviando una petición al kube-api-server, el componente central de comunicación dentro del nodo maestro. Desde ahí, el clúster orquesta los cambios en los demás componentes.
El primer comando útil para explorar opciones es kubectl get help, que lista todo lo que puedes consultar. Por ejemplo, kubectl get pods funciona de forma similar a docker ps: te muestra los pods en ejecución. Si añades el flag -o wide, obtienes un output con más detalle.
¿Qué es kubectl? Es la herramienta de línea de comandos que se comunica con el API server de Kubernetes para gestionar recursos del clúster mediante operaciones CRUD [02:00].
¿Por qué kubectl no encuentra recursos al inicio?
Al ejecutar kubectl get pods en un clúster recién instalado, verás el mensaje de que no hay recursos en el namespace default. Esto es normal: Kubernetes organiza los recursos en namespaces, espacios lógicos que separan ambientes como producción, staging o desarrollo.
Para ver todos los namespaces existentes, usa kubectl get ns. Por defecto, Minikube incluye el namespace kube-system, donde corren los componentes esenciales del clúster.
¿Qué componentes corren en el namespace kube-system?
Si ejecutas kubectl get pods -o wide -A, el flag -A busca pods en todos los namespaces y revela la maquinaria interna de Minikube [04:30].
- core DNS: resolución de nombres dentro del clúster.
- etcd: la base de datos clave-valor donde Kubernetes guarda el estado.
- kube-api-server: el API con el que te comunicas.
- controller manager: gestiona los controladores del clúster.
- kube-proxy: maneja la red entre pods.
- kube-scheduler: asigna pods a nodos.
- storage provisioner: provisiona volúmenes de almacenamiento.
Estos son los engranajes que permiten que tu clúster funcione sin que tengas que configurarlos manualmente.
¿Cómo crear, describir y eliminar recursos con kubectl?
Vamos al flujo práctico. Para crear un namespace nuevo ejecutas kubectl create ns k8s-demo. Luego, con kubectl get ns, validas que aparezca en la lista, normalmente con pocos segundos de antigüedad [05:45].
Un truco útil: en la terminal puedes configurar un alias como k para reemplazar kubectl. Así, k get ns produce el mismo resultado con menos teclas. Este atajo es puro confort, no cambia el comportamiento.
Para borrar un namespace, usas kubectl delete ns k8s-demo. El clúster revisa primero si hay recursos dentro, por eso puede tardar unos segundos antes de completar la eliminación.
¿Qué es un namespace en Kubernetes? Es un espacio lógico que agrupa y aísla recursos. Sirve para separar ambientes como producción, staging o QA dentro del mismo clúster [03:30].
¿Cómo inspeccionar nodos con kubectl describe?
Minikube se instala por defecto con un solo nodo, que cumple el rol de control plane. Con kubectl get nodes ves la lista, y con kubectl describe node <nombre> accedes a información detallada [07:30]:
- Nombre y rol del nodo dentro del clúster.
- Labels y metadata.
- Condiciones de salud del nodo.
- Pods en ejecución y recursos consumidos.
Esta información se genera automáticamente; tú no tienes que definirla.
¿Cuál es la diferencia entre el modo declarativo e imperativo?
Kubernetes ofrece dos formas de trabajar con kubectl. La forma imperativa ejecuta acciones directas, como kubectl create ns. La forma declarativa usa archivos YAML que describen el estado deseado del recurso, y luego aplicas ese archivo con kubectl apply -f.
Por ejemplo, con un archivo simple-pod.yaml ejecutas kubectl apply -f simple-pod.yaml y Kubernetes crea el pod siguiendo la definición [09:00]. Dentro del YAML defines el nombre del pod, la imagen del contenedor y otros parámetros.
Después puedes verificar con kubectl get pods, inspeccionar con kubectl describe pod <nombre> y eliminarlo con kubectl delete pod <nombre>. Con esto ya cubres el ciclo CRUD completo sobre tus recursos.
¿Qué add-ons de Minikube debes habilitar para empezar?
Antes de desplegar aplicaciones reales, conviene activar dos add-ons clave en Minikube [10:30]:
- metric server: habilita la recolección de métricas para que el clúster pueda escalar automáticamente.
- registry: conecta tu registry local de Docker con el clúster de Minikube, útil para usar imágenes propias.
Los activas con minikube addons enable metrics-server y minikube addons enable registry. Con esto tu clúster queda listo para soportar cargas de trabajo más serias.
Ya tienes los comandos esenciales en tu cinturón: get, describe, apply y delete. ¿Qué recurso te gustaría desplegar primero en tu clúster? Cuéntalo en los comentarios.