Saltar al contenido principal

¿Qué es Kubernetes? Una introducción con ejemplos

Aprende todo sobre Kubernetes y cómo puede ayudarte en tu flujo de trabajo de ingeniería de datos.
Actualizado 26 feb 2025  · 9 min de lectura

Siestás al tanto del auge de la computación en nube, habrás oído hablar de Kubernetes. En el desarrollo moderno de aplicaciones, es una herramienta clave que hay que aprender para gestionar diversas configuraciones de infraestructura.

En este artículo introductorio, te proporcionaremos una visión general de Kubernetes y sus componentes, así como un tutorial completo para implementarlo localmente. Si buscas una experiencia de aprendizaje práctica para complementar este tutorial, consulta nuestro curso Introducción a Kubernetes

¿Qué es Kubernetes?

Kubernetes es una plataforma de orquestación de contenedores de código abierto que automatiza el despliegue, escalado y gestión de aplicaciones en contenedores. Desarrollado originalmente por Google, se ha convertido en el estándar de facto para ejecutar contenedores a escala.

Abstrae la complejidad de gestionar contenedores individuales y permite a los desarrolladores centrarse en crear y desplegar sus aplicaciones.

¿Por qué usar Kubernetes?

He aquí algunas ventajas clave del uso de Kubernetes:

  • Orquestación de contenedores: Automatiza la distribución y programación de contenedores en un clúster.
  • Escalabilidad y autocuración: Simplifica el escalado horizontal (replicando contenedores) y vertical (ajustando la asignación de recursos), todo ello con capacidades de autorreparación.
  • Alta disponibilidad: Garantiza que los contenedores (y por tanto tus servicios) sigan operativos aunque fallen algunos nodos.
  • Portabilidad: Abstracta la infraestructura subyacente, por lo que es sencillo ejecutarlo tanto en las instalaciones como en distintos proveedores de la nube.
  • Utilización eficiente de los recursos: Redimensiona los contenedores en función del uso de recursos, optimizando la asignación de recursos y reduciendo costes.

Kubernetes es útil en aplicaciones variadas como:

  • DevOps: Automatiza el despliegue, escalado y gestión de aplicaciones en contenedores.
  • Microservicios: Descompone las grandes aplicaciones monolíticas en servicios más pequeños y manejables para mejorar la agilidad y la escalabilidad.
  • Grandes datos: Simplifica el despliegue y la gestión de sistemas complejos de big data utilizando contenedores.
  • Computación de borde: Permite ejecutar Kubernetes en dispositivos periféricos para procesar y analizar los datos más cerca de donde se generan, reduciendo la latencia y mejorando el rendimiento.
  • Entrega continua: Se integra con herramientas como Jenkins y GitLab para canalizaciones automatizadas de entrega continua.
  • Aprendizaje automático: Proporciona una plataforma escalable para entrenar y desplegar modelos de aprendizaje automático, manejar grandes conjuntos de datos y cálculos complejos.

Conceptos clave en Kubernetes

Para entender cómo funciona Kubernetes, necesitarás conocer bien sus conceptos clave. 

Incluyen 4 conceptos principales:

  1. Agrupaciones
  2. Vainas
  3. Espacios de nombres
  4. Operarios

Exploraremos más sobre esto a continuación.

Agrupaciones

Los clústeres Kubernetes son grupos de nodos, que son máquinas individuales que ejecutan el software Kubernetes. El clúster actúa como plano de control para gestionar aplicaciones y servicios.

En una configuración típica, un clúster tendrá un nodo maestro y varios nodos trabajadores. El nodo maestro es responsable de coordinar todas las actividades del clúster, mientras que los nodos trabajadores se encargan de ejecutar y gestionar los contenedores.

Vainas

Los pods son la unidad más pequeña de despliegue en Kubernetes. Pueden contener uno o varios contenedores, junto con recursos de almacenamiento compartidos y configuraciones de red.

Cada pod tiene su propia dirección IP única y puede comunicarse con otros pods del mismo clúster a través de esta dirección. Esto permite una comunicación eficaz entre los distintos componentes de una aplicación.

