Docker swarm, Photon, Portainer

INSTALAR DOCKER SWARM, PORTAINER Y PHOTON

En esta ocasión vamos hablar de como hacer un cluster de docker utilizando Photon como sistema operativo, muy ligero y tiene un kernel especial para vmware, administrándolo de manera fácil con Portainer CE, el cual dispone de una versión business totalmente gratis hasta 5 nodos.

Lo primero es ver que requisitos necesitamos para un cluster de docker:

Nodos: mínimo 3 nodos donde puede tolerar la caída de 1

Mínimo hardware: 4 core / 8 GB RAM / 200 GB hd para 3 nodos
Recomendado hardware: 8 core / 16 GB RAM / 200 GB hd para 3 nodos
Opcional hardware: 8 core+ / 16 GB RAM+ / 200 GB+ hd para 6 nodos

Como es un laboratorio levantaremos 3 máquinas más pequeñas en VirtualBox con Photon, os recomiendo bajaros la ISO y hacer la instalación, ya que la OVA os puede dar algún problema como que no encuentra la disquetera fd0. Podéis encontrar las descargas en https://github.com/vmware/photon/wiki/Downloading-Photon-OS

INSTALACIÓN PHOTON OS

Es muy sencilla y rápida como veréis a continuación.

photon install

Aceptar términos de vmware

photon aceptar licencia

Elegir disco

photon elegir disco

Que versión, para entorno producción la mínima.

photon opcion instalacion

Como queremos configurar la red, cada cual como sea su entorno pero por norma general manualmente para poner una ip fija

photon seleccion red

Ponemos los datos de red

photon establecer ip

Ahora el nombre de la máquina

photon establecer hostname

Password de root y confirmación

photon establecer password

Y por último confirmar

photon confirmar instalacion Y poco más, ya tendríamos nuestro primer nodo, desplegamos 2 más. Comentaros que si la instalación fuera en un entorno vmware habría un paso más donde te pide si quieres el kernel genérico o el kernel optimizado para vmware.

Photon viene con docker instalado pero desactivado simplemente ejecutar:

systemctl enable docker

systemctl start docker

photon habilitar docker

Lo siguiente sería a gusto del consumidor, photon viene con iptables y teclado en inglés por defecto, para no extendernos vamos a desactivar iptables y poner el teclado en español.

En cada máquina ejecutar:

systemctl stop iptables

systemctl disable iptables

photon deshabilitar iptables

En esta distribución el gestor de paquetes es tdnf, ejectuamos para el teclado lo siguiente:

tdnf install kbd

loadkeys es

localectl set-keymap es

photon instalar kbd

Por otro lado el servicio de ssh no permite el root login de forma remota, por comodidad a la hora de crear el cluster lo habilitaremos añadiendo PermitRootLogin en el fichero de configuración /etc/ssh/sshd_config

photon permitir root login

Y reiniciamos servicio

systemctl restart sshd

Una vez lo tenemos hecho en las tres máquinas vamos a crear el cluster

DOCKER SWARM

En el primer nodo ejecutamos lo siguiente

docker swarm init –advertise-addr 192.168.1.200

Aquí os voy hacer una matización para los que utilicen vmware con NSX, el puerto por defecto para la comunicación de VXLAN de NSX es UDP 4789 que es el que utiliza docker swarm para el tráfico de la red overlay, por lo tanto entraríamos en conflicto y tendríamos un problema, por lo tanto en vmware ejecutaríamos este comando para cambiar el puerto por ejemplo al 9789

docker swarm init –data-path-port=9789 –advertise-addr 192.168.1.200

Este conflicto es difícil de verlo pero cuando instalas el agente de portainer os dará el error context deadline exceeded (Client.Timeout exceeded while awaiting headers)

Devolviendo lo que debemos ejecutar en cada nodo para añadirlo como worker,

docker iniciar swarm

pero no vamos a ejecutarlo en este caso, vamos añadir las maquinas como manager y serán worker también, así tenemos un cluster multi-manager y multi-nodo, ya que necesitamos 3 para el quorum. Ejecutamos

docker swarm join-token manager

Y nos devuelve lo que tenemos que ejecutar en las otras dos máquinas para ser manager

docker swarm join –token SWMTKN-1-0lzh7zsccaajsgeccy64osgbtkzi3b1bt2cm9ofd7kww0f375q-d24p6xhclfrp8gpxg8m4hkzy2 1
92.168.1.200:2377

docker token

Lo ejecutamos en las otras dos y si todo está correcto aparecerá lo siguiente:

docker join swarm

Para ver nuestro cluster:

docker node ls

docker ls

Perfecto ya tenemos nuestro cluster donde podríamos empezar a trabajar, pero lo haremos fácil con Portainer CE.

Portainer CE

Podemos instalar portainer en el propio cluster pero es mejor que sea exterior, para en caso de caída ver que está sucediendo. Para ello nos instalamos otro docker pero en modo standlone y ejecutamos lo siguiente, es decir, podemos crear otra máquina igual que hemos hecho pero sin añadirlo al cluster, trabajando de manera independiente.

Primero creamos un volumen para que nuestros datos persistan:

docker volume create portainer_data

Y desplegamos:

docker run -d -p 8000:8000 -p 9443:9443 –name portainer –restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest
docker portainer
 
Ahora tenemos que ir al navegador y abrir https://ipdelamaquina:9443 y aceptar el certificado, ya que es un autofirmado que podréis sustituir en la configuración web.
Nos pide que pongamos el user and password o recuperar de un backup.
login portainer
Una vez dentro nos dirigimos a Environments y hacemos click Add Environment a la derecha.
portainer añadir entorno

Seleccionamos docker swarm y pulsamos en start wizard.

portainer wizard

En la siguiente pantalla elegimos agent y rellenamos Name y Environment adress con 192.168.1.200:9001, el resto de opciones es para asignar grupo, etiqueta para luego los permisos de usuario a los diferentes entornos.

selecionar modo del entorno de portainer

Y ahora es tan simple como copiar y pegar el comando que nos indica en nuestro nodo principal, esperar a que instale el docker de agente y tras ello darle a Connect.

docker network create \ –driver overlay \ portainer_agent_network docker service create \ –name portainer_agent \ –network portainer_agent_network \ -p 9001:9001/tcp \ –mode global \ –constraint ‘node.platform.os == linux’ \ –mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \ –mount type=bind,src=//var/lib/docker/volumes,dst=/var/lib/docker/volumes \ portainer/agent:2.18.3

Con esto ya podemos gestionar nuestro cluster de docker desde portainer haciéndote la vida más simple. Amo Portainer, enhorabuena Team por este pedazo de software que nos brindáis.

dashboard portainer entornos

A partir de aquí les dejo a ustedes que descubran todas sus opciones, os puedo asegurar que os va a encantar.

Buen fin de semana!!!

TL.

Preguntas Frecuentes

Photon OS es un sistema operativo ligero desarrollado por VMware, optimizado para entornos virtualizados y contenedores. Su diseño minimalista y su kernel especializado lo hacen ideal para ejecutar Docker de manera eficiente.

Docker Swarm es una herramienta de orquestación nativa de Docker que permite administrar múltiples contenedores en un clúster de servidores. Con Swarm, puedes desplegar, escalar y gestionar aplicaciones en múltiples nodos de forma sencilla, sin necesidad de herramientas externas como Kubernetes.

Portainer es una interfaz de usuario web que simplifica la gestión de entornos Docker. Con Portainer, puedes monitorear y administrar tu clúster de Docker Swarm de manera intuitiva, desplegar aplicaciones, monitorear recursos y gestionar servicios desde una plataforma centralizada.

Aunque es posible, se recomienda instalar Portainer en una instancia separada fuera del clúster. Esto asegura que, en caso de que el clúster experimente problemas, aún puedas acceder a Portainer para diagnosticar y resolver cualquier inconveniente.

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Últimos artículos

artículo uds enterprise 4.0

UDS Enterprise 4.0

UDSENTERPRISE 4.0 VDI FLEXIBLE Y EFICIENTE En 2019 ya os hablamos sobre UDS Enterprise 2.2,

Más visitados