Arquitectura de Kubernetes: todo lo que necesita saber en 2022

Publicado: 2021-01-05

Tabla de contenido

Acerca de Kubernetes

Kubernetes es una plataforma de código abierto con características como la maximización de recursos, el proceso de implementación y actualización automáticos, el escalado automático, la reparación automática, las reversiones y despliegues automáticos, y los organizadores de contenedores equilibran la carga y el descubrimiento de servicios, reinicio automático, ubicación automática, y autorreplicación, etc. Kubernetes no es solo un orquestador de contenedores; también es un sistema operativo para aplicaciones basadas en la nube.

Es como una plataforma para ejecutar una aplicación similar a otras aplicaciones que se ejecutan en Windows, MacOS o Linux con mayor flexibilidad. Reduce la carga de orquestación y permite a los desarrolladores centrarse por completo en los flujos de trabajo centrados en contenedores con el propósito de la operación de autoservicio. Los desarrolladores tienen la ventaja de una automatización de muy alto nivel en la implementación y la gestión de aplicaciones. Se puede integrar con cualquier entorno para mejorar las capacidades.

Leer: Salario de Kubernetes en India

Arquitectura de Kubernetes

La arquitectura de Kubernetes consta de capas: capas superiores e inferiores. En este individuo, las máquinas físicas o virtuales se reúnen en un clúster. Se utiliza una red compartida para la comunicación entre cada servidor. Kubernetes tiene un maestro (al menos) que actúa como un plano de control, un sistema de almacenamiento distribuido. Los múltiples nodos de clúster también se conocen como Kubelets.

  • El maestro de Kubernetes, el plano de control, programa las implementaciones, expone la API y administra el clúster general de Kubernetes.
  • El nodo del clúster ejecuta un tiempo de ejecución del contenedor, un agente para comunicarse con el maestro y otros componentes de monitoreo, registro, etc.

La arquitectura de Kubernetes y los componentes de Kubernetes se ilustran en la siguiente imagen.

Fuente

Echemos un vistazo a los componentes de Kubernetes .

Componentes de Kubernetes

Maestro: Plano de control de Kubernetes

El maestro mantiene los datos de cada objeto en Kubernetes. Como administra todo el clúster, por lo tanto, se le llama Maestro. Controla los estados de los objetos, mantiene la coincidencia del estado real del sistema con el estado requerido, responde a los cambios, etc.

Contiene los siguientes tres componentes importantes:

  • Servidor API de Kube : servidor API de Kubernetes
  • Kube- Scheduler: Programación de pods en nodos trabajadores
  • Kube- Controller: gestiona la replicación de pods

Si hay varios nodos principales, estos componentes se replican en todos los nodos principales.

La orquestación del ciclo de vida para varias aplicaciones que incluyen actualizaciones, escalado, etc. se realiza mediante API Server. Funciona como puerta de enlace para los clientes que no están dentro del clúster. El servidor API realiza la autenticación. También actúa como intermediario entre los pods y los nodos.

El Controlador realiza las siguientes tareas:

  • Ejecución de los bucles de control básicos
  • Realización de cambios para el estado de conducción hacia el estado requerido.
  • Observando el estado del clúster

También ofrece enrutamiento, servicios de almacenamiento, equilibrio de carga, servicios de red DNS, instancias de VM mediante la integración en nubes públicas. Los diferentes controladores que controlan el estado para el escalado automático, nodos, servicios y pods, espacios de nombres.

La programación de contenedores en todos los nodos la realiza Scheduler dentro del clúster; considerando diferentes limitaciones/garantías de recursos, o especificaciones de antiafinidad/afinidad.

La taxonomía del plano de control de Kubernetes se muestra a continuación:

Fuente

Nodos de clúster: Kubelets

Los kubelets son diferentes máquinas que se encargan de ejecutar contenedores. El maestro se encarga de la gestión de los nodos del clúster. También se le llama Minion. Los nodos del clúster se consideran el controlador principal de Kubernetes. Impulsa Docker, la capa de ejecución de contenedores.

Contiene los siguientes componentes:

  • Pod: Grupo de contenedores
  • Docker: tecnología basada en contenedores, espacio de usuario del sistema operativo
  • Kubelet: Agentes contenedores que se encargan de mantener el conjunto de pods.
  • Kube-proxy: enruta el tráfico que llega a un nodo desde el servicio.

La taxonomía del nodo del clúster de Kubernetes se muestra a continuación:

Fuente

Pods y servicios

Los pods son un concepto importante en Kubernetes con el que interactúan los desarrolladores. Representa el proceso en ejecución. Puede alojar pilas de aplicaciones que están integradas verticalmente, como las aplicaciones LAMP de WordPress. A continuación se presentan diferentes tipos de cápsulas:

Tipo de cápsula Funcionalidad
conjunto de réplicas Tipo de cápsula simple

Asegura el funcionamiento de pods fijos

Despliegue Una forma declarativa de gestión de pods a través de ReplicaSet

Se incluyen actualizaciones continuas y mecanismos de reversión.

