logoImagina
iconCurso
Te recomendamos nuestro curso de Kubernetes
Descubre el curso de Kubernetes
Ir al curso

Tutorial de Primeros Pasos en Kubernetes

iconImage
Escrito por Equipo de Imagina
Actualizado el 09-05-2025
Duración: 15 min

Bienvenidos a nuestro Tutorial de Primeros Pasos en Kubernetes, donde exploraremos de manera clara, concisa y práctica los fundamentos de esta poderosa plataforma. En este artículo, nos guiaremos paso a paso para que comprendas, configures y despliegues tu primera aplicación en un clúster de Kubernetes.

Durante esta introducción, identificaremos los conceptos clave, la terminología esencial y la importancia de automatizar la orquestación de contenedores. Nuestro objetivo es brindarte un marco sólido que te permita avanzar con confianza hacia los siguientes apartados del tutorial y dominar los componentes básicos de Kubernetes.

persona trabajando con kubernetes en la oficina

¿Qué es Kubernetes?

En esta sección se aborda la definición y el propósito de Kubernetes, así como sus ventajas clave como plataforma de orquestación de contenedores de código abierto desarrollado por Google, que proporciona un entorno robusto y flexible para el despliegue, administración y escalado de aplicaciones en contenedores.

Kubernetes es un sistema de orquestación de contenedores de código abierto diseñado para automatizar el despliegue, escalado y gestión de aplicaciones en clústeres. Su objetivo principal es abstraer la infraestructura subyacente, permitiendo que las organizaciones se centren en el desarrollo de servicios en lugar de en los detalles de la configuración del entorno. Gracias a su arquitectura modular, Kubernetes facilita la portabilidad y la resiliencia de las aplicaciones.

Ventajas principales de Kubernetes

  • Escalabilidad automática: Ajusta dinámicamente el número de réplicas según la carga, garantizando rendimiento constante, de manera sencilla y eficiente, tanto escalado horizontal como vertical, ajustando el número de réplicas de tus aplicaciones según la demanda, garantizando un rendimiento óptimo.
  • Alta disponibilidad y tolerancia a fallos: Distribuye los contenedores en varios nodos, reduciendo puntos únicos de fallo y aumentando la resiliencia del sistema, mediante mecanismos automáticos de recuperación en caso de fallos en tus aplicaciones. Por lo que si un nodo falla, se redistribuirá automáticamente las cargas de trabajo en nodos saludables, garantizando la disponibilidad de tus aplicaciones.
  • Despliegues continuos: Permite actualizaciones con mínimo tiempo de inactividad gracias a los rolling updates y estrategias de rollback.
  • Gestión de configuración: Centraliza configMaps y Secrets, asegurando que los datos sensibles y las variables de entorno se manejen de forma segura.
  • Ecosistema amplio: Compatible con múltiples herramientas y extensiones, facilitando la integración con soluciones de monitorización, registro y seguridad.
  • Portabilidad: Es agnóstico al proveedor de infraestructura y puede ejecutarse en diferentes entornos, como localmente, en la nube o en entornos híbridos. Esto te permite desplegar tus aplicaciones en cualquier entorno sin tener que realizar cambios significativos.
  • Automatización: Automatiza muchas tareas relacionadas con la administración de tus aplicaciones, como el despliegue, la escalabilidad, la actualización y el monitoreo. Esto te permite ahorrar tiempo y esfuerzo en tareas repetitivas y centrarte en el desarrollo y mejora continua de tus aplicaciones.

Principales componentes de Kubernetes

