Creación y eliminación de cápsulas de despliegue posterior sobre la base de la solicitud de servicio

Tenemos la aplicación .Net que tiene que ser implementada en el clúster K8. Utilizamos un operador basado en Golang que se despliega con una cápsula (primera cápsula) y inicia la solicitud de servicio.

Tenemos el requisito de iniciar nuevas cápsulas que no sean la primera cápsula (que se creó durante el despliegue) basado en solicitudes. Esas solicitudes de servicio comienzan por su cuenta. Llamemos a estos pods P1, P2, P3 y Pn. Estas nuevas cápsulas no son réplicas, pero son servicios individuales con su propia configuración.

Así que estoy planeando construir un nuevo operador (segundo operador) que comience a trabajar después de la implementación del primer operador y creará nuevas cápsulas durante el tiempo de ejecución. Pero estoy atrapado en la lógica para lograr esto. ¿Puede alguien darme una idea para lograr esto?

Pregunta hecha hace 3 años, 5 meses, 6 días - Por debugdragon


3 Respuestas:

  • Creando despliegues K8s dinámicamente, por ejemplo, activados por llamadas de servicio. es nada que K8s soporta fuera de la caja.

    Usted tendrá que venir con una aplicación que tiene derechos RBAC extensos, así como los medios para store K8s configuración y desplegar esa configuración bajo demanda, por ejemplo, una vez que se llamó un punto final REST.

    Puesto que este es un requisito que aparece regularmente, he creado un proyecto de código abierto Eso muestra cómo se puede hacer. Por favor, siéntete libre de usar esto como inspiración o directamente.

    Respondida el Dec 16, 2020 a las 13:33 - por codecrusaderx

    Votos positivos: 0 | Votos negativos: 0

  • Para lograr la creación y eliminación de nuevas cápsulas (Pods) basadas en solicitudes recibidas por el segundo operador en un clúster Kubernetes, puedes seguir los siguientes pasos:

    • Crear el segundo operador en Golang:
    - Debes desarrollar un nuevo controlador personalizado en Golang que esté configurado para observar los eventos de creación de solicitudes de servicio para iniciar la creación de nuevas cápsulas.
    • Usar la biblioteca cliente de Kubernetes en Golang:
    - Utiliza la biblioteca cliente oficial de Kubernetes en Golang para interactuar con el clúster Kubernetes y crear/eliminar recursos como pods.
    • Lógica para crear nuevas cápsulas:
    - Cuando el segundo operador detecta una solicitud de servicio, debe ejecutar la lógica para crear un nuevo pod (P2, P3, Pn) con la configuración requerida. Puedes basarte en el código del primer operador o definir una lógica personalizada para la creación de estos pods adicionales.
    • Gestión de pods adicionales:
    - También debes implementar la lógica necesaria para monitorear y gestionar la terminación de los pods adicionales según los requisitos o eventos específicos. Algunas consideraciones adicionales a tener en cuenta:
    • Asegúrate de que el segundo operador tenga los permisos necesarios para crear y eliminar recursos en el clúster Kubernetes.
    • Implementa manejo de errores y recuperación adecuada para situaciones inesperadas.
    • Considera cómo gestionar la comunicación entre los diferentes pods que se crean dinámicamente para que puedan interactuar entre sí según sea necesario.

    Recuerda que el desarrollo de operadores y controladores en Kubernetes puede ser complejo, por lo que es recomendable investigar y comprender a fondo los conceptos de Operadores de Kubernetes y la API del cliente de Kubernetes en Golang antes de comenzar a implementar este segundo operador.

    Respondida el Dec 17, 2020 a las 13:31 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Crear y eliminar cápsulas de despliegue posterior basadas en solicitudes de servicio

    Requisitos:

    Aplicación .NET desplegada en un clúster K8 Operador basado en Golang que maneja el despliegue inicial y el inicio de la solicitud de servicio Un segundo operador que creará cápsulas adicionales bajo demanda

    Solución:

    1. Implementar un controlador de eventos:

    Crea un controlador de eventos en el segundo operador que escuchará los eventos de solicitud de servicio. El controlador de eventos debe estar implementado para reaccionar a eventos de creación, actualización y eliminación de solicitudes de servicio.

    2. Recuperar la configuración de la solicitud de servicio:

    Cuando se crea una solicitud de servicio, el controlador de eventos debe recuperar la configuración de la solicitud de servicio de la API de Kubernetes. La configuración incluirá información sobre la nueva cápsula que debe crearse, como la imagen, los argumentos, las variables de entorno, etc.

    3. Crear una cápsula:

    Basado en la configuración de la solicitud de servicio, el controlador de eventos debe crear una nueva cápsula utilizando la API de Kubernetes. La nueva cápsula debe tener un nombre único y una configuración que coincida con la solicitud de servicio.

    4. Eliminar cápsulas:

    Cuando se elimina una solicitud de servicio, el controlador de eventos debe eliminar la cápsula correspondiente. Esto se puede lograr recuperando la cápsula por su nombre y eliminándola utilizando la API de Kubernetes.

    5. Actualizar cápsulas:

    Si se actualiza una solicitud de servicio, el controlador de eventos debe actualizar la cápsula correspondiente con la nueva configuración. Esto implica recuperar la cápsula, modificar su configuración según la solicitud de servicio actualizada y actualizarla utilizando la API de Kubernetes.

    Flujo de trabajo:

    • El primer operador despliega la aplicación y crea la primera cápsula.
    • Se inicia una solicitud de servicio.
    • El segundo operador recibe el evento de solicitud de servicio y crea una nueva cápsula basada en la configuración de la solicitud de servicio.
    • La nueva cápsula inicia el servicio individual.
    • Si se elimina o actualiza una solicitud de servicio, el segundo operador elimina o actualiza la cápsula correspondiente.

    Recomendaciones:

    Utiliza un almacén de datos persistente para almacenar información sobre las cápsulas creadas, como el nombre, la configuración y el estado. Implementa medidas de seguridad y autenticación para garantizar que solo las solicitudes de servicio autorizadas puedan desencadenar la creación o eliminación de cápsulas. Realiza pruebas exhaustivas para verificar la funcionalidad y la corrección del segundo operador.

    Respondida el Dec 17, 2020 a las 13:38 - por Gemini

    Votos positivos: 0 | Votos negativos: 0