¿Qué es Kubernetes?
Puede encontrar la definición oficial de Kubernetes aquí (https://kubernetes.io/):
“Kubernetes (K8s) es un sistema de código abierto para automatizar la implementación, el escalado y la administración de aplicaciones contenedoras. Agrupa los contenedores que componen una aplicación en unidades lógicas para facilitar su administración y descubrimiento. Kubernetes se basa en 15 años de experiencia en la ejecución de cargas de trabajo de producción en Google, en combinación con las mejores ideas y prácticas de la comunidad.”
Estos son algunos hechos importantes sobre Kubernetes:
Es’un proyecto de código abierto Iniciado por Google
TI’es un producto maduro y estable
’S una herramienta de orquestación
Es’una plataforma que trata con los contenedores en un nivel superior
Kubernetes fue creado por un grupo de ingenieros en Google en el 2014, con un modelo de diseño y desarrollo influido por el sistema interno de Google’s, Borg. Kubernetes define un conjunto de objetos de creación que proporcionan de forma colectiva mecanismos que organizan aplicaciones contenedoras a través de un clúster distribuido de nodos, basándose en los recursos del sistema (CPU, memoria u otras métricas personalizadas). Kubernetes simplifica la complejidad de la administración de un grupo de contenedores al proporcionar API de REST para las funciones requeridas.
En términos sencillos, las tecnologías de contenedor como Docker le proporcionan la capacidad de empaquetar y distribuir aplicaciones contenedoras, mientras que un sistema de orquestación como Kubernetes permite implementar y administrar los contenedores a un nivel relativamente más alto. y de una manera mucho más fácil.
Muchos documentos de Kubernetes suelen abreviar la tecnología como K8S (o K-ocho caracteres-S) y la versión principal actual (en la redacción de este libro) es v 1.14.
El capítulo 1 declaró que el acoplador es una tecnología de contenedor predominante y madura, ¿por qué necesita Kubernetes? Técnicamente hablando, Kubernetes funciona a un nivel relativamente superior que los acopladores, así que ¿qué significa exactamente?
Bueno, al comparar Kubernetes con Docker, una analogía útil es comparar Python con el lenguaje C. C es lo suficientemente potente para compilar casi todo, incluido un conjunto de API y componentes fundamentales del sistema operativo, pero en la práctica probablemente preferirá escribir secuencias de comandos para automatizar tareas en su carga de trabajo, lo que significa que el uso de Python es mucho más que si se utiliza C. Con Python solo debe considerar qué módulo existente proporciona las funciones necesarias, importarlo en su aplicación y, a continuación, centrarse rápidamente en cómo usar la característica para llevar a cabo lo que necesita. Rara vez es necesario preocuparse de las llamadas API del sistema de bajo nivel y los detalles del hardware.
Una analogía de la red son los protocolos de Internet de TCP/IP. Cuando desarrolle una herramienta de transferencia de archivos como FTP, naturalmente, prefiere iniciar el trabajo de acuerdo con un socket TCP en lugar de con un socket sin procesar. Con el socket TCP se encuentra en la parte superior del protocolo TCP, lo que proporciona una base mucho más sólida que incluye todas las características de confiabilidad integradas, como detección de errores, control de flujo y congestión, retransmisión, etc. Lo que debe tener en cuenta es cómo entregar los datos desde un extremo y recibirlos en el otro extremo. Con un socket sin formato, se trabaja en el protocolo IP y en una capa más baja, por lo que es necesario tener en cuenta e implementar todas las características de confiabilidad antes de poder empezar a trabajar en las características de transferencia de archivos de la herramienta.
Por lo tanto, de nuevo a Kubernetes. Suponiendo que desea ejecutar varios contenedores en varios equipos, tendrá que hacer mucho trabajo si interactúa con el acoplador directamente. Las tareas siguientes deben estar, al menos mínima, en la lista de aspectos de los que hay que preocuparse:
Loging en equipos diferentes, y la creación de contenedores, a través de la red
Escalar hacia arriba o hacia abajo cuando se realicen cambios de demanda agregando o quitando contenedores
Mantener el almacenamiento de información coherente con varias instancias de una aplicación
Distribución de la carga entre los contenedores que se ejecutan en distintos nodos
Inicio de contenedores nuevos en equipos diferentes si algo no funciona
Comprobará rápidamente que realizar todas estas operaciones de forma manual con Docker será abrumador. Con las abstracciones de alto nivel y los objetos que las representan en la API Kubernetes, todas estas tareas serán mucho más sencillas.
Kubernetes no es la única herramienta de este tipo, Docker tiene su propia herramienta de orquestación denominada Swarm. Pero eso’es una explicación para otro libro. Este libro se centra en Kubernetes.