En este apartado exploraremos los elementos fundamentales que conforman la arquitectura de Kubernetes, clave para entender cómo orquesta, gestiona y escala tus aplicaciones.

  • Nodo: Es una máquina física o cirtual que forma parte de un clúster, que puede ser un servidor, una máquina virtual o incluso una instancia en la nube.

  • Nodo maestro y nodos de trabajo: El nodo maestro es el cerebro del clúster, encargado de la planificación, control y gestión del estado deseado. Los nodos de trabajo (o workers) son las máquinas que ejecutan los contenedores. Gracias a esta separación de roles, la resiliencia, la disponibilidad y el rendimiento del sistema están garantizados.

  • Pods: Es la unidad mínima de ejecución en Kubernetes, que agrupa uno o más contenedores con recursos compartidos como almacenamiento y red. Los Pods facilitan la coordinación de contenedores estrechamente relacionados y permiten realizar actualizaciones y escalados de forma ágil.
  • Servicios: Proporcionan una forma estable de acceder a uno o varios Pods, abstraen la estructura interna y garantizan el equilibrio de carga. Permiten la exposición y la comunicación entre os componenetes de la aplicación. Gracias a los Servicios, los clientes no necesitan conocer la ubicación exacta de cada Pod, lo que mejora la flexibilidad y la portabilidad de la aplicación.

  • Deployments: Definen el estado deseado de tus aplicaciones, gestionan la creación, el actualizar y el rollback de réplicas de Pods. Con los Deployments, es posible realizar estrategias como rolling updates y rollback automático, asegurando continuidad y mínimo tiempo de inactividad.
  • Clústeres: Compuesto por varios nodos trabajando juntos, es responsable de la gestión y distribución de las aplicaciones en contenedores. En un clúster típico hay un nodo maestro y varios nodos de trabajo.

  • Volúmenes: Es necesario que las aplicaciones en contenedores almacenan datos de manera persistente. Pueden ser de diferentes tipos, como almacenamiento local, en la nube o sistemas de archivos en red. Proporcionan una forma de almacenar datos de manera persistente y compartirlos entre diferentes pods.

Instalación y configuración del entorno

En esta sección prepararemos, configuraremos y verificaremos las herramientas esenciales para empezar a trabajar con Kubernetes en un entorno local.

Instalar kubectl

Para gestionar tu clúster de Kubernetes, necesitas la CLI oficial: kubectl. Primero, descarga el binario correspondiente a tu sistema operativo y otórgale permisos de ejecución. Por ejemplo, en Linux usarías:

1curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" 2chmod +x kubectl 3sudo mv kubectl /usr/local/bin/

Con esto tendrás kubectl isntalado y listo para interactuar con tu clúster.

Instalar Minikube

Para simular un clúster en tu máquina local, Minikube es la opción más popular. Descarga el ejecutable desde el sitio oficial y ubícalo en tu PATH:

1curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 2chmod +x minikube-linux-amd64 3sudo mv minikube-linux-amd64 /usr/local/bin/minikube

Una vez instalado, podrás iniciar un clúster ejecutando minikube start, lo cual creará un entorno aislado para tus contenedores.

Verificar la instalación

Para asegurarte de que todo está correctamente instalado, ejecuta:

1kubectl version --client 2minikube version 3kubectl cluster-info

Estos comandos te mostrarán las versiones de kubectl y Minikube, así como la información de tu clúster activo. Si ves detalles de tu API server y el dashboard, ¡todo está listo para continuar!

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *

Crear tu primer clúster de Kubernetes

Para comenzar a desplegar y probar aplicaciones de forma local, vamos a crear un clúster que nos proporcione un entorno aislado y controlado.

INICIAR UN CLÚSTER CON MINIKUBE

  1. Ejecuta el comando para levantar el clúster:

    1minikube start --memory=4096 --cpus=2 --driver=docker

Con esto, Minikube provisiona un nodo único con los recursos especificados configura el control plane.

  1. Verifica el estado con:
1minikube status

Deberías ver que el clúster, el nodo y el kubelet están en estado Running, lo que confirma que tu entorno está listo.

CONFIGURAR EL CONTEXTO DE KUBECTL

  1. Consulta el contexto activo:
1kubectl config current-context
  1. Si no está apuntando a Minikube, cámbialo con:
1kubectl config use-context minikube

Así te aseguras de que kubectl interactúe con el clúster recién creado.

  1. Comprueba la conexión ejecutanto:
1kubectl get nodes

Verás tu nodo en estado Ready, lo que indica que el clúster está disponible para desplegar cargas de trabajo.

Despliegue de tu primera aplicación

En esta sección vamos a crear un Deployment y a exponer la aplicación mediante un Servicio, para que tu software esté disponible desde fuera del clúster.

CREACIÓN Y ADMINISTRACIÓN DE PODS

Cada pod puede contener uno o varios contenedores que trabajan juntos. Para crear un pod, necesitamos definir un archivo de configuración YAML que describa las características del pod, como la imagen del contenedor, los puertos que expone y cualquier otra configuración adicional.

Aquí tienes un ejemplo de un archivo YAML para crear un pod:

1apiVersion: v1 2kind: Pod 3metadata: 4 name: nombre_pod 5spec: 6 containers: 7 - name: nombre_contenedor 8 image: imagen_contenedor

Una vez que tengas el archivo YAML del pod listo, puedes usar la herramienta kubectl para crear y administrar el pod. Para crear un pod a partir del archivo YAML, ejecuta el siguiente comando:

1kubectl apply -f nombre_archivo.yaml

Para administrar los pods existentes, puedes utilizar comandos como kubectl get pods para obtener información sobre los pods en ejecución, kubectl describe pod nombre_pod para obtener detalles específicos de un pod y kubectl delete pod nombre_pod para eliminar un pod.

ESCALADO HORIZONTAL Y VERTICAL

Una de las ventajas de Kubernetes es su capacidad para escalar nuestras aplicaciones de forma flexible. Existen dos formas de escalar: horizontal y vertical.

El escalado horizontal implica aumentar o disminuir el número de réplicas de un pod en función de la carga de trabajo. Por ejemplo, si nuestra aplicación está experimentando un aumento en la demanda, podemos aumentar el número de réplicas para manejar la carga adicional. Esto se logra utilizando objetos como Deployments y ReplicaSets.

Para escalar horizontalmente un despliegue, puedes usar el siguiente comando:

1kubectl scale deployment nombre_despliegue --replicas=n

Donde nombre_despliegue es el nombre de tu despliegue y n es el número deseado de réplicas.

El escalado vertical implica ajustar los recursos asignados a un pod individual. Por ejemplo, si una aplicación requiere más recursos de CPU o memoria para funcionar correctamente, podemos aumentar la asignación de recursos para ese pod específico. Puedes modificar la asignación de recursos editando el archivo YAML del pod y aplicando los cambios con kubectl apply -f nombre_archivo.yaml.

CREAR UN DEPLOYMENT

Para definir el estado deseado de tu aplicación, crea un archivo YAML llamado deployment.yaml con el siguiente contenido:

1apiVersion: apps/v1 2kind: Deployment 3metadata: 4 name: mi-app-deployment 5spec: 6 replicas: 3 7 selector: 8 matchLabels: 9 app: mi-app 10 template: 11 metadata: 12 labels: 13 app: mi-app 14 spec: 15 containers: 16 - name: mi-app-contenedor 17 image: nginx:latest 18 ports: 19 - containerPort: 80

A continuación, aplica el Deployment con:

1kubectl apply -f deployment.yaml

Verifica que las réplicas estén en Running con:

1kubectl get deployments 2kubectl get pods

EXPONER LA APLICACIÓN CON UN SERVICIO

Para acceder desde fuera del clúster, define un service.yaml así:

1apiVersion: v1 2kind: Service 3metadata: 4 name: mi-app-service 5spec: 6 type: NodePort 7 selector: 8 app: mi-app 9 ports: 10 - port: 80 11 targetPort: 80 12 nodePort: 30080

Aplica el Servicio:

1kubectl apply -f service.yaml

Comprueba el puerto asignado y accede a la aplicación:

1kubectl get services 2minikube service mi-app-service --url

Con estos pasos, tu aplicación estará desplegada y accesible mediante un NodePort externo.

ESTRATEGIAS DE ACTUALIZACIÓN Y DESPLIEGUE

Cuando necesitamos actualizar nuestras aplicaciones, es importante hacerlo de manera controlada y sin interrupciones para los usuarios. Kubernetes ofrece diferentes estrategias de actualización y despliegue gradual para lograr esto.

Una estrategia popular es la actualización rodante (Rolling Update), donde actualiza gradualmente las réplicas de nuestra aplicación sin afectar la disponibilidad. Esto se logra mediante la cre

ación de nuevas réplicas con la versión actualizada y la eliminación gradual de las réplicas antiguas.

Para realizar una actualización rodante de un despliegue, puedes usar el siguiente comando:

1kubectl set image deployment/nombre_despliegue nombre_contenedor=nueva_imagen

Donde nombre_despliegue es el nombre de tu despliegue, nombre_contenedor es el nombre del contenedor dentro del pod y nueva_imagen es la nueva imagen que deseas usar.

MONITOREO Y REGISTRO DE APLICACIONES

Es esencial tener visibilidad sobre el estado y el rendimiento de nuestras aplicaciones. Para monitorear nuestras aplicaciones, Kubernetes proporciona herramientas y funcionalidades integradas.

Puedes utilizar los comandos kubectl get pods y kubectl describe pod nombre_pod para obtener información sobre el estado de los pods y los eventos ocurridos. Además, ofrece la integración con herramientas de monitoreo populares como Prometheus y Grafana.

También puedes configurar un sistema de registro centralizado para tus aplicaciones en Kubernetes. Por ejemplo, puedes utilizar la pila ELK (Elasticsearch, Logstash y Kibana) para recopilar y visualizar los registros generados por tus aplicaciones. Puedes consultar nuestro tutorial de ELK para aprender los fundamentos de esta herramienta.

Gestión de configuración y secretos

En esta sección abordaremos la gestión de la configuración y el manejo de secretos en Kubernetes, utilizando ConfigMaps y Secrets para separar los datos sensibles de la lógica de la aplicación.

CONFIGMAPS

Los ConfigMaps permiten almacenar datos de configuración en formato clave-valor, facilitando la separación de la configuración del código. Gracias a los ConfigMaps, es posible actualizar parámetros sin necesidad de reconstruir las imágenes de los contenedores.

Ejemplo de creación de un ConfigMap:

1kubectl create configmap mi-config \ 2 --from-literal=DB_HOST=mi-base-datos.local \ 3 --from-literal=DB_PORT=5432

Para usarlo en un Pod, añade en el YAML:

1envFrom: 2- configMapRef: 3 name: mi-config

SECRETS

Los Secrets permiten gestionar información sensible (contraseñas, tokens, certificados) de forma segura, ya que los datos se almacenan codificados y pueden integrarse como volúmenes o variables de entorno.

Ejemplo de creación de un Secret:

1kubectl create secret generic mi-secret \ 2 --from-literal=API_KEY=abcd1234 \ 3 --from-literal=TLS_CERT="$(cat cert.pem)"

Para montar el Secret en un Pod, incluye:

1volumes: 2- name: secret-vol 3 secret: 4 secretName: mi-secret 5containers: 6- name: app 7 volumeMounts: 8 - name: secret-vol 9 mountPath: "/etc/secrets"

Con ConfigMaps y Secrets, se consigue una configuración más flexible, segura y mantenible en Kubernetes.

Escalado y actualización de aplicaciones

ESCALAR RÉPLICAS

Para ajustar la capacidad de tu aplicación, es fundamental escalar réplicas de forma manual o automática. Con el comando kubectl scale, puedes aumentar o reducir el número de Pods:

1kubectl scale deployment mi-app-deployment --replicas=5
  • Alta disponibilidad: al incrementar réplicas, mejoras la resiliencia ante fallos.
  • Optimización de recursos: al reducir réplicas, ahorras CPU y memoria.
  • Control preciso: definir el número exacto de réplicas te permite ajustar la carga según la demanda.

Para escalado automático, utiliza un Horizontal Pod Autoscaler:

1kubectl autoscale deployment mi-app-deployment --min=2 --max=10 --cpu-percent=75

Esto garantiza un escalado dinámico basado en el uso de CPU, liberándote de la gestión manual.

ACTUALIZACIONES CONTINUAS (ROLLING UPDATES)

Las Rolling Updates permiten desplegar nuevas versiones sin interrumpir el servicio. Kubernetes reemplaza gradualmente los Pods antiguos por los nuevos, manteniendo la disponibilidad:

  1. Actualiza la imagen en tu Deployment:
1kubectl set image deployment/mi-app-deployment mi-app-contenedor=mi-imagen:v2
  1. Monitorea el progreso:
1kubectl rollout status deployment/mi-app-deployment
  • Cero downtime: los usuarios no perciben caídas durante el despliegue.
  • Rollback sencillo: si algo falla, reviertes con:
1kubectl rollout undo deployment/mi-app-deployment
  • Control de versiones: mantén un historial de actualizaciones para auditoría y diagnóstico.

Los Rolling Updates son clave para un CI/CD eficiente, garantizando calidady rapidez en cada release.

Monitoreo y depuración

En esta sección aprenderás a obtener información esencial sobre el estado de tus aplicaciones, identificar errores y mejorar la estabilidad de tu entorno de Kubernetes.

Uso de kubectl para logs y eventos