Los pods pueden ser individuales o multicontenedor, y cada uno tiene su propio caso de uso.

  • Cápsulas monocontenedor: El tipo más común de pod, en cuyo interior se ejecuta un único contenedor. Esto es útil para aplicaciones sencillas o microservicios que sólo requieren un contenedor.
  • Vainas multicontenedor: Varios contenedores se ubican y funcionan juntos. Esto puede ser beneficioso para aplicaciones complejas en las que distintos contenedores necesitan comunicarse entre sí y compartir recursos.

Espacios de nombres

Los espacios de nombres proporcionan una forma de particionar lógicamente los recursos dentro de un mismo clúster. Esto permite una mejor organización y gestión de los recursos, así como controles de seguridad más estrictos.

Los espacios de nombres también pueden utilizarse para gestionar distintos entornos, como desarrollo, preparación y producción. Esto garantiza que los recursos estén aislados y no se vean afectados por los cambios realizados en otros entornos.

Para ver los espacios de nombres de tu clúster, puedes utilizar este comando:

kubectl get namespaces

Para cambiar entre espacios de nombres, utiliza lo siguiente

kubectl config set-context --current --namespace <namespace name>

Operarios

Los operadores son extensiones de software que ayudan a automatizar la gestión de los recursos de Kubernetes. Utilizan controladores personalizados y extensiones de la API para gestionar tareas complejas de forma más eficaz y automática.

Algunos operadores populares son:

  • Prometheus para la vigilancia
  • operador etcd para gestionar clusters etcd

Utilizar operadores puede simplificar enormemente la gestión de aplicaciones y recursos dentro de tu clúster. Gracias a su capacidad para automatizar tareas y proporcionar funciones avanzadas, son cada vez más populares entre los usuarios de Kubernetes.

Componentes básicos de Kubernetes

En la mayoría de los entornos Kubernetes hay un conjunto de componentes básicos.

componentes principales de kubernetes

Fuente: Kubernetes

Aquí tienes una lista de componentes y lo que hacen:

  1. Servidor API: Este componente actúa como punto central de gestión de todos los recursos de Kubernetes. Recibe peticiones de los usuarios y otros componentes y luego aplica políticas para gestionar el clúster.
  2. Responsable de control: El gestor del controlador es responsable de mantener el estado deseado del clúster, supervisando y conciliando constantemente los cambios realizados en los objetos del clúster.
  3. etcd: Se trata de un almacén distribuido de claves y valores que sirve como almacén primario de datos para Kubernetes. Almacena todos los datos del clúster y garantiza la coherencia y disponibilidad de los datos.
  4. kubelet: Este agente se ejecuta en cada nodo del clúster y se encarga de gestionar los contenedores, asegurándose de que se ejecutan según las configuraciones especificadas.
  5. Proxy Kube: Este componente se ejecuta en cada nodo y se encarga de dirigir el tráfico de red al contenedor correcto.

Cómo funciona Kubernetes

Como ya hemos establecido, Kubernetes automatiza el despliegue, escalado y gestión de aplicaciones en contenedores a través de clústeres. Garantiza alta disponibilidad, uso eficiente de los recursos y autorreparación sin intervención manual.

En lugar de gestionar contenedores individuales, Kubernetes los agrupa en Pods y los distribuye entre nodos trabajadores, que se comunican con el plano de control para mantener el estado deseado del sistema.

He aquí cómo funciona Kubernetes, en pocas palabras:

  1. Define el despliegue de la aplicación: Especifica el estado deseado en un archivo YAML, incluyendo réplicas, límites de recursos y reglas de red.
  2. Programa las cargas de trabajo: El Programador asigna Pods a nodos trabajadores en función de la disponibilidad de recursos.
  3. Gestiona el estado del clúster: El Gestor de Controladores se asegura de que el sistema mantiene el número correcto de Pods, sustituyendo los que fallen.
  4. Maneja las redes: Kubernetes gestiona la comunicación entre los servicios y el acceso externo a través de los controladores Services e Ingress.
  5. Escala y autocúrate: Kubernetes ajusta el número de Pods en ejecución en función de la demanda y reinicia automáticamente los contenedores que fallan.

