Cómo utilizar Vcluster para implementar multiinquilino en Kubernetes

Kubernetes revoluciona la forma en que las organizaciones implementan y administran aplicaciones en contenedores, facilitando la orquestación y escalamiento de aplicaciones en clústeres. Sin embargo, ejecutar múltiples cargas de trabajo heterogéneas en un clúster de Kubernetes compartido plantea desafíos como contención de recursos, riesgos de seguridad, falta de personalización y administración compleja.

Hay varias formas de lograr aislamiento y multiinquilino en Kubernetes:

  • Espacio de nombres de Kubernetes: el espacio de nombres logra cierto aislamiento al dividir los recursos del clúster entre diferentes usuarios. Sin embargo, los espacios de nombres comparten la misma infraestructura física y recursos del kernel. Por tanto, el aislamiento y la personalización son limitados.
  • Distribuciones de Kubernetes: las distribuciones populares de Kubernetes, como Red Hat OpenShift y Rancher, admiten Vcluster. Utilizan de forma más eficaz las funciones nativas de Kubernetes, como espacios de nombres, RBAC y políticas de red. Otros beneficios incluyen una plataforma de control centralizada, plantillas de clúster preconfiguradas y una administración fácil de usar.
  • Espacios de nombres jerárquicos: en un clúster de Kubernetes tradicional, cada espacio de nombres es independiente. Esto significa que los usuarios y aplicaciones de un espacio de nombres no pueden acceder a los recursos de otro espacio de nombres a menos que tengan permisos explícitos. Los espacios de nombres jerárquicos resuelven este problema al permitir que se definan relaciones padre-hijo entre espacios de nombres. Esto significa que un usuario o aplicación que tiene permisos en el espacio de nombres principal tendrá automáticamente permisos en todos los espacios de nombres secundarios. Esto hace que sea mucho más fácil administrar permisos en múltiples espacios de nombres.
  • Proyecto Vcluster: El proyecto Vcluster resuelve estos puntos débiles al dividir un clúster físico de Kubernetes en múltiples clústeres independientes definidos por software. Vcluster permite a las organizaciones proporcionar entornos Kubernetes dedicados con recursos garantizados, políticas de seguridad y configuraciones personalizadas para equipos de desarrollo, aplicaciones y clientes. Este artículo analizará en profundidad Vcluster, sus capacidades, diferentes opciones de implementación, casos de uso y desafíos. También examinará las mejores prácticas para maximizar la utilización y simplificar la administración de Vcluster.

1. ¿Qué es Vcluster?

Vcluster es una herramienta de código abierto que permite a los usuarios crear y administrar clústeres virtuales de Kubernetes. Un clúster de Kubernetes virtual es un clúster de Kubernetes completamente funcional que se ejecuta sobre otro clúster de Kubernetes. Vcluster funciona creando un Vcluster en el espacio de nombres del clúster de Kubernetes subyacente. Vcluster tiene su propia plataforma de control, pero comparte la red y los nodos trabajadores del clúster subyacente. Esto convierte a Vcluster en una solución liviana que se puede implementar en cualquier clúster de Kubernetes.

Cuando los usuarios crean un Vcluster, pueden especificar la cantidad de nodos trabajadores que desean que tenga el Vcluster. Luego, la línea de comando de Vcluster creará el Vcluster e iniciará el pod de la plataforma de control en el nodo trabajador. Luego, la carga de trabajo se puede implementar en Vcluster mediante la CLI de kubectl.

Los usuarios pueden obtener más información sobre Vcluster en el sitio web de Vcluster.

2. Beneficios de usar Vcluster

(1) Aislamiento de recursos

Vcluster permite a los usuarios asignar una parte de los recursos de un clúster central (como CPU, memoria y almacenamiento) a un único Vcluster. Esto evita el problema del "vecino ruidoso" cuando varios equipos comparten el mismo clúster físico. Puede asegurarse de que las cargas de trabajo críticas obtengan los recursos que necesitan sin interrupción.

(2)control de acceso

Al utilizar Vcluster, se pueden aplicar políticas de acceso a nivel de Vcluster para garantizar que solo los usuarios autorizados tengan acceso. Por ejemplo, las cargas de trabajo sensibles, como las aplicaciones financieras, pueden ejecutarse en Vclusters aislados. Restringir el acceso es mucho más sencillo que las políticas a nivel de espacio de nombres.

(3) Personalización

Vcluster permite una amplia personalización según las necesidades de los equipos individuales y se puede personalizar con diferentes versiones de Kubernetes, políticas de red, reglas de entrada y cuotas de recursos. Los desarrolladores pueden modificar sus Vclusters sin afectar a otros.

(4) Multiinquilino

