Contenedores y orquestacion en oposiciones TI
Docker y Kubernetes son tecnologias de contenedorizacion y orquestacion que han revolucionado la forma en que se despliegan y gestionan las aplicaciones. Cada vez aparecen con mas frecuencia en los temarios de oposiciones TI, incluyendo las del SERGAS. En este articulo explicamos los conceptos fundamentales que necesitas dominar.
Que es Docker
Docker es una plataforma de contenedorizacion que permite empaquetar una aplicacion junto con todas sus dependencias (librerias, configuraciones, runtime) en una unidad estandarizada llamada contenedor. Esto garantiza que la aplicacion funcione de la misma manera en cualquier entorno.
Contenedor vs maquina virtual
Es importante distinguir ambos conceptos:
| Caracteristica | Maquina Virtual | Contenedor |
|---|---|---|
| Sistema operativo | SO completo propio | Comparte kernel del host |
| Tamano | GB (pesado) | MB (ligero) |
| Arranque | Minutos | Segundos |
| Aislamiento | Completo (hardware virtual) | A nivel de proceso (namespaces y cgroups) |
| Rendimiento | Overhead significativo | Casi nativo |
| Hipervisor | Necesario (VMware, Hyper-V, KVM) | No necesario (usa Docker Engine) |
Conceptos fundamentales de Docker
- Imagen (Image): Plantilla de solo lectura que contiene el sistema de archivos y la configuracion necesaria para ejecutar un contenedor. Se define mediante un archivo llamado Dockerfile.
- Contenedor (Container): Instancia en ejecucion de una imagen. Es efimero por naturaleza: cuando se destruye, se pierden los datos que no se hayan persistido.
- Dockerfile: Archivo de texto con las instrucciones para construir una imagen. Instrucciones comunes: FROM, RUN, COPY, EXPOSE, CMD, ENTRYPOINT.
- Docker Hub: Registro publico de imagenes Docker donde se pueden descargar imagenes oficiales (nginx, mysql, ubuntu, etc.).
- Volumen (Volume): Mecanismo para persistir datos fuera del ciclo de vida del contenedor.
- Red Docker (Network): Permite la comunicacion entre contenedores. Tipos: bridge, host, overlay, none.
Docker Compose
Docker Compose es una herramienta que permite definir y ejecutar aplicaciones multi-contenedor mediante un archivo YAML (docker-compose.yml). Es muy util para entornos de desarrollo y testing donde necesitas varios servicios (base de datos, aplicacion web, cache, etc.) trabajando juntos.
Que es Kubernetes
Kubernetes (K8s) es una plataforma de orquestacion de contenedores de codigo abierto, originalmente desarrollada por Google. Automatiza el despliegue, escalado y la gestion de aplicaciones contenedorizadas a gran escala.
Por que Kubernetes
Cuando tienes decenas o cientos de contenedores, gestionarlos manualmente es inviable. Kubernetes resuelve problemas como:
- Desplegar contenedores en multiples nodos de forma automatica.
- Escalar aplicaciones horizontal y verticalmente segun la demanda.
- Detectar fallos y reemplazar contenedores caidos automaticamente (self-healing).
- Balancear la carga entre multiples instancias de un servicio.
- Gestionar actualizaciones sin tiempo de inactividad (rolling updates).
Arquitectura de Kubernetes
Un cluster de Kubernetes se compone de:
Plano de control (Control Plane)
- kube-apiserver: Punto de entrada para todas las operaciones del cluster. Expone la API REST de Kubernetes.
- etcd: Base de datos clave-valor distribuida que almacena toda la configuracion y el estado del cluster.
- kube-scheduler: Decide en que nodo se ejecutara cada pod, basandose en recursos disponibles, restricciones y afinidades.
- kube-controller-manager: Ejecuta los controladores que gestionan el estado deseado del cluster (ReplicaSet controller, Node controller, etc.).
Nodos de trabajo (Worker Nodes)
- kubelet: Agente que se ejecuta en cada nodo y se asegura de que los contenedores de los pods estan funcionando correctamente.
- kube-proxy: Gestiona las reglas de red en cada nodo para permitir la comunicacion con los pods.
- Container Runtime: Software que ejecuta los contenedores (containerd, CRI-O).
Objetos fundamentales de Kubernetes
- Pod: La unidad minima de despliegue. Puede contener uno o mas contenedores que comparten red y almacenamiento.
- ReplicaSet: Asegura que un numero determinado de replicas de un pod estan ejecutandose en todo momento.
- Deployment: Describe el estado deseado de una aplicacion y gestiona los ReplicaSets. Permite rolling updates y rollbacks.
- Service: Abstraccion que expone un conjunto de pods como un servicio de red. Tipos: ClusterIP, NodePort, LoadBalancer.
- Namespace: Agrupacion logica de recursos dentro del cluster para separar entornos o equipos.
- ConfigMap y Secret: Permiten separar la configuracion del codigo de la aplicacion.
- Ingress: Gestiona el acceso HTTP/HTTPS externo a los servicios del cluster.
Aplicacion en entornos hospitalarios
En el SERGAS, las tecnologias de contenedorizacion se utilizan cada vez mas para:
- Desplegar aplicaciones de gestion hospitalaria de forma estandarizada.
- Crear entornos de desarrollo y pruebas rapidamente.
- Escalar servicios de telemedicina segun la demanda.
- Gestionar microservicios que integran sistemas como HL7, FHIR y DICOM.
Preguntas tipicas en oposiciones
Las preguntas de Docker y Kubernetes en oposiciones suelen ser conceptuales:
- Diferencias entre contenedor y maquina virtual.
- Que es un pod y que contiene.
- Funcion de etcd, kubelet y kube-proxy.
- Tipos de servicio en Kubernetes.
- Que es un Dockerfile y que instrucciones basicas contiene.
Para preparar estos temas con tests especificos, registrate gratis en oposergas.com y accede a nuestro banco de preguntas de sistemas e infraestructura TI.