tutorial run google deploy create container compose cluster docker kubernetes docker-compose google-container-engine google-kubernetes-engine

run - ¿Se pueden usar Kubernetes como Docker Compose?



run docker container on google cloud (4)

He estado investigando la documentación de Kubernetes durante horas. Entiendo el diseño central y la noción de servicios, controladores, pods, etc.

Sin embargo, lo que no entiendo es el proceso en el que puedo configurar declarativamente el clúster. Es decir, una forma de escribir un archivo de configuración (o un conjunto de ellos) para definir la composición y las opciones de escala de la implementación en la nube. Quiero poder declarar qué contenedores quiero en qué pods, cómo se comunicarán, cómo se escalarán, etc. sin ejecutar una tonelada de comandos cli.

¿Existe la funcionalidad de compilación docker-compose para Kubernetes?

Quiero que mi aplicación se defina en git, se controle la versión, sin depender de las interacciones cli manuales.

¿Es esto posible hacerlo de manera concisa? ¿Hay alguna referencia que sea más clara que la documentación oficial?


Docker ha anunciado oficialmente la funcionalidad docker-compose para el clúster kubernetes. Entonces, a partir de ahora, puede componer los recursos de kubernetes en un archivo y aplicarlos utilizando ese único archivo.

Primero, necesitamos instalar el controlador Compose en Kubernetes en su clúster Kubernetes. Este controlador utiliza los puntos de extensión estándar de Kubernetes para presentar Stack a la API de Kubernetes. Consulte la documentación completa para instalar el controlador de composición docker:

https://github.com/docker/compose-on-kubernetes

Escribamos un simple archivo de componer yaml:

version: "3.7" services: web: image: dockerdemos/lab-web ports: - "33000:80" words: image: dockerdemos/lab-words deploy: replicas: 3 endpoint_mode: dnsrr db: image: dockerdemos/lab-db

Luego usaremos el cliente de Docker para implementar esto en un clúster de Kubernetes que ejecute el controlador:

$ docker stack deploy --orchestrator=kubernetes -c docker-compose.yml words Waiting for the stack to be stable and running... db: Ready [pod status: 1/1 ready, 0/1 pending, 0/1 failed] web: Ready [pod status: 1/1 ready, 0/1 pending, 0/1 failed] words: Ready [pod status: 1/3 ready, 2/3 pending, 0/3 failed] Stack words is stable and running

Entonces podemos interactuar con esos objetos a través de la API de Kubernetes. Aquí puede ver que hemos creado los objetos de nivel inferior como Servicios, Pods, Implementaciones y ReplicaSets automáticamente:

$ kubectl get deployments NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/db 1 1 1 1 57s deployment.apps/web 1 1 1 1 57s deployment.apps/words 3 3 3 3 57s

Es importante tener en cuenta que esta no es una conversión única. Compose on Kubernetes API Server presenta el recurso Stack en la API de Kubernetes. Por lo tanto, podemos consultar y administrar todo en el mismo nivel de abstracción que estamos creando la aplicación. Eso hace que profundizar en los detalles anteriores sea útil para comprender cómo funcionan las cosas o para solucionar problemas, pero no es necesario la mayoría de las veces:

$ kubectl get stack NAME STATUS PUBLISHED PORTS PODS AGE words Running 33000 5/5 4m



Si tiene archivos existentes de Docker Composer, puede echar un vistazo al proyecto Kompose .

kompose es una herramienta para ayudar a los usuarios que están familiarizados con Docker-compose a moverse a Kubernetes. kompose toma un archivo Docker Compose y lo traduce en recursos de Kubernetes.

kompose es una herramienta conveniente para pasar del desarrollo local de Docker a administrar su aplicación con Kubernetes. La transformación del formato Docker Compose en el manifiesto de recursos de Kubernetes puede no ser exacta, pero ayuda enormemente cuando se implementa por primera vez una aplicación en Kubernetes.

Para ejecutar el archivo docker-compose.yaml o el suyo, ejecute:

kompose up

Para convertir docker-compose.yaml en implementaciones y servicios de Kubernetes con un simple comando:

$ kompose convert -f docker-compose.yaml INFO Kubernetes file "frontend-service.yaml" created INFO Kubernetes file "redis-master-service.yaml" created INFO Kubernetes file "redis-slave-service.yaml" created INFO Kubernetes file "frontend-deployment.yaml" created INFO Kubernetes file "redis-master-deployment.yaml" created INFO Kubernetes file "redis-slave-deployment.yaml" created

Para obtener más información, consulte: http://kompose.io/


Si todavía está buscando, tal vez esta herramienta pueda ayudar: https://github.com/kelseyhightower/compose2kube

Puede crear un archivo de composición:

# sample compose file with 3 services web: image: nginx ports: - "80" - "443" database: image: postgres ports: - "5432" cache: image: memcached ports: - "11211"

Luego use la herramienta para convertirlo en objetos kubernetes:

compose2kube -compose-file docker-compose.yml -output-dir output

Lo que creará estos archivos:

output/cache-rc.yaml output/database-rc.yaml output/web-rc.yaml

Luego puede usar kubectl para aplicarlos a kubernetes.