¡Sé el primero en apoyar a Kuasar! La API iSulad Sandbox simplifica la cadena de llamadas y mejora las capacidades de gestión de la zona de pruebas.

Este artículo se comparte desde la comunidad de la nube de Huawei "¡ Sea el primero en apoyar a Kuasar!" La API iSulad Sandbox simplifica la cadena de llamadas y duplica la confiabilidad ", autor: Cloud Container Future.

La tecnología de aislamiento Sandbox es una tecnología que aísla eficazmente los procesos para que se ejecuten en un entorno independiente. Con el auge de la tecnología de contenedores, la tecnología de aislamiento de espacio aislado también se ha utilizado ampliamente en el campo nativo de la nube. iSulad es el primero en admitir Kuasar a través de la API Sandbox, proporcionando capacidades de administración de sandbox eficientes y estables.

Sin embargo, debido a la historia de la tecnología de contenedores, el concepto de sandboxing no recibe suficiente apoyo en los motores y tiempos de ejecución de contenedores. El estándar OCI [1] no define la administración de la zona de pruebas, por lo que el motor de contenedor y el tiempo de ejecución del contenedor solo pueden usar la administración de contenedores para administrar la zona de pruebas, lo que genera problemas de rendimiento y estabilidad. Para obtener más detalles, consulte la serie de artículos de Kuasar [2].

De hecho, el campo de los contenedores ha estado realizando investigaciones y exploraciones en profundidad sobre la introducción de interfaces de gestión de sandbox. Por ejemplo, la comunidad de Containerd integró funciones relacionadas con la API Sandbox en la línea principal en abril de 2022 [3], lo que optimizó la lógica de gestión interna del sandbox de Containerd. Desafortunadamente, sin embargo, todavía utiliza la interfaz estándar OCI para llamar al tiempo de ejecución del contenedor para administrar la zona de pruebas.

El 21 de abril de 2023, Huawei lanzó el tiempo de ejecución de múltiples entornos de pruebas Kuasar[4] en la Cumbre Nativa de la Nube Kubecon+CloudNativeCon Europe 2023, introduciendo la lógica de gestión de entornos de pruebas en el tiempo de ejecución del contenedor. Hasta ahora, Kuasar se ha convertido en el primer tiempo de ejecución de contenedor que admite Sandbox API. Es posible que los motores de contenedores administren directamente los entornos sandbox utilizando la API Sandbox.

iSulad[5] también es el primero en admitir Kuasar a través de la API Sandbox, proporcionando capacidades de gestión de sandbox eficientes y estables. openEuler 23.09 ha completado la integración de iSulad+Kuasar+StratoVirt, proporcionando a los usuarios una solución de contenedor seguro extremadamente rápida y liviana. Para obtener más detalles, consulte el segundo artículo de la serie Kuasar [6].

Introducción a la API de Sandbox

controlador de servicio { 

rpc Create(ControllerCreateRequest) devuelve (ControllerCreateResponse); 

rpc Start(ControllerStartRequest) devuelve (ControllerStartResponse); 

rpc Platform(ControllerPlatformRequest) devuelve (ControllerPlatformResponse); 

rpc Prepare(PrepareRequest) devuelve (PrepareResponse); 

rpc Purge(PurgeRequest) devuelve (PurgeResponse); 

rpc UpdateResources(UpdateResourcesRequest) devuelve (UpdateResourcesResponse); 

rpc Stop(ControllerStopRequest) devuelve (ControllerStopResponse); 

rpc Wait(ControllerWaitRequest) devuelve (ControllerWaitResponse); 

rpc Status(ControllerStatusRequest) devuelve (ControllerStatusResponse); 

rpc Shutdown(ControllerShutdownRequest) devuelve (ControllerShutdownResponse); 

}

La introducción de la API Sandbox resuelve el problema de larga data entre los motores de contenedores y los tiempos de ejecución de contenedores[2]:

  • Presentamos la semántica de Sandbox para mejorar la coherencia de la arquitectura nativa de la nube
  • Reduzca la redundancia del proceso de corrección, reduzca la sobrecarga de recursos y acelere el inicio
  • Acorte la cadena de llamadas y duplique la confiabilidad
  • Eliminar la redundancia del contenedor de pausa
  • La interfaz unificada de sandbox permite que el tiempo de ejecución del contenedor admita múltiples sandboxes

ciclo de vida y gestión

La API Sandbox [7] define cómo el motor del contenedor interactúa con el tiempo de ejecución del contenedor. El servicio de controlador define la interfaz de administración del ciclo de vida del sandbox, que incluye Crear, Iniciar, Detener y Esperar para salir. Consulta de estado (Estado), destrucción (Apagado), consulta de información de la plataforma (Plataforma), etc.