Al gestionar la complejidad de la infraestructura, Kubernetes permite a los equipos centrarse en crear aplicaciones en lugar de gestionar despliegues, lo que lo hace esencial para cargas de trabajo escalables y resistentes en todos los sectores.

Terminología y conceptos comunes

Veamos algunos de los términos clave que debes conocer y sus definiciones:

  • Manifiestos YAML: Son archivos de configuración que definen el estado deseado de tu aplicación o infraestructura. Pueden utilizarse para crear, actualizar y eliminar recursos en Kubernetes.
  • StatefulSets frente a Despliegues: Son dos tipos de controladores en Kubernetes que gestionan el ciclo de vida de los pods. Los Deployments se suelen utilizar para aplicaciones sin estado, mientras que los StatefulSets se utilizan para aplicaciones con estado.
  • Servicios: Proporcionan una dirección IP y un nombre DNS estables para acceder a tu aplicación dentro del clúster. También permiten la comunicación entre distintos pods.
  • ConfigMaps: Se utilizan para almacenar datos de configuración en pares clave-valor a los que puede acceder tu aplicación.
  • Secretos: Al igual que los ConfigMaps, se utilizan para almacenar información sensible, como contraseñas o claves API.

Primeros pasos con Kubernetes

Trabajar con Kubernetes puede parecer desalentador, especialmente cuando se trata de comprender la terminología y los conceptos. Sin embargo, una vez que tengas una sólida comprensión de estos términos esenciales, navegar por la plataforma te resultará mucho más fácil.

Empecemos por ver algunas herramientas utilizadas con Kubernetes.

Herramientas para principiantes

Como principiante en Kubernetes, tener que desplegar aplicaciones en la nube puede ser demasiado. Como tal, puedes recurrir a algunas herramientas comunes para desplegar localmente. 

Aquí tienes las 2 herramientas más utilizadas:

1. Minikube

Minikube es una implementación ligera de Kubernetes que puede ejecutarse en una sola máquina anfitriona. Normalmente ejecuta un clúster de un solo nodo en una máquina virtual (VM) en tu portátil o estación de trabajo.

Por qué utilizarlo:

  • Fácil de montar y desmontar.
  • Genial para el desarrollo local y las pruebas de concepto.
  • Uso mínimo de recursos en comparación con un clúster completo.

Cómo instalar Minikube (ejemplo en Windows):

# Install via Windows Package Manager
winget install Kubernetes.minikube

Deberías poder ver el siguiente mensaje de instalación. Acepta los términos y condiciones si se te pide usando "Y".

instalación de kubernetes

A continuación, para poner en marcha un clúster sencillo en minikube, utiliza el siguiente comando start:

# Start a single-node cluster
minikube start

Para comprobar que el nodo del clúster se ha iniciado correctamente, ejecuta el comando get:

# Verify the cluster is running
kubectl get nodes

Nota: Necesitas tener instalado el servidor API kubectl en tu máquina local (en muchos casos se instala con Minikube automáticamente).

2. Tipo (Kubernetes en Docker)

Kind significa Kubernetes en Docker. Utiliza contenedores Docker como "nodos" en un clúster Kubernetes, proporcionando un sencillo entorno de clúster local basado en contenedores.

Por qué utilizarlo:

  • Arranque más rápido comparado con Minikube en muchos escenarios.
  • Facilita la puesta en marcha simultánea de varios clusters de pruebas, ideal para las canalizaciones CI/CD.
  • A menudo se utiliza en entornos de prueba automatizados debido a su menor sobrecarga.

Cómo instalar Kind (Ejemplo en Windows):

# Install Kind with Windows Package Manager
winget install Kubernetes.kind

Una vez instalado, puedes crear un clúster sencillo utilizando el comando create cluster y darle un nombre.

# Create a basic cluster
kind create cluster --name example-cluster

Para comprobar si tu clúster tipo Kubernetes se ha iniciado, utiliza el siguiente comando get.

# Check running clusters
kind get clusters

También puedes interactuar con el clúster a través de la interfaz kubectl:

# Interact with your Kind cluster using kubectl
kubectl get nodes

Nota: Asegúrate de que tienes Docker instalado y funcionando.

Proveedores de la nube (EKS, GKE, AKS)

Cuando ejecutes Kubernetes en la nube, aquí tienes algunos proveedores de nube entre los que elegir:

1. Amazon EKS (Servicio Elástico de Kubernetes)

Amazon EKS es un servicio administrado que facilita la ejecución de Kubernetes en AWS sin necesidad de administrar tu propio plano de control o nodos trabajadores. Se integra con otros servicios de AWS para obtener características adicionales como equilibrio de carga, almacenamiento, autoescalado y monitorización.

Algunas funciones adicionales son:

  • Ofrece integraciones con otros servicios de AWS (por ejemplo, IAM, CloudWatch, ECR).
  • La escalabilidad y la alta disponibilidad están integradas en la plataforma.

2. Google GKE (Motor Google Kubernetes)

Google GKE es un servicio totalmente gestionado para ejecutar Kubernetes en Google Cloud Platform. Ofrece escalado automático, capacidades de autorreparación e integración con otros servicios de Google Cloud.

Algunas funciones adicionales son:

  • Profunda integración con servicios de GCP como Cloud Logging, Cloud Monitoring y Container Registry.
  • Ofrece el modo piloto automático, que gestiona la infraestructura del clúster automáticamente.

3. Azure AKS (Servicio Azure Kubernetes)

Azure AKS proporciona clústeres Kubernetes sin servidor que están totalmente integrados con otros servicios de Azure como Almacenamiento, Redes y Equilibrio de Carga. También es compatible con herramientas DevOps como Helm y Prometheus.

Algunas funciones adicionales son:

  • Se integra con Azure Active Directory, Azure Monitor, Container Registry, etc.
  • Ofrece Kubernetes sin servidor (Nodos Virtuales) utilizando Azure Container Instances.

Recursos para aprender Kubernetes

Aprender Kubernetes por primera vez puede parecer abrumador, pero hay muchos recursos disponibles para ayudarte a empezar. 

Aquí tienes algunos recursos recomendados:

Ejemplo de despliegue de Kubernetes

Para ejecutar aplicaciones en Kubernetes, debes seguir un flujo de trabajo estructurado que implica configurar un clúster, desplegar una aplicación en contenedores, exponerla como servicio y escalarla según sea necesario. 

Hemos cubierto este proceso en detalle en nuestro tutorial de Kubernetes, pero aquí tienes un desglose de alto nivel:

Configurar un clúster Kubernetes

Utiliza Minikube para crear un clúster local para pruebas y desarrollo. Instala Minikube e inicia tu clúster utilizando:

minikube start --driver=docker
Comprueba que tu clúster está funcionando:
kubectl get nodes

Despliega una aplicación

Define el estado deseado de tu aplicación en un archivo YAML de despliegue. Por ejemplo, desplegar un servidor web Nginx tiene este aspecto:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - name: hello-container
        image: nginx:latest
        ports:
        - containerPort: 80

Aplica el despliegue con:

kubectl apply -f hello-deployment.yaml

Exponer la aplicación como un servicio

Para que la aplicación sea accesible, crea un Servicio utilizando:

kubectl expose deployment hello-deployment --type=NodePort --port=80 --name=hello-service

Recupera la URL externa y abre la aplicación en tu navegador:

minikube service hello-service

Escala y supervisa la aplicación

Kubernetes te permite escalar aplicaciones sin esfuerzo. Para aumentar las réplicas:

kubectl scale deployment hello-deployment --replicas=3

Comprueba los Pods en funcionamiento:

kubectl get pods

Ver registros para depuración:

kubectl logs -f <pod-name>

Aquí tienes algunos ejemplos para seguir explorando en proyectos avanzados:

  • Ejecuta trabajos de streaming en contenedores (por ejemplo, Spark en Kubernetes, Kafka en Kubernetes).
  • Utiliza Volúmenes persistentes para montar soluciones de almacenamiento externo como AWS EBS, Azure Disks o NFS.
  • Despliega aplicaciones más complejas (por ejemplo, microservicios multinivel con bases de datos).
  • Explora funciones avanzadas como los controladores Ingress, las Mallas de Servicios (por ejemplo, Istio), gráficos Helm para la gestión de paquetes.

