Kubernetes
Kubernetes o k8s es una plataforma portátil, extensible y de código abierto que se utiliza en la gestión de cargas de trabajo y servicios en contenedores, al tiempo que facilita la automatización y la configuración declarativa. Los clústeres de Kubernetes se ejecutan en nubes locales, privadas o públicas.
Kubernetes, que en griego significa «piloto o timonel», fue desarrollado anteriormente por Google y eliminó los métodos tradicionales de ejecución de aplicaciones en servidores físicos. Tras el fin de esta era, llegó la era de la virtualización (todavía muy utilizada), que permite a las organizaciones ejecutar aplicaciones de forma que se potencie la escalabilidad y el rendimiento. La contenedorización es casi similar a la virtualización, pero se considera ligera.
Funcionalidad de Kubernetes
- Orquestación de contenedores de múltiples hosts
- Gestión declarativa de servicios
- Escalado instantáneo de aplicaciones y recursos en contenedores
- Fácil ejecución de rollbacks y despliegue canario
- Equilibrio de carga y escalado horizontal
- Proporciona funcionalidad de autorreparación
- Control del consumo de recursos
- Control y actualizaciones y automatización del despliegue
Terminología importante de Kubernetes
Pods. Se refiere al objeto más pequeño de Kubernetes.
Clúster/Nodos. Máquinas de trabajo que ejecutan aplicaciones en contenedores.
Panel de Control. Interfaz que ayuda a los usuarios a desplegar, configurar y gestionar contenedores.
Kubelet. Agente que garantiza que cada contenedor se ejecuta en un pod.
Gestor de controladores. Componente que supervisa el estado del clúster y realiza/solicita los cambios necesarios para alcanzar los objetivos deseados.
Servidor API (Kube-apiserver). Componente del panel de control que expone la API de Kubernetes.
Kube-Proxy. Proxy de red que se ejecuta en cada nodo y es responsable de la implementación del concepto de servicio.
Carga de Trabajo. Aplicación que está activa en Kubernetes.
Cómo funciona
Un clúster (despliegue de Kubernetes en pleno funcionamiento) tiene dos componentes principales: las máquinas/nodos de computación y el panel de control. Cada máquina puede ser virtual o física y ejecuta pods, que incluyen nodos. (Consulte la sección de terminología para entender el concepto).
El panel de control es la mente de la operación y gestiona el clúster para lograr los estados deseados, incluyendo qué aplicaciones se ejecutan y los contenedores que se utilizarán en el proceso.
Kubernetes opera sobre sistemas operativos como Linux e interactúa con los pods de contenedores que se ejecutan en los nodos. El administrador se encarga de emitir comandos a través del panel de control, que decide automáticamente los nodos adecuados para la tarea en cuestión. El resultado es la asignación de recursos y pods en el nodo necesario para realizar la tarea solicitada.
Ventajas del uso de Kubernetes
- Eliminación de los riesgos asociados a la dependencia de un proveedor
- Cuenta con una comunidad amplia y activa
- Kubernetes es multiplataforma, ya que puede ejecutarse en nubes públicas, Bare metal, Open Stack y muchas otras.
- Los pods de servicio son fáciles de organizar
- Mejora la productividad
- Ofrece diversas opciones de almacenamiento
- Se adhiere a los principios de infraestructura inmutable
Desventajas
- La migración a Kubernetes puede ser complicada
- La elaboración de planos de seguridad eficaces es difícil cuando se utiliza Kubernetes
- Caro en comparación con sus alternativas
- El ecosistema de Kubernetes es complejo