Introducción
La implementación de contenedores ha transformado las prácticas establecidas de desarrollo de software. Eran necesarias nuevas herramientas y técnicas, por lo que Google desarrolló Kubernetes, un sistema de orquestación de contenedores de código abierto para escalar, implementar y administrar aplicaciones de forma automática.
Proporciona una interfaz API unificada que puede administrar incluso los sistemas más complejos, distribuidos en varios servidores y plataformas.
Descubra por qué Kubernetes es una herramienta indispensable para administrar e implementar contenedores.
¿Qué es la orquestación de contenedores?
Una herramienta de orquestación de contenedores , como Kubernetes, automatiza la gestión de contenedores en un entorno caótico y en constante cambio. Para comprender completamente su función, profundizaremos en la complejidad de los entornos de contenedores.
Contenedores son pequeños entornos virtuales con memoria individual, archivos de sistema y espacio de procesamiento. No necesitan sistemas operativos propios y son mucho más ligeras que las máquinas virtuales tradicionales . Su tamaño y autosuficiencia los hacen portátiles e infinitamente escalables en diferentes dispositivos y sistemas operativos.
Los desarrolladores ahora pueden diseñar aplicaciones como un conjunto de microservicios independientes más pequeños. Idealmente, un solo servicio solo debería realizar una sola función. Luego, estos microservicios se acoplan y se implementan rápida y fácilmente en un clúster de Kubernetes.
¿Cómo funciona Kubernetes?
Los contenedores están diseñados para ser lo más livianos posible. Como resultado, son frágiles y transitorios. En lugar de aumentar la durabilidad de un contenedor individual, Kubernetes utiliza la naturaleza inestable de un contenedor y convierte esa debilidad en un activo.
Kubernetes solo necesita un marco general de cómo le gustaría que se viera su clúster. Este marco suele ser un archivo de manifiesto básico que proporciona a Kubernetes mediante una herramienta de interfaz de línea de comandos.
La interfaz de línea de comandos predeterminada de Kubernetes se llama kubectl. . Kubectl se usa para administrar directamente los recursos del clúster y proporcionar instrucciones al servidor API de Kubernetes. Luego, el servidor API agrega y elimina automáticamente contenedores en su clúster para asegurarse de que el estado deseado definido y el estado real del clúster siempre coinciden.
Los elementos principales de un clúster de Kubernetes son el Master Node , Nodos trabajadores y vainas . Los componentes que toman decisiones globales sobre el clúster, como el servidor API, se encuentran en el nodo principal.
Nodo maestro de Kubernetes
Un Nodo es una máquina física o VM. El Master Node es la capa de orquestación de contenedores de un clúster. Los componentes del Master Node administran los Worker Nodes y asignan tareas individuales a cada uno. Es responsable de establecer y mantener la comunicación dentro del clúster y de equilibrar las cargas de trabajo.
Nodo maestro
Servidor API | El servidor API se comunica con todos los componentes dentro del clúster. |
Almacenamiento de valores-clave (etcd) | Un almacén de clave-valor distribuido ligero que se utiliza para acumular todos los datos del clúster. |
Controlador | Utiliza el servidor API para monitorear el estado del clúster. Intenta mover el estado real del clúster para que coincida con el estado deseado de su archivo de manifiesto. |
Programador | Programa pods recién creados en nodos trabajadores. Selecciona siempre los nodos con el menor tráfico para equilibrar la carga de trabajo. |
Kubelet | Un demonio que se ejecuta en cada nodo y responde a las solicitudes del maestro para crear, destruir y monitorear pods en esa máquina. |
Tiempo de ejecución del contenedor | Un tiempo de ejecución de contenedor recupera imágenes de un registro de imágenes de contenedor y arranca y detiene contenedores. Suele ser un software o complemento de terceros, como Docker. |
Proxy Kube | Un proxy de red que mantiene la comunicación de red con sus Pods desde dentro o fuera del clúster. |
Complementos (DNS, Web UI...) | Características adicionales que puede agregar a su clúster para ampliar ciertas funcionalidades. |
Cápsula | Una cápsula es el elemento más pequeño de programación en Kubernetes. Representa un 'envoltorio' para el contenedor con el código de la aplicación. Si necesita escalar su aplicación dentro de un clúster de Kubernetes, solo puede hacerlo agregando o eliminando pods. Un nodo puede albergar varios pods. |