¿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.

Relacionado

Aprender Kubernetes con Google (+300 $ GRATIS de crédito para Google Cloud)

Google se encuentra constantemente actualizando la documentación enfocada en el aprendizaje, en este caso te presento la actualización creada alrededor de Kubernetes. Recuerda que puedes crear tu perfil dentro del sitio de Google, en donde puedes guardar los tutoriales que has comenzado a visualizar, seguir o realizar dentro del sitio global de Google. https://ciberninjas.com/nuevo-panel-devs-google/ Estos nuevos tutoriales de Google, son contenido enfocado a profesionales o personas ¡SEGUIR LEYENDO!

Aprender Kubernetes con VMWare

VMWare ha creado una pequeña academia en la que graban formación enfocada al uso de sus tecnologías. Entre ellas, se encuentra el uso de contenedores, Kubernetes o como crear aplicaciones nativas en la nube. Entre otros. https://ciberninjas.com/que-es-kubernetes/ Curso de Kubernetes Kubernetes es una plataforma que abarca muchos conceptos y áreas. Aprender sobre K8S puede ser difícil porque es muy amplio. En esta ruta, aprenderás a lo ¡SEGUIR LEYENDO!

Controladores de Amazon Web Services desde el contenedor de Kubernetes (ACK)

Los controladores de AWS para Kubernetes (ACK) son una nueva herramienta que permite administrar directamente los servicios de AWS desde Kubernetes. ACK simplifica la creación de aplicaciones de Kubernetes escalables y de alta disponibilidad que utilizan los servicios de Amazon Web Services. Hoy, ACK está disponible como una vista previa para los desarrolladores en GitHub. En esta publicación, vamos a dar una breve introducción a la ¡SEGUIR LEYENDO!

Curso Gratuito de Introducción a las Infraestructuras en la Nube (inglés) por La Fundación Linux

Aprende los fundamentos de la creación y gestión de tecnologías en la nube directamente de la Fundación Linux, el líder en el mundo del código abierto. Introducción al Curso de Introducción a las Tecnologías de Infraestructuras en la Nube ¿Eres nuevo en la nube y no estás seguro de por dónde empezar? Este curso introductorio impartido por los expertos en la nube de la Fundación Linux ¡SEGUIR LEYENDO!

Curso Gratuito de Introducción a Kubernetes (inglés) por La Fundación Linux

¿Quieres aprender Kubernetes? Obtenga una introducción en profundidad sobre este poderoso sistema para administrar aplicaciones en contenedores. Introducción al Curso de Introducción a Kubernetes ¿Su equipo está comenzando a usar Kubernetes para la orquestación de contenedores? ¿Necesita pautas sobre cómo comenzar a transformar su organización con Kubernetes y patrones nativos de la nube? ¿Le gustaría simplificar la orquestación de contenedores de software y encontrar una manera ¡SEGUIR LEYENDO!

Cursos de Amazon Web Services Gratis y en Español

Amazon Web Services (AWS) ES la plataforma en la nube ofrecida por Amazon.com Inc ( AMZN ) y que se ha convertido en un componente gigante de la cartera de negocios del gigante del comercio electrónico. En el primer trimestre de 2020, AWS generó un ingreso récord de 10 mil millones de dólares, lo que representa el 13.5% de los ingresos totales de Amazon. AWS es ¡SEGUIR LEYENDO!

Cursos de Google Cloud Gratis y en Español

Google Cloud consiste en un conjunto de recursos físicos, como computadoras y unidades de disco duro y recursos virtuales, como máquinas virtuales (VM) que se encuentran en los centros de datos de Google en todo el mundo, entre otras cosas. ? Cursos Gratis de Servicios en Nube / ?‍? Cursos Gratis de Tecnología Con los siguientes cursos vas a poder introducirte y aprender a utilizar la ¡SEGUIR LEYENDO!