Tutorial de Kubernetes para principiantes: conceptos básicos, características Architectura

Antes de comenzar este tutorial de Kubernetes, aprendamos:

¿Qué es kubernetes?

Kubernetes es un sistema de gestión de contenedores desarrollado en la plataforma de Google. Kubernetes ayuda a gestionar aplicaciones en contenedores en varios tipos de entornos físicos, virtuales y de nube. Google Kubernetes es una herramienta de contenedores muy flexible para entregar de forma constante aplicaciones complejas que se ejecutan en clústeres de cientos a miles de servidores individuales.

¿Por qué necesitas contenedores?

El usuario de Internet de hoy nunca acepta el tiempo de inactividad. Por lo tanto, los desarrolladores deben encontrar un método para realizar el mantenimiento y la actualización sin interrumpir sus servicios.

Por tanto contenedor, que son entornos aislados. Incluye todo lo necesario para que se ejecute la aplicación. Facilita que un desarrollador edite e implemente aplicaciones. Además, la contenedorización se ha convertido en un método preferido para empaquetar, implementar y actualizar aplicaciones web.

¿Qué tareas realiza Kubernetes?

Kubernetes es el kernel de Linux que se utiliza para sistemas distribuidos. Le ayuda a abstraer el hardware subyacente de los nodos (servidores) y ofrece una interfaz consistente para las aplicaciones que consumen el grupo compartido de recursos.

¿Por qué utilizar Kubernetes?

Kubernetes le ayuda a controlar la asignación de recursos y la gestión del tráfico para microservicios y aplicaciones en la nube. También ayuda a simplificar varios aspectos de las infraestructuras orientadas a servicios. Kubernetes le permite garantizar dónde y cuándo se ejecutan las aplicaciones en contenedores y le ayuda a encontrar recursos y herramientas con las que desea trabajar.

Características de los kubernetes

Estas son las características esenciales de Kubernetes:

  • Programación automatizada
  • Capacidades de autocuración
  • Implementaciones y reversiones automatizadas
  • Escalado horizontal y equilibrio de carga
  • Ofrece coherencia ambiental para desarrollo, pruebas y producción.
  • La infraestructura está débilmente acoplada a cada componente y puede actuar como una unidad separada.
  • Proporciona una mayor densidad de utilización de recursos.
  • Ofrece funciones listas para la empresa
  • Gestión centrada en aplicaciones
  • Infraestructura autoescalable
  • Puedes crear una infraestructura predecible

Conceptos básicos de Kubernetes

Ahora, en este tutorial de Kubernetes, aprenderemos algunos conceptos básicos importantes de Kubernetes:

  • Cluster

    Es una colección de hosts (servidores) que lo ayuda a agregar sus recursos disponibles. Eso incluye RAM, CPU, RAM, disco y sus dispositivos en un grupo utilizable.

  • Domina el

    El maestro es una colección de componentes que conforman el panel de control de Kubernetes. Estos componentes se utilizan para todas las decisiones del clúster. Incluye tanto la programación como la respuesta a los eventos del clúster.

  • Nodo

    Es un único host que es capaz de ejecutarse de forma física o máquina virtualUn nodo debe ejecutar kube-proxy, minikube y kubelet, que se consideran parte del clúster.

  • Espacio de nombres

    Es un clúster o entorno lógico. Es un método muy utilizado para delimitar el acceso o dividir un clúster.

Kubernetes Architectura

A continuación se muestra un diagrama detallado de la arquitectura de Kubernetes:

Kubernetes ArchiDiagrama de tecnología
Kubernetes ArchiDiagrama de tecnología

Nodo maestro

El nodo maestro es el primer componente y el más importante, responsable de la gestión del clúster de Kubernetes. Es el punto de entrada para todo tipo de tareas administrativas. Puede haber más de un nodo maestro en el clúster para comprobar la tolerancia a fallos.

El nodo maestro tiene varios componentes como API Server, Controller Manager, Scheduler y ETCD. Vamos a verlos todos.

Servidor API: El servidor API actúa como punto de entrada para todos los comandos REST utilizados para controlar el clúster.

Programador

El programador programa las tareas para el nodo esclavo. Almacena la información de uso de recursos para cada nodo esclavo. Es el responsable de distribuir la carga de trabajo.

También le ayuda a realizar un seguimiento de cómo se utiliza la carga de trabajo en los nodos del clúster. Le ayuda a asignar la carga de trabajo a los recursos que están disponibles y a aceptarla.

Etc.

Los componentes de etcd almacenan detalles de configuración y valores de Wright. Se comunica con la mayoría de los componentes para recibir comandos y trabajar. También gestiona las reglas de la red y la actividad de reenvío de puertos.

Nodos trabajador/esclavo

Los nodos trabajadores son otro componente esencial que contiene todos los servicios necesarios para gestionar la red entre los contenedores y comunicarse con el nodo maestro, lo que le permite asignar recursos a los contenedores programados.

  • Kubelet: obtiene la configuración de un Pod del servidor API y garantiza que los contenedores descritos estén en funcionamiento.
  • Contenedor acoplable: Docker El contenedor se ejecuta en cada uno de los nodos trabajadores, que ejecuta los pods configurados.
  • Kube-proxy: Kube-proxy actúa como equilibrador de carga y proxy de red para realizar el servicio en un único nodo trabajador.
  • Pods: un pod es una combinación de uno o varios contenedores que se ejecutan lógicamente juntos en nodos.

