GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Qué es Kubernetes? Guía completa

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

Nodo de trabajo de Kubernetes

Los componentes del nodo maestro controlan los nodos trabajadores . Hay varias instancias de nodos de trabajo, cada uno de los cuales realiza sus tareas asignadas. Estos nodos son las máquinas donde se implementan las cargas de trabajo en contenedores y los volúmenes de almacenamiento.

Nodo trabajador

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.

Cómo administrar clústeres de Kubernetes

Kubernetes tiene varios instrumentos que los usuarios o los componentes internos utilizan para identificar, administrar y manipular objetos dentro del clúster de Kubernetes.

Etiqueta

Etiquetas son pares clave/valor simples que se pueden asignar a los pods. Una vez asignados, los pods son más fáciles de identificar y controlar. Las etiquetas agrupan y organizan los pods en un subconjunto definido por el usuario. La capacidad de agrupar pods y otorgarles identificadores significativos mejora el control de un usuario sobre un clúster.

Anotaciones

Al igual que las etiquetas, las anotaciones también son pares clave/valor y se pueden usar para adjuntar metadatos a objetos. Sin embargo, Kubernetes no usa anotaciones para seleccionar e identificar objetos.

Las anotaciones almacenan información que no está destinada a ser utilizada por los recursos internos de Kubernetes. Podrían contener información de contacto del administrador, imagen general o información de compilación, ubicaciones de datos específicos o sugerencias para iniciar sesión. Con las anotaciones, esta información útil ya no necesita almacenarse en recursos externos, lo que aumenta el rendimiento.

Espacios de nombres en Kubernetes

Cada objeto en un clúster de Kubernetes tiene una ID única y un nombre que denota su tipo de recurso. Un espacio de nombres se utiliza para mantener separado un grupo de recursos. Cada nombre dentro de un espacio de nombres debe ser único para detener los problemas de colisión de nombres. No existen tales limitaciones cuando se usa el mismo nombre en diferentes espacios de nombres.

Esta característica distintiva le permite mantener instancias separadas del mismo objeto, con el mismo nombre, en un entorno distribuido.

Para enumerar los espacios de nombres existentes en un clúster, escriba el siguiente comando en su interfaz de línea de comandos:

kubectl get namespaces

Controladores de replicación

El concepto de microservicios significa implícitamente que se deben implementar y ejecutar varias instancias de cualquier servicio de manera simultánea. Controladores de replicación administrar la cantidad de réplicas para cualquier instancia dada de un pod. Al combinar los controladores de replicación con las etiquetas definidas por el usuario, puede administrar fácilmente la cantidad de pods en un clúster mediante el uso de la etiqueta adecuada.

Por ejemplo, podemos establecer el número de réplicas en nuestro archivo de configuración en cinco (5). Si solo hay tres (3) réplicas en ejecución en este momento, Kubernetes activará dos (2) más para que coincidan con nuestro estado deseado. Si se están ejecutando 10 réplicas, Kubernetes terminará cinco (5) de ellas.

Kubernetes trabaja continuamente para armonizar el número de réplicas con el número definido en su archivo de configuración.

Despliegue

A dimplementación es un mecanismo que presenta una plantilla que garantiza que los pods estén en funcionamiento, actualizados o revertidos según lo definido por el usuario. Una implementación puede exceder un solo pod y extenderse a través de varios pods.

Los controladores de replicación controlan el número de réplicas de un servicio. Los pods se agregan o eliminan de un clúster con regularidad. Durante este proceso, los pods a menudo se mueven por el clúster e incluso se implementan en diferentes nodos. Debido a este hecho, la dirección IP de un pod no es constante. El Servicio Kubernetes utiliza un selector de etiquetas para agrupar pods y abstraerlos con una única IP virtual utilizada para descubrir estos pods e interactuar con ellos.

¿Por qué necesita Kubernetes?

Uso eficiente de recursos

Las herramientas de orquestación de contenedores, como Kubernetes, conservan los recursos de manera más eficiente de lo que podría hacerlo un ser humano. Kubernetes supervisa el clúster y elige dónde lanzar sus contenedores en función de los recursos que se consumen actualmente en sus nodos.

Comunicación y sincronización de contenedores

Dado que una aplicación a menudo requiere más de un contenedor, Kubernetes puede implementar aplicaciones de varios contenedores y asegurarse de que todos los contenedores estén sincronizados y se comuniquen entre sí.

Kubernetes ofrece información sobre el estado de su aplicación. Puede proporcionar información y métricas vitales de sus contenedores y clústeres. Cuando una aplicación deja de funcionar, Kubernetes la recupera automáticamente girando otro contenedor con un tiempo de inactividad mínimo con el uso óptimo de los recursos del sistema.

Adaptarse eficientemente

Sin herramientas de orquestación, escalar sus aplicaciones se convertiría en un proceso lento. Las organizaciones ahora pueden adaptarse rápidamente a las necesidades del mercado agregando o eliminando contenedores según las cargas de trabajo momentáneas. Por ejemplo, los minoristas en línea pueden aumentar instantáneamente la capacidad de su aplicación durante el aumento de la demanda. En períodos de menor demanda, los administradores pueden reducir rápidamente la escala de la aplicación.

Cómo empezar con Kubernetes

Dado que Kubernetes es un sistema para configurar y coordinar contenedores, un requisito previo para usarlo es tener un motor de contenerización .

Hay muchas soluciones de contenedor de las cuales Docker es el más popular hoy en día. Otros proveedores de contenedores incluyen AWS, LXD , Contenedores Java , Contenedores Hyper-V y Contenedores de Windows Server .

Además de los contenedores, hay otros proyectos y soporte en los que se basa Kubernetes para brindar a sus usuarios la experiencia completa. Algunos de ellos son:

  • Docker o Atomic Registry (para el registro oficial)
  • Ansible (para automatización)
  • OpenvSwitch y enrutamiento perimetral inteligente (para redes)
  • LDAP, SELinux, RBAC y OAUTH con capas multiusuario (para la seguridad de Kubernetes)
  • Heapster, Kibana, Hawkular y Elastic (para telemetría)

Para principiantes que aún no tienen experiencia en la implementación de múltiples contenedores, Minikube es una gran manera de empezar. Minikube es un sistema para ejecutar un clúster de un solo nodo localmente y es excelente para aprender los conceptos básicos antes de pasar a Kubernetes.

Si desea obtener más información sobre Ansible y Kubernetes, consulte nuestro artículo sobre las diferencias entre Ansible y Kubernetes.


Ubuntu
  1. ¿Qué es Helm? Explicación de los gráficos Helm y Helm

  2. Cómo configurar un clúster de Kubernetes con Rancher

  3. Terraform vs Kubernetes:¿Cuáles son las diferencias?

  4. Qué es CentOS:una guía para principiantes

  5. Configurar el clúster de Kubernetes con Rancher

Guía completa de registro de Linux

Guía completa para principiantes sobre la implementación de clústeres de Kubernetes en CentOS (y otros Linux)

Una guía completa para instalar Tomcat en Linux

Ubuntu Firewall UFW:una guía completa

Comandos de directorio de Linux:una guía completa

Cronjob - La guía completa de Cronjobs

    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.