Para diagnosticar problemas en los Pods, los logs son una fuente crucial de información. Con el comando:

1kubectl logs <nombre-pod>

Podrás visualizar las salidas de tu contenedor y detectar errores o excepciones. Además, los eventos del clúster revelan cambios de estado:

1kubectl get events --sort-by=.metadata.creationTimestamp

Esto muestra en orden cronológico las notificaciones de programación, reinicios y fallos, facilitando la investigación de incidencias.

Inspeccionar recursos con describe

El comando describe ofrece un informe detallado de cualquier objeto de Kubernetes, incluyendo Pods, Services y Deployments:

1kubectl describe pod <nombre-pod>

En la salida encontrarás información sobre volúmenes montados, variables de entorno, estado de las réplicas y eventos relacionados con ese recurso. Este nivel de detalle es indispensable para validar la configuración y comprender el comportamiento de tus componentes en tiempo real.

Buenas prácticas iniciales

El correcto uso de etiquetas, namespaces y convenciones de nombrado es esencial para mantener la organización, la seguridad y la escalabilidad adecuada de los recursos en Kubernetes.

  • Uso de etiquetas y namespaces: Las etiquetas permiten identificar, agrupar y filtrar recursos de forma flexible. Por ejemplo, al añadir app: mi-app o env: producción, se facilita la gestión y el monitoreo de los objetos. Por otro lado, los namespaces actúan como espacios lógicos aislados, separando entornos de desarrollo, pruebas y producción, lo que mejora la seguridad y la claridad en el clúster.

  • Convenciones de nombrado: Adoptar nombres claros, consistentes y predecibles es crucial para evitar confusiones y colisiones. Utiliza prefijos que indiquen el propósito (db-, web-, cache-) y añade versiones en el nombre (mi-app-v1). Asimismo, emplea minúsculas y guiones para cumplir con las restricciones de Kubernetes y garantizar una identificación única de cada recurso.

Conviértete en un Experto en Kubernetes

Ahora que has recorrido los fundamentos, configurado tu entorno y desplegado tu primera aplicación, estás listo para llevar tus habilidades al siguiente nivel. Con nuestro curso de Kubernetes, profundizarás en temas avanzados como ingress controllers, redes de servicio mesh y automatización de pipelines CI/CD.

Inscríbete hoy y accede a clases prácticas, laboratorios en vivo y soporte personalizado. ¡Da el salto definitivo y domina la orquestación de contenedores con nuestro curso de Kubernetes!

Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *
Tutoriales relacionados
Cómo Usar Docker Secrets para Gestionar Información
Protege credenciales y datos confidenciales en entornos Swarm con docker secrets. Descubre cómo crear, montar, rotar y auditar secretos de forma segura.
¿Qué es Lens? El Mejor IDE de Kubernetes
Descubriendo Lens Kubernetes: La Herramienta que Revoluciona la Gestión de Kubernetes con su Interfaz Intuitiva y Funcionalidades Avanzadas
¿Qué es Docker y Cómo Usarlo? Guía Completa
Explora qué es Docker, sus componentes principales y cómo puede mejorar la portabilidad, eficiencia y escalabilidad de tus aplicaciones.
Cómo reducir el tamaño de una imagen en Docker
Domina Docker: Reduce el tamaño de tus imágenes, acelera despliegues y optimiza apps. ¡Sé un experto con nuestro tutorial y herramientas!
Kubernetes: Guía Completa para Principiantes
kubernetes
artículo
Conoce Kubernetes, la herramienta líder para automatizar la gestión y escalado de aplicaciones en entornos de contenedores de manera eficiente.
Descubre
Tabla de contenido
¿Qué es Kubernetes?
Ventajas principales de Kubernetes
Principales componentes de Kubernetes
Instalación y configuración del entorno
Instalar kubectl
Instalar Minikube
Verificar la instalación
Crear tu primer clúster de Kubernetes
Despliegue de tu primera aplicación
Gestión de configuración y secretos
Escalado y actualización de aplicaciones
Monitoreo y depuración
Uso de kubectl para logs y eventos
Inspeccionar recursos con describe
Buenas prácticas iniciales
Conviértete en un Experto en Kubernetes
Descubre la formación a tu medida
Rellena el formulario para obtener más información sobre los cursos.
Tamaño de la empresa *
Términos y condiciones *