Soy bastante nuevo en la orquestación de Docker y en la gestión de una flota de contenedores. Quiero crear una aplicación que le dé al usuario un contenedor cuando ejecute un comando. ¿Cuál es la mejor herramienta y la mejor manera de lograrlo?

Planeo tener un grupo de servidores CoreOS para ejecutar los contenedores e imagino que el programador tiene una API a la que puedo llamar para crear el contenedor.

La mayor parte de lo que he visto con Nomad, Kubernetes, Docker Swarm, etc. es cómo aprovisionar múltiples clústeres de contenedores, todos haciendo lo mismo. Quiero poder crear un único contenedor basado en un comando de usuario y luego poder comunicarme con una API en ese contenedor. Alguien tiene experiencia con esto?

1
gkrizek 13 dic. 2016 a las 19:12

2 respuestas

La mejor respuesta

Miraría Kubernetes + la API de trabajos (de corta duración) o Implementaciones (de larga duración)

No estoy seguro de qué quiere decir exactamente con comando, pero asumiré que es una especie de entorno de desarrollo desencadenado por una CLI, make-dev.

  1. El usuario activa make-dev, que envía un webhook a su aplicación frente a la API de trabajos, idealmente haciendo limitación de velocidad y / o autenticación.
  2. Su aplicación toma el comando, la cordura lo verifica y luego activa una solicitud de trabajo / implementación + un Ingress regla + Servicio
  3. Kubernetes lo programará en toda su flota de máquinas
  4. Su aplicación espera a que se inicie el pod, luego devuelve la dirección de la API con un identificador único (lo mismo en la regla de ingreso) como devclusters.com/foobar123
  5. El usuario ahora accede a su servicio en esa dirección. Internamente, Kubernetes usa la entrada y el servicio para enrutar las solicitudes a su pod

Esto debería escalar bien, y si sus diferentes entornos usan la misma imagen de contenedor base, deberían comenzar muy rápido.

Enchufe: si desea un clúster CoreOS + Kubernetes sencillo más una interfaz de usuario, pruebe https://coreos.com/tectonic

1
Rob 13 dic. 2016 a las 23:46

Planeo tener un grupo de servidores CoreOS para ejecutar los contenedores y me imagino que el programador tiene una API a la que puedo llamar para crear el contenedor

Kubernetes viene con una API RESTful que puede usar para crear directamente pods (la unidad de trabajo en kubernetes que contiene uno o más contenedores) dentro de su clúster.

La utilidad de línea de comandos kubectl también interactúa con el clúster exactamente de la misma manera, a través de la API. Hay bibliotecas cliente escritas en golang, Java y Python en este momento con otras en el camino para ayudar a comunicarse con el clúster.

Si luego desea una abstracción de nivel superior para administrar los pods, actualizarlos y administrar su vida útil, mirar uno de los controladores (conjunto de réplicas, controlador de réplica, implementación, conjunto de estado) debería ayudar.

0
Anirudh Ramanathan 14 dic. 2016 a las 00:47