Otras terminologías clave

Controladores de replicación

Un controlador de replicación es un objeto que define una plantilla de pod. También controla los parámetros para escalar réplicas idénticas de Pod horizontalmente aumentando o disminuyendo el número de copias en ejecución.

Conjuntos de replicación

Los conjuntos de replicación son una interacción en el diseño del controlador de replicación con flexibilidad en la forma en que el controlador reconoce los pods que debe administrar. Reemplaza a los controladores de replicación debido a su mayor capacidad de selección de replicaciones.

Los despliegues

La implementación es una carga de trabajo común que se puede crear y administrar directamente. La implementación utiliza el conjunto de replicación como bloque de construcción que agrega la característica de gestión del ciclo de vida.

Conjuntos con estado

Es un control de pod especializado que ofrece orden y singularidad. Se utiliza principalmente para tener un control detallado, que es especialmente necesario en relación con el orden de implementación, la red estable y los datos persistentes.

Conjuntos de demonios

Los conjuntos de daemon son otra forma especializada de controlador de pod que ejecuta una copia de un pod en cada nodo del clúster. Este tipo de controlador de pod es un método eficaz para implementar pods que le permite realizar tareas de mantenimiento y ofrece servicios para los propios nodos.

Kubernetes contra Docker Swarm

Aquí hay diferencias importantes entre Kubernetes frente a Docker.

Parámetro Enjambre Docker Kubernetes
Descamación Sin escala automática Escalado automático
Balanceo de carga ¿Tiene equilibrio de carga automático? Configure manualmente sus ajustes de equilibrio de carga
Compartir volumen de almacenamiento Comparte volúmenes de almacenamiento con cualquier otro contenedor Comparte volúmenes de almacenamiento entre múltiples contenedores dentro del mismo Pod
Uso de herramienta de inicio de sesión y monitoreo. Utilice 3rd herramienta de fiesta como ELK Proporcione una herramienta incorporada para registro y monitoreo.
Instalación Fácil y rápido Complicado y requiere mucho tiempo
GUI GUI no disponible GUI está disponible
Escalabilidad La ampliación es más rápida que con K8S, pero la solidez del clúster no es tan sólida El escalamiento es lento en comparación con Swarm, pero garantiza un estado de clúster más fuerte. El equilibrio de carga requiere una configuración manual del servicio.
Balanceo de carga Proporciona una técnica de equilibrio de carga incorporada. Programación de procesos para mantener los servicios durante la actualización.
Actualizaciones y reversiones Registro y monitoreo de volúmenes de datos Actualizaciones progresivas y seguimiento de la salud del servicio. Solo se comparte con contenedores en el mismo Pod. Herramientas de registro y monitoreo incorporadas.

Ventajas de Kubernetes

  • Fácil organización del servicio con pods
  • Está desarrollado por Google, que aporta años de valiosa experiencia en la industria.
  • La comunidad más grande entre las herramientas de orquestación de contenedores
  • Ofrece una variedad de opciones de almacenamiento, incluidas las locales, SAN y nubes públicas.
  • Se adhiere a los principios de infraestructura inmutable.
  • Kubernetes puede ejecutar bare metal local, OpenStack y nubes públicas Google, Azure, AWS, etc.
  • Le ayuda a evitar problemas de bloqueo de proveedores, ya que puede utilizar cualquier API o servicio específico del proveedor, excepto cuando Kubernetes proporciona una abstracción, por ejemplo, balanceador de carga y almacenamiento.
  • La contenedorización mediante kubernetes permite que el software de paquetes cumpla estos objetivos. Permitirá que las aplicaciones que necesitan ser lanzadas y actualizadas sin ningún tiempo de inactividad.
  • Kubernetes le permite asegurarse de que esas aplicaciones en contenedores se ejecuten donde y cuando quiera y le ayuda a encontrar los recursos y herramientas con los que desea trabajar.

Desventajas de Kubernetes

  • El panel de Kubenetes no es tan útil como debería ser
  • Kubernetes es un poco complicado e innecesario en entornos donde todo el desarrollo se realiza localmente.
  • La seguridad no es muy efectiva.

Resum

  • Container ayuda a una organización a realizar mantenimiento y actualización sin interrumpir los servicios
  • Kubernetes es un ejemplo de sistema de gestión de contenedores desarrollado en la plataforma de Google.
  • La mayor ventaja de usar Kubernetes es que puede ejecutar OpenStack local, nubes públicas de Google, Azure, AWS, etc.
  • Kubernetes ofrece capacidades de programación y autorreparación automatizadas.
  • Cluster, master, nodo y espacio de nombres son conceptos básicos importantes de kubernetes
  • El nodo maestro y el nodo de trabajo son componentes importantes de la arquitectura de Kubernetes.
  • Controladores de replicación, conjuntos de replicación, implementaciones, conjuntos con estado y conjuntos de demonios son otros términos importantes utilizados en Kubernetes.
  • Docker swarm no permite el escalado automático, mientras que Kubernetes sí lo permite.
  • El mayor inconveniente de Kubenetes es que su panel no es muy útil ni efectivo.