We couldn't find a match for given <KEYWORD>, please try again.

¿Qué es la arquitectura de Kubernetes?

Kubernetes es una arquitectura que ofrece un mecanismo poco vinculado para la detección de servicios en un clúster. Un clúster de Kubernetes tiene uno o más planos de control y uno o más nodos informáticos. En general, el plano de control es responsable de gestionar todo el clúster, exponer la interfaz del programa de aplicaciones (API) y programar el inicio y el apagado de los nodos informáticos en función de la configuración deseada. Cada uno de los nodos informáticos ejecuta un entorno de ejecución de contenedores como Docker junto con un agente (kubelet) que se comunica con el plano de control. Cada nodo puede ser servidores bare metal o máquinas virtuales locales o basadas en la nube.

vSphere with Tanzu: Introducción para los administradores de vSphere

Motivos para elegir la virtualización de VMware para Kubernetes y contenedores

¿Cuáles son los componentes de la arquitectura de Kubernetes?

Entre los principales componentes de un clúster de Kubernetes se incluyen los siguientes:

Nodos: son máquinas virtuales o servidores físicos que alojan aplicaciones contenedorizadas. Cada nodo de un clúster puede ejecutar una o más instancias de aplicaciones. Puede haber tan solo un nodo; sin embargo, un clúster de Kubernetes típico tendrá varios nodos (y son frecuentes las implementaciones con cientos de nodos).

Registro de imágenes: las imágenes de contenedor se mantienen en el registro y el plano de control las transfiere a los nodos para su ejecución en pods de contenedores.

Pods: en ellos se ejecutan las aplicaciones contenedorizadas. Pueden incluir uno o más contenedores y son la unidad de implementación más pequeña para las aplicaciones en un clúster de Kubernetes.

¿Qué es la arquitectura del plano de control de Kubernetes?

Un plano de control de Kubernetes es el plano de control de un clúster de Kubernetes. Entre sus componentes se encuentran los siguientes:

  • kube-apiserver: como su nombre indica, el servidor de API expone la API de Kubernetes, que es la central de comunicaciones. Las comunicaciones externas a través de la interfaz de línea de comandos (CLI) u otras interfaces de usuario pasan a kube-apiserver, y todas las comunicaciones de los planos de control al nodo también pasan por el servidor de API.
  • etcd: es el almacén de claves-valores donde se almacenan todos los datos relacionados con el clúster. etcd ofrece una alta disponibilidad y coherencia, ya que todos los accesos a este almacén se realizan a través del servidor de API. La información almacenada en etcd suele estar formateada en lenguaje «YAML Ain’t Markup Language» (YAML) legible. Tal como su propio nombre indica, no se trata de un lenguaje de marcado.
  • kube-scheduler: cuando se crea un nuevo pod, este componente lo asigna a un nodo para su ejecución en función de los requisitos de recursos, las políticas y las especificaciones de afinidad relacionadas con la geolocalización y la interferencia con otras cargas de trabajo.
  • kube-controller-manager: aunque un clúster de Kubernetes tiene varias funciones de controladora, todas están compiladas en un único archivo binario conocido como kube-controller-manager.

Algunas de las funciones de la controladora incluidas en este proceso son las siguientes:

  • Controladora de replicaciones: garantiza que exista el número correcto de pods para cada pod replicado que se ejecuta en el clúster.
  • Controladora de nodos: supervisa el estado de cada nodo y notifica al clúster cuando los nodos se conectan o dejan de responder.
  • Controladora de puntos de acceso: conecta los pods y los servicios para rellenar el objeto de los puntos de acceso.
  • Controladora de cuentas y códigos de servicio: asigna códigos de acceso a la API y cuentas predeterminadas a nuevos espacios de nombres en el clúster.
  • cloud-controller-manager: si el clúster está basado total o parcialmente en la nube, cloud-controller-manager vincula el clúster a la API del proveedor de nube. Solo se ejecutarán los controles específicos del proveedor de nube. cloud-controller-manager no existe en los clústeres que son completamente locales. Se puede ejecutar más de una instancia de cloud-controller-manager en un clúster para la tolerancia a fallos o para mejorar el rendimiento general de la nube.

Entre los elementos de cloud-controller-manager se incluyen los siguientes:

  • Controladora de nodos: determina el estado de un nodo basado en la nube que ha dejado de responder; es decir, si se ha eliminado.
  • Controladora de rutas: establece rutas en la infraestructura del proveedor de nube.
  • Controladora de servicios: gestiona los balanceadores de carga del proveedor de nube.

¿Qué es la arquitectura de nodos de Kubernetes?

Los nodos son las máquinas (ya sean máquinas virtuales o servidores físicos) donde se ejecutan los pods de Kubernetes. Entre los componentes de los nodos se incluyen los siguientes:

kubelet: cada nodo tiene un agente denominado kubelet. Garantiza que el contenedor descrito en PodSpecs funcione correctamente.

kube-proxy: se trata de un proxy de red existente en cada nodo que mantiene los nodos de red y permite la comunicación entre los pods y las sesiones de red, ya sea dentro o fuera del clúster, utilizando el filtrado de paquetes del sistema operativo si está disponible.

container runtime: es el software responsable de ejecutar las aplicaciones contenedorizadas. Aunque Docker es el más popular, Kubernetes admite cualquier entorno de ejecución que se adhiera a su interfaz de ejecución de contenedores (CRI).

¿Cuáles son los otros componentes de la infraestructura de Kubernetes?

Pods: al encapsular uno o más contenedores de aplicaciones, los pods son la unidad de ejecución más básica de una aplicación de Kubernetes. Cada pod contiene el código y los recursos de almacenamiento necesarios para la ejecución, y tiene su propia dirección IP. Los pods también incluyen opciones de configuración. Por lo general, un pod contiene un solo contenedor o varios contenedores que están vinculados a una aplicación o función empresarial y que comparten un conjunto de recursos y datos.

Implementaciones: se tratan de un método de distribuir pods de aplicaciones contenedorizadas. Un estado deseado descrito en una implementación hará que las controladoras cambien el estado real del clúster para lograr ese estado de manera ordenada. Obtenga más información sobre las implementaciones de Kubernetes.

ReplicaSet: garantiza que se ejecute un número específico de pods idénticos en un momento específico.

DNS de clúster: proporciona los registros DNS necesarios para utilizar los servicios de Kubernetes.

Monitor de recursos de contenedores: extrae y registra los parámetros de los contenedores en una base de datos central.

¿Cuáles son las prácticas recomendadas y los principios de diseño de la arquitectura de Kubernetes?

Las prácticas recomendadas de Gartner para contenedores sugieren una estrategia de plataforma que tiene en cuenta la seguridad, el control, la supervisión, el almacenamiento, la red, la gestión del ciclo de vida de los contenedores y la coordinación, como Kubernetes.

Estas son algunas de las prácticas recomendadas para la arquitectura de clústeres de Kubernetes:

  • Asegúrese de haber actualizado a la versión más reciente de Kubernetes (1.18 en el momento de escribir estas líneas).
  • Invierta desde el principio en formación para los equipos de desarrollo y operaciones.
  • Establezca estrategias de control en toda la empresa. Asegúrese de que las herramientas y los proveedores vayan en la misma línea y estén integrados con la coordinación de Kubernetes.
  • Mejore la seguridad integrando los procesos de análisis de imágenes como parte del proceso de integración y distribución continuas (CI/CD), y lleve a cabo análisis durante las fases de creación y ejecución. El código abierto extraído de un repositorio de Github siempre debe considerarse sospechoso.
  • Adopte el control de acceso basado en funciones (RBAC) en todo el clúster. Los modelos de privilegios mínimos y confianza cero deberían ser la norma.
  • Proteja aún más los contenedores utilizando solo usuarios no raíz y haciendo que el sistema de archivos sea de solo lectura.
  • Evite el uso de valores predeterminados, ya que los modelos declarativos sencillos son menos propensos a errores y demuestran la intención con mayor claridad.
  • Tenga cuidado al utilizar imágenes básicas de Docker Hub, que pueden contener programas maliciosos o código innecesario. Empiece con código limpio y sencillo, y cree paquetes a partir de ahí. Las imágenes pequeñas se compilan más rápido y ocupan menos espacio en el disco, y las imágenes extraídas también son más rápidas.
  • Simplifique los contenedores. Un proceso por contenedor permitirá al coordinador informar de si el estado del proceso es o no bueno.
  • En caso de duda, que falle. Kubernetes reiniciará cualquier contenedor fallido; no lo haga usted.
  • Dé tantos detalles como sea posible. Las etiquetas descriptivas ayudan a los desarrolladores actuales y serán muy valiosas para los que sigan sus pasos.
  • No sea demasiado detallado con los microservicios, en cambio. No es necesario que todas las funciones de un componente de código lógico tengan su propio microservicio.
  • Recurra a la automatización siempre que tenga sentido hacerlo. La automatización del flujo CI/CD le permite evitar por completo las implementaciones manuales de Kubernetes.
  • Utilice livenessProbe y readinessProbe para ayudar a gestionar los ciclos de vida de los pods. De lo contrario, es posible que la actividad de los pods finalice durante la inicialización o que empiecen a recibir solicitudes de los usuarios antes de que estén listos.

La arquitectura de Kubernetes es sencilla e intuitiva. La poca vinculación entre el plano de control y el nodo permite una flexibilidad casi infinita y la escalabilidad horizontal de las aplicaciones de forma prácticamente instantánea para satisfacer las necesidades en constante cambio, migrar usuarios a nuevas compilaciones y admitir la migración de nodos locales a nodos basados en la nube o entre varias nubes para aprovechar las características deseadas de cada proveedor de nube.

Productos y soluciones relacionados

Modernización de aplicaciones con Kubernetes

Ejecute en paralelo sus aplicaciones tradicionales y modernas.

VMware Tanzu Kubernetes Grid

Optimice las operaciones en la infraestructura multi-cloud.

Horizon Cloud on Microsoft Azure

Obtenga una plataforma nativa de nube para escritorios virtuales.