Despliegue y orquestación
La contenedorización ofrece la oportunidad de trasladar y escalar aplicaciones a nubes y centros de datos. Los contenedores garantizan que esas aplicaciones se ejecuten de la misma manera en cualquier lugar, lo que te permite aprovechar al máximo y con agilidad todos estos entornos. Además, a medida que escalas tus aplicaciones, necesitas herramientas que te ayuden a automatizar el mantenimiento de las mismas, permitir el reemplazo automático de contenedores fallidos y gestionar la implementación de actualizaciones y reconfiguraciones de esos contenedores durante su ciclo de vida.
Las herramientas para gestionar, escalar y mantener aplicaciones contenedorizadas se denominan orquestadores. Dos de las herramientas de orquestación más populares son Kubernetes y Docker Swarm. Docker Desktop proporciona entornos de desarrollo para ambos orquestadores.
Los módulos avanzados te enseñan a:
- Configurar y usar un entorno Kubernetes en tu máquina de desarrollo
- Configurar y usar un entorno Swarm en tu máquina de desarrollo
Activar Kubernetes
Docker Desktop configura Kubernetes por ti de forma ágil y directa. Sigue las instrucciones de configuración y validación adecuadas para tu sistema operativo:
Mac
Desde el panel de Docker Dashboard, dirígete a Settings y selecciona la pestaña Kubernetes.
Selecciona la casilla etiquetada como Enable Kubernetes y selecciona Apply. Docker Desktop configura automáticamente Kubernetes por ti. Sabrás que Kubernetes se ha habilitado con éxito cuando veas una luz verde junto a 'Kubernetes running' en Settings.
Para confirmar que Kubernetes está en funcionamiento, crea un archivo de texto llamado
pod.yamlcon el siguiente contenido:apiVersion: v1 kind: Pod metadata: name: demo spec: containers: - name: testpod image: alpine:latest command: ["ping", "8.8.8.8"]Esto describe un pod con un solo contenedor, que aísla un ping básico a 8.8.8.8.
En una terminal, dirígete a donde creaste
pod.yamly crea tu pod:$ kubectl apply -f pod.yamlVerifica que tu pod esté en funcionamiento:
$ kubectl get podsDeberías ver algo como:
NAME READY STATUS RESTARTS AGE demo 1/1 Running 0 4sVerifica que obtienes los registros esperados para un proceso de ping:
$ kubectl logs demoDeberías ver la salida de un proceso de ping correcto:
PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms 64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms 64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms ...Finalmente, elimina tu pod de prueba:
$ kubectl delete -f pod.yaml
Windows
Desde el panel de Docker Dashboard, dirígete a Settings y selecciona la pestaña Kubernetes.
Selecciona la casilla etiquetada como Enable Kubernetes y selecciona Apply. Docker Desktop configura automáticamente Kubernetes por ti. Sabrás que Kubernetes se ha habilitado con éxito cuando veas una luz verde junto a 'Kubernetes running' en el menú Settings.
Para confirmar que Kubernetes está en funcionamiento, crea un archivo de texto llamado
pod.yamlcon el siguiente contenido:apiVersion: v1 kind: Pod metadata: name: demo spec: containers: - name: testpod image: alpine:latest command: ["ping", "8.8.8.8"]Esto describe un pod con un solo contenedor, que aísla un ping básico a 8.8.8.8.
En PowerShell, dirígete a donde creaste
pod.yamly crea tu pod:$ kubectl apply -f pod.yamlVerifica que tu pod esté en funcionamiento:
$ kubectl get podsDeberías ver algo como:
NAME READY STATUS RESTARTS AGE demo 1/1 Running 0 4sVerifica que obtienes los registros esperados para un proceso de ping:
$ kubectl logs demoDeberías ver la salida de un proceso de ping correcto:
PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: seq=0 ttl=37 time=21.393 ms 64 bytes from 8.8.8.8: seq=1 ttl=37 time=15.320 ms 64 bytes from 8.8.8.8: seq=2 ttl=37 time=11.111 ms ...Finalmente, elimina tu pod de prueba:
$ kubectl delete -f pod.yaml
Habilitar Docker Swarm
Docker Desktop se ejecuta principalmente sobre Docker Engine, que tiene todo lo necesario para ejecutar un Swarm integrado. Sigue las instrucciones de configuración y validación adecuadas para tu sistema operativo:
Mac
Abre una terminal e inicializa el modo Docker Swarm:
$ docker swarm initSi todo va bien, deberías ver un mensaje similar al siguiente:
Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.Ejecuta un servicio Docker simple que use un sistema de archivos basado en alpine y aísle un ping a 8.8.8.8:
$ docker service create --name demo alpine:latest ping 8.8.8.8Verifica que tu servicio haya creado un contenedor en ejecución:
$ docker service ps demoDeberías ver algo como:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 463j2s3y4b5o demo.1 alpine:latest docker-desktop Running Running 8 seconds agoVerifica que obtienes los registros esperados para un proceso de ping:
$ docker service logs demoDeberías ver la salida de un proceso de ping correcto:
demo.1.463j2s3y4b5o@docker-desktop | PING 8.8.8.8 (8.8.8.8): 56 data bytes demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms ...Finalmente, elimina tu servicio de prueba:
$ docker service rm demo
Windows
Abre PowerShell e inicializa el modo Docker Swarm:
$ docker swarm initSi todo va bien, deberías ver un mensaje similar al siguiente:
Swarm initialized: current node (tjjggogqpnpj2phbfbz8jd5oq) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3e0hh0jd5t4yjg209f4g5qpowbsczfahv2dea9a1ay2l8787cf-2h4ly330d0j917ocvzw30j5x9 192.168.65.3:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.Ejecuta un servicio Docker simple que use un sistema de archivos basado en alpine y aísle un ping a 8.8.8.8:
$ docker service create --name demo alpine:latest ping 8.8.8.8Verifica que tu servicio haya creado un contenedor en ejecución:
$ docker service ps demoDeberías ver algo como:
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 463j2s3y4b5o demo.1 alpine:latest docker-desktop Running Running 8 seconds agoVerifica que obtienes los registros esperados para un proceso de ping:
$ docker service logs demoDeberías ver la salida de un proceso de ping correcto:
demo.1.463j2s3y4b5o@docker-desktop | PING 8.8.8.8 (8.8.8.8): 56 data bytes demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=0 ttl=37 time=13.005 ms demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=1 ttl=37 time=13.847 ms demo.1.463j2s3y4b5o@docker-desktop | 64 bytes from 8.8.8.8: seq=2 ttl=37 time=41.296 ms ...Finalmente, elimina tu servicio de prueba:
$ docker service rm demo
Conclusión
En este punto, has confirmado que puedes ejecutar cargas de trabajo contenedorizadas simples en Kubernetes y Swarm. El siguiente paso es escribir un archivo YAML que describa cómo ejecutar y gestionar estos contenedores.
Referencias de la CLI
Hay documentación adicional disponible para todos los comandos de la CLI utilizados en este artículo aquí: