Como instalar docker swarm en Ubuntu 22.04/20.04

Published:

Docker Swarm es una herramienta de orquestación de contenedores que se ejecuta en la plataforma Docker. Ayuda a los usuarios a crear y administrar un grupo de nodos Docker. La agrupación en clústeres en Docker es una buena práctica para proporcionar redundancia al permitir que Docker Swarm realice la conmutación por error en caso de que falle uno o más nodos en el clúster.

Hoy vamos a ver como instalar esta herramienta que considero previa para aprender Kubernetes, pero la gran ventaja es su simplicidad de uso, aunque tal vez al administrar muchos nodos k8s es mucho más potente.

Pre-requisitos: Voy a usar mi host con Ubuntu 22.04, y voy a usar 2 máquinas virtuales con ubuntu 20.04, la primera se llamará manager y será el nodo primario. Y la otra vm, será un nodo worker de swarm llamada nodo1. Si querés podes poner más para probar.

1- Instalando Docker por repositorios

Importante: en esta primer parte del punto 1, es común para todos los nodos. Las vm están recién instaladas y actualizadas.

1.1- Paquetes recomendados

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

1.2- Cargamos las llaves

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

1.3- Cargamos el repositorio de Ubuntu

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

1.4- Actualizamos e instalamos Docker

sudo apt update && sudo apt install docker-ce -y

1.5- Agregamos nuestro usuario para correr docker

sudo usermod -aG docker ${USER}
newgrp docker

1.6- Verificamos que docker este arriba, si vamos a usarlo más adelante es recomendable habilitarlo.

sudo systemctl status docker

2- Creando el cluster de Swarm

Este punto, solo lo vamos a hacer en el nodo master. En el punto 3 ejecutamos los comandos para el nodo1 o worker.

Es recomendable cargar todos los nodos en el archivo /etc/hosts que es el dns local de nuestro master, así podemos asociar una dirección IP a un nombre. Ejemplo

jorge@manager:~$ sudo cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 nb
192.168.0.28 master
192.168.0.29 nodo1

2.1- Ahora vamos a iniciar el cluster

sudo docker swarm init --advertise-addr 192.168.0.28

Esto nos dará un token para poder unir nodos al cluster, el cual debemos tomar nota. Y además vamos a ejecutar un comando para ver los miembros del cluster:

sudo docker node ls

2.2- En el caso de no tomar nota del token, podemos averiguarlo en cualquier momento lanzando en el modo master:

sudo docker swarm join-token worker

3- Uniendo un nodo al cluster

En el nodo1, después de instalar docker siguiendo completo el punto 1. Copiamos y pegamos el comando con el token que nos dió el master usando sudo:

sudo docker swarm join --token SWMTKN-1-2bget626f4tcgoo9stnbipmbe3ec7oehb332nlnvjasmq51bli-bydxahmtznz424lsc7p9d19tr 192.168.0.28:2377

3.1- Abandonar el cluster

Desde el nodo worker podemos eliminarlo del cluster con el comando:

sudo docker swarm leave

O desde el nodo master con rm y el nombre del nodo worker.

sudo docker node rm v3j9kj0prjm00z8m5wi3w1933

3.2- Volvemos al master y validamos el cluster

sudo docker node ls

4- Lanzar una aplicación

La mejor forma de testear el cluster es creando un servicio, en este caso usaremos nginx.

sudo docker service create --name web-server --publish 8080:80 nginx:latest

4.1- Escalar la cantidad de replicas

sudo docker service scale web-server=3

hacemos un ls para ver los servicios corriendo

sudo docker node ls

4.2- Quitar replicas

Podemos bajar la cantidad de replicas existentes dejando solo las que necesitamos

sudo docker service scale web-server=2

4.3- Ver los contenedores

Y podemos ver los contenedores corriendo con ps

sudo docker ps

5- Eliminando el deploy

sudo docker service rm web-server

CONCLUCIÓN

Vimos como instalar Docker en Ubuntu 22.04 y 20.04, y como crear un cluster de swarm para orquestar los servicios de docker, con unos pocos comandos aprendimos a usar esta potente herramienta.

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles

Ads Blocker Image Powered by Code Help Pro

Se detecto un bloqueador de publicidad!!!

Nuestro contenido es 100% gratuito, por favor colabora con nosotros, permite la publicidad y disfruta del contenido.