Conclusión

Kubernetes es una potente plataforma para desplegar y gestionar aplicaciones en contenedores a escala, lo que la convierte en una herramienta esencial para los ingenieros de datos que necesitan entornos elásticos y fiables para el procesamiento de datos. 

Si estás interesado en aprender más sobre Kubernetes, nuestro curso Curso de Introducción a Kubernetes es el lugar perfecto para empezar.

Preguntas frecuentes sobre Kubernetes

¿Es Kubernetes lo mismo que Docker?

No, Kubernetes es una herramienta de orquestación de contenedores, mientras que Docker es una plataforma de contenerización. Trabajan juntos para gestionar y desplegar contenedores, pero sirven para fines distintos.

¿Cuáles son las ventajas de utilizar Kubernetes?

Kubernetes permite una gestión y despliegue más sencillos de los contenedores, mejora la escalabilidad y disponibilidad de las aplicaciones, y admite actualizaciones y retrocesos automatizados.

¿Puede utilizarse Kubernetes en cualquier tipo de entorno?

Sí, Kubernetes puede utilizarse tanto en entornos locales como en la nube. Es muy versátil y puede adaptarse a diversas configuraciones de infraestructura.

¿Es difícil aprender a utilizar Kubernetes?

Aunque conlleva una curva de aprendizaje, hay muchos recursos disponibles en Internet, como DataCamp y las guías de iniciación de los propios Kubernetes.

¿Cuál es la arquitectura de Kubernetes?

Kubernetes sigue una arquitectura cliente-servidor, con un nodo maestro que controla el clúster y nodos trabajadores que ejecutan las cargas de trabajo de las aplicaciones. Esto permite una comunicación y gestión eficaces de todo el sistema.


Austin Chia's photo
Author
Austin Chia
LinkedIn

Soy Austin, bloguero y escritor técnico con años de experiencia como científico de datos y analista de datos en el sector sanitario. Empecé mi andadura tecnológica con una formación en biología, y ahora ayudo a otros a hacer la misma transición a través de mi blog tecnológico. Mi pasión por la tecnología me ha llevado a escribir para decenas de empresas de SaaS, inspirando a otros y compartiendo mis experiencias.

Temas

Los mejores cursos de DataCamp

Programa

Ingeniero de datos en Python

40 horas hr
Adquiere habilidades demandadas para ingerir, limpiar y gestionar datos de forma eficaz, así como para programar y supervisar canalizaciones, lo que te diferenciará en el campo de la ingeniería de datos.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

Clasificación en machine learning: Introducción

Aprende sobre la clasificación en machine learning viendo qué es, cómo se utiliza y algunos ejemplos de algoritmos de clasificación.
Zoumana Keita 's photo

Zoumana Keita

14 min

blog

Contratos de datos desmitificados: Todo lo que necesitas saber

Lograr la escalabilidad en los sistemas de datos distribuidos y reducir los errores.
Mike Shakhomirov's photo

Mike Shakhomirov

11 min

blog

8 modelos de machine learning explicados en 20 minutos

Descubre todo lo que necesitas saber sobre los tipos de modelos de machine learning, incluyendo para qué se utilizan y ejemplos de cómo ponerlos en práctica.
Natassha Selvaraj's photo

Natassha Selvaraj

15 min

Clustering k-means

Tutorial

Introducción a k-Means Clustering con scikit-learn en Python

En este tutorial, aprenda a aplicar k-Means Clustering con scikit-learn en Python

Kevin Babitz

8 min

Tutorial

Tutorial de K-Means Clustering en R

Aprenda qué es k-means y descubra por qué es uno de los algoritmos de agrupación más utilizados en la ciencia de datos.
Eugenia Anello's photo

Eugenia Anello

8 min

Tutorial

Tutorial de Pyspark: Primeros pasos con Pyspark

Descubre qué es Pyspark y cómo se puede utilizar, con ejemplos.
Natassha Selvaraj's photo

Natassha Selvaraj

10 min

Ver másVer más