En este momento estás viendo ¿Qué es Kubernetes?, Aprendiendo desde cero
¿Qué es Kubernetes?, Aprendiendo desde cero

La contenedorización se ha convertido en un método preferido para empaquetar, implementar y actualizar aplicaciones web. Uno de los servicios más utilizados para ello, es Kubernetes.

¿Qué es Kubernetes?

Kubernetes es un sistema de gestión de contenedores desarrollado en la plataforma de Google.

Kubernetes ayuda a administrar aplicaciones en contenedores en varios tipos de entornos físicos, virtuales y en la nube.

Kubernetes es una herramienta de contenedor altamente flexible para entregar de manera consistente aplicaciones complejas que se ejecutan en clústeres de cientos a miles de servidores individuales.

A continuación, vamos a repasar algunos conceptos para principiantes alrededor de Kubernetes; pero antes veamos porque un desarrollador necesitar utilizar los tan mentados contenedores.

¿Por qué necesitas usar 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.

Con un contenedor, vas a poder generar ambientes aislados e incluir todo lo necesario para que la aplicación se ejecute; por lo que facilita al desarrollador la edición e implementación de sus propias aplicaciones.

¿Qué tareas realiza Kubernetes?

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

¿Por qué utilizar Kubernetes?

Con Kubernetes puedes controlar la asignación de recursos y la gestión del tráfico de las aplicaciones y microservicios a través de la nube.

Otras aplicaciones, pueden ser la simplificación de varios aspectos de las infraestructuras orientadas a servicios o el control de dónde y cuándo se ejecutan las aplicaciones en contenedores, también te ayuda a encontrar recursos y herramientas con los que vas a poder trabajar.

Características de Kubernetes

Estas son las características esenciales de Kubernetes:

  • Programación automatizada.
  • Capacidades de autocuración.
  • Implementaciones y reversiones automatizadas.
  • Balanceo de carga y escalado horizontal.
  • Ofrece consistencia del entorno para el desarrollo, las pruebas y la producción.
  • La infraestructura está débilmente acoplada a cada componente 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 auto escalable.
  • Puede crear una infraestructura predecible.

Conceptos básicos de Kubernetes

Ahora, aprenderemos algunos conceptos básicos importantes de Kubernetes.

Grupo de Kubernetes

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

Maestro de Kubernetes

El maestro es una colección de componentes que componen 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 de Kubernetes

Es un solo host que puede ejecutarse en una máquina física o virtual. Un nodo debe ejecutar kube-proxy, minikube y kubelet, que se consideran parte del clúster.

Espacio de nombres de Kubernetes

Es un entorno o clúster lógico. Es un método ampliamente utilizado que se utiliza para determinar el alcance del acceso o dividir un clúster.

Arquitectura de Kubernetes

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

Nodo maestro

El nodo principal es el primer y más importante componente 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 verificar la tolerancia a fallas.

El nodo principal tiene varios componentes como API Server, Controller Manager, Scheduler y ETCD. Veamos todos ellos.

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

Programador

El planificador programa las tareas para el nodo esclavo. Almacena la información de uso de recursos para cada nodo esclavo. Es 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 colocar la carga de trabajo en los recursos que están disponibles y aceptar la carga de trabajo.

Etcd

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 red y la actividad de reenvío de puertos.

Nodos trabajador / esclavo

Los nodos de trabajo son otro componente esencial que contiene todos los servicios necesarios para administrar la red entre los contenedores, 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 de Docker: El contenedor de Docker se ejecuta en cada uno de los nodos trabajadores, que ejecuta los pods configurados.
  • Kube-proxy: Kube-proxy actúa como un equilibrador de carga y proxy de red para realizar el servicio en un solo nodo trabajador.
  • Pods: Un pod es una combinación de uno o varios contenedores que se ejecutan lógicamente juntos en los nodos.

Otras terminologías de Kubernetes

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 replicación.

Despliegues

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

Conjuntos con estado

Es un control de vaina especializado que ofrece orden y singularidad. Se usa principalmente para tener un control detallado, que tiene una necesidad particular con respecto al orden de implementación, la red estable y los datos persistentes.

Conjuntos de demonios

Los conjuntos de demonios 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 pods es un método eficaz para implementar pods que le permite realizar mantenimiento y ofrece servicios para los nodos mismos.

Kubernetes contra Docker Swarm

Aquí hay diferencias importantes entre Kubernetes y Docker.

Parámetros Swarm de Docker Kubernetes
Escalada Sin ajuste de escala automático Escalado automático
Balanceo de carga ¿Equilibrio de carga automático? Configure manualmente su configuración de equilibrio de carga
Compartir el volumen de almacenamiento Comparte volúmenes de almacenamiento con cualquier otro contenedor Comparte volúmenes de almacenamiento entre varios contenedores dentro del mismo Pod
Uso de la herramienta de seguimiento y registro Utilice 3 rd herramienta de fiesta como ELK Proporcione una herramienta incorporada para el registro y la supervisión.
Instalación Fácil y rápido Complicado y lento
GUI GUI no disponible GUI está disponible
Escalabilidad La ampliación es más rápida que K8S, pero la fuerza del clúster no es tan sólida La ampliación es lenta en comparación con Swarm, pero garantiza un estado del clúster más sólido El equilibrio de carga requiere una configuración de servicio manual
Balanceo de carga Proporciona una técnica de equilibrio de carga incorporada. Programación de procesos para mantener los servicios mientras se actualizan
Actualizaciones y reversiones Volúmenes de datos Registro y supervisión Actualizaciones progresivas y seguimiento del estado del servicio. Solo se comparte con contenedores en las mismas herramientas de monitoreo y registro integradas en pod.

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 en las instalaciones, SAN y nubes públicas.
  • Se adhiere a los principios de infraestructura inmutable.
  • Kubernetes puede ejecutar bare metal local, OpenStack, nubes públicas de Google , Azure , AWS , etc.
  • Le ayuda a evitar problemas de bloqueo de proveedores, ya que puede usar cualquier API o servicio específico de proveedor, excepto donde Kubernetes proporciona una abstracción, por ejemplo, balanceador de carga y almacenamiento.
  • La contenedorización con kubernetes permite que el software de paquetes cumpla estos objetivos. Permitirá las aplicaciones que deben publicarse y actualizarse sin 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 las herramientas con las que quiere 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 eficaz.

Resumen final

  • El contenedor ayuda a una organización a realizar el mantenimiento y la actualización sin interrumpir los servicios.
  • Kubernetes es un ejemplo de un 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 funciones de programación y autorreparación automatizadas.
  • El clúster, el maestro, el nodo y el espacio de nombres son elementos 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, conjuntos de demonios son otros términos importantes que se utilizan en Kubernetes.
  • El enjambre de Docker no permite el escalado automático, mientras que Kubernetes permite el escalado automático.
  • El mayor inconveniente de Kubenetes es que su tablero no es muy útil y efectivo.