StatefulSet Administra los pods que deberían persistir
diablillo Garantiza que cada nodo ejecute una instancia de pod.

Administra servicios de clúster, como el reenvío de registros y la supervisión del estado.

CronJob y trabajo Ejecuta trabajos de corta duración como programador

Un pod puede constar de varios contenedores y volúmenes externos. La taxonomía de pod se muestra en el siguiente diagrama:

Fuente

Los servicios hacen el seguimiento de Pods. Para definir asociaciones de pods y servicios, se utilizan selectores o etiquetas en lugar de asignaciones de direcciones IP. Esto simplifica la adición de módulos al servicio y el lanzamiento de nuevas versiones. Los siguientes son los diferentes tipos de servicios:

Tipo de servicio Funcionalidad
IP de clúster Tipo predeterminado; Expone el servicio en una IP interna y hace que el servicio sea accesible
Puerto de nodo Permite a los desarrolladores configurar sus propios balanceadores de carga
equilibrador de carga Automatiza su configuración
ExternalName Comúnmente utilizado para crear servicios dentro de Kubernetes.

El despliegue de nube típico utilizado es el tipo LoadBalancer. Kubernetes admite la abstracción de Ingress de alto nivel para resolver la complejidad. Los usuarios pueden mostrar diferentes servicios dentro de la misma dirección IP haciendo uso de los mismos balanceadores de carga.

Leer más: Openshift Vs Kubernetes: diferencia entre Openshift y Kubernetes

Redes de Kubernetes

En su mayoría , CNI (interfaz de red de contenedores) se utiliza para oscurecer la red básica. Calico, una opción totalmente enrutada, también se puede utilizar. En ambas opciones, la comunicación se realiza en una red de módulos de todo el clúster y está controlada por Calico o Flannel (proveedor de CNI). Los contenedores pueden comunicarse dentro de un pod a través del host local sin ninguna restricción. El movimiento de fuentes externas a servicios o pods a servicios se realiza a través de Kube-proxy.

Almacenamiento persistente

Un directorio que tiene algunos datos se denomina Volúmenes en Kubernetes. Los directorios son accesibles para los pods. Hay muchos tipos de almacenamiento en Kubernetes. Los contenedores dentro del pod pueden consumir cualquier almacenamiento. Los servicios de nube pública como NFS, Amazon Elastic Block Store, Iscsi, CephFS, etc. se utilizan para montar archivos y almacenar bloques en un pod. Los PV (PersistentVolumes) son objetos de todo el clúster que están vinculados a los recursos de almacenamiento existentes.

Dentro de un espacio de nombres, PersistentVolumeClaim inicia la solicitud de consumo de almacenamiento. Los diferentes estados de PV están disponibles, vinculados, liberados y fallidos. Las StorageClasses son la capa de abstracción. Diferencia la calidad de almacenamiento subyacente y separa varias características. El pod puede solicitar almacenamiento nuevo de forma dinámica con la ayuda de StorageClasses y PersistentVolumeClaim.

Fuente

Servicios de descubrimiento y publicación

Según la versión del clúster, Kubernetes depende de Kube-DNS o CoreDNS para descubrir los servicios. Estos servicios DNS integrados crean, actualizan y eliminan registros DNS. Ayuda a las aplicaciones a dirigirse a otros pods y servicios a través de un esquema de nombres consistente y simple.

Ejemplo ( Fuente )

Para un servicio de Kubernetes, el registro de DNS puede ser service.namespace.svc.cluster.local

Registro DNS, un pod puede tener: 10.32.0.125.namespace.pod.cluster.local

Fuente

Espacios de nombres

El clúster físico que contiene clústeres virtuales se denomina espacios de nombres. Proporciona un entorno virtual separado para múltiples usuarios junto con los respectivos derechos de acceso para los objetos de Kubernetes.

Etiquetas

Las etiquetas se utilizan para diferenciar los recursos presentes en un único espacio de nombres. Los atributos se definen por pares de clave o valor. Las etiquetas se utilizan para mapear estructuras de organización sobre objetos de Kubernetes. Puede describir el entorno, el estado de la versión, el nivel de la aplicación o la identificación de los clientes. Previene la vinculación dura de objetos.

Anotaciones

Las anotaciones se utilizan para agregar equipaje o metadatos arbitrarios no identificados a los objetos. Se utiliza como una herramienta de configuración declarativa.

Debe leer: Kubernetes vs. Docker: diferencias principales que debe conocer

Obtenga títulos de ingeniería de software de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.

Conclusión

La tecnología de Kubernetes se está desarrollando rápidamente y es una solución rentable para el futuro. Ofrece gran estabilidad a las aplicaciones.

Todos los conceptos básicos de la arquitectura de Kubernetes y los componentes de Kubernetes se explican en este artículo.

Si está interesado en obtener más información sobre Kubernetes, big data, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, más de 9 proyectos y asignaciones, estado de ex alumnos de IIIT-B, proyectos finales prácticos y asistencia laboral con las mejores empresas.

Prepárate para una carrera del futuro

Solicite ahora el programa Executive PG en Full Stack Development