Las organizaciones a menudo deben proporcionar acceso a Kubernetes a múltiples equipos internos o clientes externos. Vcluster facilita la implementación de múltiples inquilinos al crear entornos independientes y aislados dentro del mismo clúster físico.

(5) Fácil de ampliar

Se pueden activar o desactivar Vclusters adicionales rápidamente para manejar cargas de trabajo dinámicas y necesidades de escalamiento. Se pueden aprovisionar nuevos entornos de desarrollo y prueba inmediatamente sin necesidad de escalar todo el clúster físico.

3. Método de aislamiento de carga de trabajo antes de Vcluster

Antes de que Vcluster surgiera como solución, las organizaciones habían aprovechado varias características nativas de Kubernetes para lograr cierto aislamiento de la carga de trabajo:

  • Espacios de nombres: los espacios de nombres aíslan los recursos del clúster entre diferentes equipos o aplicaciones. Proporcionan un aislamiento básico a través de cuotas de recursos y políticas de red. Sin embargo, no existe un aislamiento a nivel de hipervisor.
  • Políticas de red: las políticas de red detalladas restringen la comunicación entre pods y espacios de nombres. Esto crea una segmentación de la red entre cargas de trabajo. Sin embargo, es posible que aún se produzcan conflictos por recursos.
  • Contaminaciones y tolerancias: la aplicación de una contaminación a un nodo evita que se programen pods específicos en el nodo. La vaina debe tener una tolerancia que coincida con la contaminación. Esto limita los pods a nodos específicos.
  • Redes virtuales en la nube: en las nubes públicas, el uso de múltiples redes virtuales ayuda a aislar el tráfico del clúster de Kubernetes. Pero los pods del clúster aún pueden comunicarse.
  • Complementos de red de terceros: los complementos de CNI como Calico, Weave y Cilium pueden crear redes superpuestas y políticas de red detalladas para aislar el tráfico.
  • Controladores personalizados: el desarrollo de controladores Kubernetes personalizados permite el aislamiento programático de los recursos. Pero esto requiere mucha experiencia en programación.

4. Demostración de Vcluster

(1) Instalar la línea de comando de Vcluster

Requerir:

  • kubectl (verificar a través de la versión kubectl)
  • helm v3 (consulte la versión del helm)
  • Un contexto de kube funcional con acceso al clúster de Kubernetes (consultando el espacio de nombres a través de kubectl).

Descargue el binario de Vcluster CLI para máquinas Ubuntu basadas en arm64 usando el siguiente comando:

curl -L -o vcluster 
"https://github.com/loft-sh/vcluster/releases/latest/download/vcluster-linux-arm64" && sudo install -c -m 0755 cluste /usr/local/bin && rm -f vcluster
bash

Para confirmar que la CLI de Vcluster se instaló correctamente, realice la prueba de la siguiente manera:

vcluster --version
bash

Para instalar en otros servidores, puede consultar el siguiente enlace. Instale la línea de comando de Vcluster.

(2) Implementar Vcluster

Crear un Vclustermy-first-Vcluster

vcluster create my-first-vcluster
bash

(3) Conéctese a Vcluster

Ingrese el siguiente comando para conectarse a Vcluster:

vcluster connect my-first-vcluster
bash

Utilice el comando kubectl para obtener el espacio de nombres en el Vcluster conectado.

kubectl get namespaces
bash

5. Implementar la aplicación en Vcluster

Ahora, implemente una implementación de Nginx de muestra en Vcluster. Cree una implementación:

kubectl create namespace demo-nginx
kubectl create deployment nginx-deployment -n demo-nginx --image=nginx
bash

Esto aislará la aplicación en un espacio de nombres demo-nginx dentro de Vcluster.

Puede verificar si esta implementación de demostración crea pods en Vcluster:

kubectl get pods -n demo-nginx
bash

6. Verifique la implementación del clúster de host

Ahora que se ha confirmado la implementación en Vcluster, intente verificar la implementación en el clúster host.

Desconéctese de Vcluster.

vcluster disconnect
bash

Esto moverá la escena de kube nuevamente al clúster de host. Ahora verifique si hay una implementación disponible en el clúster de host.

kubectl get deployments -n vcluster-my-first-vcluster
bash

No se encontraron recursos en el espacio de nombres Vcluster-my-Vcluster. Esto se debe a que la implementación está aislada en un Vcluster al que no se puede acceder desde otros clústeres.

Ahora use el siguiente comando para verificar si se están ejecutando pods en todos los espacios de nombres.

kubectl get pods -n vcluster-my-first-vcluster
bash

Ahora puede ver el contenedor Nginx ejecutándose en el espacio de nombres de Vcluster.

7. Casos de uso de Vcluster

Vcluster admite varios casos de uso importantes al proporcionar un entorno de Kubernetes aislado y personalizable dentro de un único clúster físico. Algunos de estos se exploran con más detalle a continuación:

(1) Entorno de desarrollo y pruebas.

Asignar Vclusters dedicados a los equipos de desarrollo les permite un control total sobre la configuración sin afectar las cargas de trabajo de producción ni a otros desarrolladores. Los equipos de desarrollo pueden personalizar sus Vclusters con la versión de Kubernetes, políticas de red, cuotas de recursos y controles de acceso que deseen. Los equipos de desarrollo pueden iniciar y cerrar Vclusters rápidamente para probar diferentes configuraciones. Debido a que los Vclusters proporcionan recursos informáticos y de almacenamiento garantizados, los desarrolladores no necesitan competir ni afectan el rendimiento de las aplicaciones que se ejecutan en otros Vclusters.

(2) Aislamiento de aplicaciones de producción

Las aplicaciones empresariales como ERP, CRM y sistemas financieros requieren un rendimiento predecible, alta disponibilidad y seguridad estricta. Los Vclusters dedicados permiten que estas cargas de trabajo de producción no se vean afectadas por otras aplicaciones. A las aplicaciones de misión crítica se les puede asignar capacidad reservada para evitar la contención de recursos. Las políticas de red personalizadas garantizan el aislamiento. La agrupación en clústeres también permite un control de acceso granular basado en roles para satisfacer las necesidades de cumplimiento. En lugar de aprovisionar en exceso grandes clústeres para evitar interrupciones, Vcluster proporciona recursos garantizados a un costo menor.

(3) Multiinquilino

Los proveedores de servicios y las empresas con múltiples unidades de negocio a menudo necesitan proporcionar acceso a Kubernetes de forma segura a diferentes equipos internos o clientes externos. Vcluster simplifica el multiinquilino al crear un entorno de autoservicio separado para cada inquilino y aplicar restricciones de recursos y políticas de acceso adecuadas. Los proveedores pueden atender fácilmente a nuevos clientes adoptando Vclusters adicionales. Esto elimina el problema del "vecino ruidoso" y permite cargas de trabajo de alta densidad al empaquetar Vclusters en función del uso real, en lugar de la demanda máxima.

(4) Cumplimiento

Las industrias altamente reguladas, como las finanzas y la atención médica, tienen estrictos requisitos de seguridad y cumplimiento en materia de privacidad de datos, geolocalización y control de acceso. Los Vclusters dedicados con segmentación de red interna, control de acceso basado en roles y aislamiento de recursos facilitan el alojamiento seguro de cargas de trabajo compatibles con otras aplicaciones en el mismo clúster.

(5) Recursos temporales

Vcluster permite la puesta en marcha inmediata de entornos ad hoc de Kubernetes para manejar los siguientes casos de uso:

  • Actualizaciones del clúster de prueba : las nuevas versiones de Kubernetes se pueden implementar en entornos inferiores sin tiempo de inactividad ni impacto en la producción.
  • Evaluar nuevas aplicaciones : las aplicaciones se pueden implementar en Vclusters desechables en lugar de clústeres de desarrollo compartidos para evitar conflictos.
  • Picos de capacidad : el nuevo Vcluster proporciona capacidad en ráfagas para picos de tráfico en lugar de sobreaprovisionar todo el clúster.
  • Eventos especiales : Se pueden crear Vclusters temporalmente para seminarios, conferencias y otros eventos.

Estos Vclusters pueden simplemente eliminarse una vez que ya no sean necesarios sin dejar una huella persistente en el clúster.

(6) Integración de la carga de trabajo

A medida que las organizaciones amplían su huella de Kubernetes, existe la necesidad de consolidar múltiples clústeres en una infraestructura compartida sin interrumpir las aplicaciones existentes. La migración de aplicaciones a Vcluster proporciona aislamiento lógico y personalización, lo que les permite ejecutarse sin problemas con otras cargas de trabajo. Esto mejora la utilización y reduce los gastos operativos. Vcluster permite que la TI empresarial proporcione una plataforma Kubernetes consistente en toda la organización mientras mantiene el aislamiento. En resumen, Vcluster es una herramienta importante para optimizar los entornos de Kubernetes mediante el aislamiento, la personalización, la seguridad y la densidad de la carga de trabajo. Los casos de uso resaltan cómo pueden beneficiar una variedad de necesidades dentro de una organización, desde desarrolladores hasta operaciones y unidades de negocios.

8. Desafíos del uso de Vcluster

Si bien aporta importantes beneficios, existen algunos inconvenientes que hay que sopesar:

(1) Complejidad

La gestión de varios Vclusters (aunque sean más pequeños) implica una mayor sobrecarga operativa que un único clúster de Kubernetes grande. Otras tareas incluyen:

  • Aprovisione y configure múltiples plataformas de control.
  • Aplique políticas de seguridad y controles de acceso de manera consistente en todos los Vclusters.
  • Monitoreo y registro entre Vclusters.
  • Mantener los recursos y la capacidad designados para cada Vcluster.

Por ejemplo, los administradores de clústeres deben configurar y actualizar políticas RBAC en 20 Vclusters en lugar de en un solo clúster. Esto requiere más esfuerzo que la gestión centralizada de un único clúster. Las direcciones IP estáticas y los puertos en Kubernetes pueden provocar conflictos o errores.

(2) Asignación y gestión de recursos

Equilibrar el consumo de recursos y el rendimiento de un Vcluster puede resultar complicado, ya que pueden tener diferentes necesidades o expectativas.

Por ejemplo, es posible que un Vcluster deba ampliarse o reducirse según la carga de trabajo, o compartir recursos con otros Vclusters o espacios de nombres. Los tamaños de Vcluster con demanda máxima de aplicaciones pueden tener un exceso de capacidad no utilizada durante los períodos de menor actividad que permanece inactiva y no puede ser utilizada por otros Vclusters.

(3) Personalización limitada

La capacidad de personalizar Vclusters varía según la implementación. Los espacios de nombres proporcionan la menor flexibilidad, mientras que la API del clúster proporciona la mayor flexibilidad. Herramientas como la personalización del equilibrio OpenShift con sencillez. Por ejemplo, los espacios de nombres no pueden ejecutar diferentes versiones de Kubernetes o complementos de red. La API de clúster permite una personalización completa, pero es más compleja.

9. Conclusión

Vcluster permite a los usuarios de Kubernetes personalizar, aislar y escalar cargas de trabajo en clústeres físicos compartidos. Vcluster proporciona un fuerte aislamiento técnico mediante la asignación de políticas de acceso y recursos del plano de control dedicados. Para casos de uso como multiinquilino, Vcluster proporciona una gestión de Kubernetes más sencilla y segura.

Vcluster también se puede utilizar para reducir los costos generales de Kubernetes y se puede utilizar en entornos de prueba. Herramientas como OpenShift, Rancher y Kubernetes Cluster API facilitan la implementación y administración de Vcluster. A medida que aumenta la adopción, puede esperar más innovación en el espacio Vcluster para optimizar aún más las operaciones y maximizar la utilización. Si bien Vcluster tiene algunos inconvenientes, para muchas organizaciones los beneficios claramente superan la complejidad añadida.

10. Herramientas de desarrollo que respaldan la implementación de Kubernetes

El desarrollo low-code es una tendencia que ha llamado mucho la atención en el campo del desarrollo web en los últimos años. El desarrollo de código bajo se refiere al uso de un código de programación mínimo para desarrollar aplicaciones o lógica empresarial, lo que permite que incluso los principiantes sin experiencia en TI o programación creen rápidamente la funcionalidad deseada.

Aunque el desarrollo de código bajo aún no ha amenazado el papel de los desarrolladores tradicionales, es innegable que la tendencia se está moviendo hacia el desarrollo de código bajo (o sin código). Según la predicción de la empresa de investigación estadounidense Gartner, para 2024, alrededor del 65% de los proyectos de desarrollo de aplicaciones se desarrollarán a través de plataformas de código bajo. Los desarrolladores no pueden ignorar esta tendencia y se espera que la forma en que trabajan los desarrolladores cambie gradualmente en los próximos años.

Hay muchas plataformas de código bajo en el mercado. La plataforma de desarrollo JNPF es una plataforma de desarrollo de pila completa basada en SpringBoot + Vue3, que adopta microservicios, arquitectura de separación de front-end y back-end y se construye rápidamente en función del proceso visual. Herramientas de modelado, modelado de formularios y modelado de informes. Para aplicaciones comerciales, la plataforma se puede implementar localmente y también admite la implementación de K8S.

Dirección de experiencia de aplicación: https://www.jnpfsoft.com/?csdn , ¡puedes probarlo!

El modelo de desarrollo rápido de software basado en motor, además de las funciones anteriores, también está equipado con motores de funciones de visualización como motor de gráficos, motor de interfaz, motor de portal, motor de usuario de organización, etc., para realizar básicamente la construcción visual de la interfaz de usuario de la página. . Hay cientos de controles funcionales integrados y plantillas de uso que pueden satisfacer al máximo las necesidades personalizadas del usuario con simples operaciones de arrastrar y soltar. Dado que las funciones de la plataforma JNPF son relativamente completas, este artículo elige esta herramienta para expandirla, para que pueda ver de manera más intuitiva las ventajas del código bajo .

Supongo que te gusta

Origin blog.csdn.net/wangonik_l/article/details/132978387
Recomendado
Clasificación