A través de la API Sandbox, el motor de contenedor puede administrar directamente el sandbox sin administrarlo indirectamente a través de la interfaz estándar OCI, lo que mejora el rendimiento y la estabilidad del motor de contenedor.

Administracion de recursos

La API de Sandbox también define la interfaz de administración de recursos de Sandbox, incluida la preparación de recursos (Prepare), la limpieza de recursos (Purge), la actualización de recursos (UpdateResources), etc. El motor de contenedores puede administrar los recursos del contenedor a través de estas interfaces, como preparar recursos antes de crear un contenedor, actualizar recursos durante la operación y limpiar recursos después de que sale el contenedor.

iSulad nueva arquitectura

cke_145.png

Figura 1. Diagrama comparativo de la arquitectura de iSulad

Después del lanzamiento de Kuasar, iSulad adoptó inmediatamente una nueva arquitectura para admitir la API Sandbox, lo que le permite administrar directamente el sandbox a través de Kuasar.

Para mantener la compatibilidad y estabilidad de las versiones existentes, iSulad solo ha reconstruido y actualizado la versión CRI V1, lo que permite a los usuarios utilizar la API Sandbox para administrar el sandbox. La versión CRI V1alpha continúa utilizando el estándar OCI para manejar las solicitudes de administración de sandbox.

Desacoplar sandboxes y contenedores

En la nueva arquitectura, iSulad introduce la semántica de Sandbox y agrega un nuevo módulo central Sandbox, lo que lo convierte en un ciudadano de primera clase del motor de contenedores y logra el desacoplamiento de la gestión de contenedores y la gestión de sandbox. Desde la perspectiva de la arquitectura nativa de la nube general, la gestión de la zona de pruebas entre los componentes de orquestación de contenedores, los motores de contenedores y los tiempos de ejecución de los contenedores se ha vuelto más fluida y eficiente, formando un vínculo completo de gestión de la zona de pruebas.

Tomemos como ejemplo la solución de contenedor seguro extremadamente rápida y liviana iSulad + Kuasar + StratoVirt. iSulad recibe solicitudes CRI de Kubernetes en dirección norte, crea objetos Sandbox para manejar llamadas relacionadas con PodSandbox y utiliza el módulo Executor para manejar solicitudes de contenedor CRI. En dirección sur, el módulo Controlador se usa para llamar al proceso Sandboxer de Kuasar a través de la API Sandbox para administrar el entorno sandbox, y el módulo Shim V2 en Runtime se usa para llamar al proceso Task de Kuasar para administrar los contenedores en la máquina virtual StratoVirt.

controlador de caja de arena

cke_146.png

Figura 2. Diagrama de clases del controlador Sandbox

La implementación de la API Sandbox permite a iSulad administrar el sandbox directamente a través del Controlador, por lo que no es necesario crear un contenedor de Pausa cuando el contenedor Kuasar se está ejecutando para que sea compatible con el estándar OCI, evitando la redundancia de contenedores de Pausa.

En la nueva arquitectura, el diseño del módulo Controlador tiene en cuenta plenamente la compatibilidad con la función de administración de sandbox original, es decir, permite a los usuarios crear contenedores ordinarios (contenedores de pausa) como sandboxes a través de los módulos Sandbox y Controller.

Como se muestra en la figura anterior, el módulo Controlador proporciona una interfaz de Controlador unificada para Sandbox, así como dos implementaciones diferentes: Controlador Sandboxer y Controlador Shim.

  • El controlador Sandboxer es una encapsulación de la API de Sandbox y reenvía la solicitud de administración de sandbox del usuario al proceso Sandboxer de Kuasar a través de la interfaz gRPC, lo que permite que Sandboxer ejecute la lógica de administración de sandbox subyacente.
  • Shim Controller es compatible con la interfaz de administración basada en contenedores original y reenvía la solicitud de administración de Sandbox al módulo Ejecutor para crear y administrar el entorno de pruebas basado en contenedores Pause. La implementación de Shim Controller permite a los usuarios continuar usando la interfaz estándar OCI para administrar el sandbox bajo la nueva arquitectura, a fin de que sea compatible con el negocio implementado original y garantice la continuidad de las funciones.

El diseño detallado de Sandbox y Controller se puede encontrar en el documento de diseño de la comunidad iSulad [8].

Simplifique la cadena de llamadas de contenedores

cke_147.png

Figura 3. Diagrama de flujo de inicio del contenedor

Después de admitir la API Sandbox, el proceso de gestión de contenedores de iSulad también ha sufrido algunos cambios. La figura anterior toma la solución iSulad+Kuasar+StratoVirt como ejemplo y muestra el proceso simplificado de iSulad desde el inicio del sandbox hasta el inicio del contenedor.

En la figura, Kuasar Task actúa como el proceso de inicio en la máquina virtual y también es el proceso de administración del contenedor en el entorno limitado de la máquina virtual. Proporciona la interfaz de administración de contenedores Task API a iSulad. La implementación de la interfaz Task API en la solución actual es similar, pero no idéntica, a Shim V2. De acuerdo con la especificación Shim V2, el motor de contenedor llamará a un binario Shim V2, creará un proceso Shim y devolverá la dirección Shim para administrar sandboxes, contenedores y recursos. Sin embargo, al llamar a la API Sandbox, iSulad ya no necesita administrar el sandbox a través del proceso Shim. Por el contrario, la interfaz de inicio de la API de Sandbox devolverá una dirección de tarea después de iniciar el entorno de pruebas, lo que permitirá a iSulad comunicarse directamente con el proceso de tareas de Kuasar en la máquina virtual para administrar el ciclo de vida del contenedor. Este diseño elimina el proceso Shim para reducir la sobrecarga de memoria del plano de gestión y acortar la cadena de llamadas, mejorando así el rendimiento y la estabilidad de toda la solución.

Resumir

La API Sandbox es el vínculo principal de la solución de contenedor extremadamente rápida, liviana y segura compuesta por los tres componentes iSulad, Kuasar y StratoVirt. A través de la API Sandbox, el motor de contenedor puede administrar directamente el sandbox sin administrarlo indirectamente a través de la interfaz estándar OCI, lo que mejora significativamente el rendimiento y la estabilidad del motor de contenedor. La introducción de Sandbox API también proporciona una interfaz estandarizada para la gestión de sandbox entre los motores de contenedores y los tiempos de ejecución de contenedores, lo que brinda nuevas posibilidades para el desarrollo del campo de contenedores. La implementación actual de la API Sandbox se ha integrado en la línea principal de la comunidad iSulad. Los usuarios pueden experimentar esta solución de contenedor completa, ultrarrápida, liviana y segura de desarrollo propio a través de openEuler 23.09. Para más detalles, consulte Kuasar serie de artículos [6].

La comunidad openEuler siempre se ha adherido a los conceptos de apertura, colaboración y beneficio mutuo, y da la bienvenida a más desarrolladores a participar en la construcción de iSulad, Kuasar y StratoVirt para promover conjuntamente la prosperidad y el desarrollo del campo de contenedores.

referencia

[1] Especificaciones de tiempo de ejecución de OCI: https://github.com/opencontainers/runtime-spec/tree/main 

[2] iSulad+Kuasar: una nueva generación de solución de tiempo de ejecución de contenedor unificado que reduce el consumo de recursos del plano de gestión en un 99 %: https://mp.weixin.qq.com/s/uxpsV2yLVobiuYeaAhA_Lg

[3] API de zona de pruebas: https://github.com/containerd/containerd/issues/4131 

[4] ¡Se presenta la tecnología Kuasar para el tiempo de ejecución de contenedores multi-sandbox! Mejora del 100 % en la velocidad de inicio, optimización del 99 % de la sobrecarga de memoria: https://mp.weixin.qq.com/s/4L7f8pAlt9KCoyDhkW0mUQ

[5] iSulad: https://gitee.com/openeuler/iSulad 

[6] openEuler 23.09 implementa contenedores seguros extremadamente rápidos y livianos basados ​​en Kuasar con un solo clic: https://mp.weixin.qq.com/s/oaK_uF_UGsucH7rczISg-g

[7] sandbox.proto: https://github.com/kuasar-io/rust-extensions/blob/main/crates/sandbox/src/protos/sandbox.proto 

[8] Documentación de diseño de iSulad Sandbox: https://gitee.com/openeuler/iSulad/tree/master/docs/design/detailed/Sandbox

Haga clic para seguir y conocer las nuevas tecnologías de Huawei Cloud lo antes posible ~

Alibaba Cloud sufrió un fallo grave y todos los productos se vieron afectados (restaurados). Tumblr enfrió el sistema operativo ruso Aurora OS 5.0. Se presentó la nueva interfaz de usuario Delphi 12 y C++ Builder 12, RAD Studio 12. Muchas empresas de Internet contratan urgentemente programadores de Hongmeng. Tiempo UNIX está a punto de entrar en la era de los 1.700 millones (ya entró). Meituan recluta tropas y planea desarrollar la aplicación del sistema Hongmeng. Amazon desarrolla un sistema operativo basado en Linux para deshacerse de la dependencia de Android de .NET 8 en Linux. El tamaño independiente es reducido en un 50%. Se lanza FFmpeg 6.1 "Heaviside"
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/10143257
Recomendado
Clasificación