Seidor
Kubernetes vs Docker Swarm

20 de març de 2024

Kubernetes vs Docker Swarm! quina és la millor opció?

Durant la creació d'aquesta entrada de blog intentarem fer una comparació lineal de les diferències i capacitats d'aquests sistemes de gestió de contenidors. D'una banda tindrem a Kubernetes v1.9 i de l'altra Docker Swarm 1.2.9 també conegut com a Docker Engine.

Que es Kubernetes?

No es más que un sistema de código abierto que nos ayuda con la implementación, escalado y administración de aplicaciones en contenedores, fue construido por Google utilizando un sistema interno de administración de clústeres llamado Borg “Omega”. Y se puede diagramar su base de trabajo de la siguiente manera:

diagrama-kubernetes-web

El node Master, ubica les càrregues de treball del contenidor en grups d'usuaris en nodes de treballadors o en si mateix. Els altres components són:

  • Etcd: Emmagatzema les dades de configuració a les quals pot accedir el Servidor API de Kubernetes Master utilitzant http simple o API JSON.
  • Kube-Apiserver: és el centre de gestió per al node Master, facilita la comunicació entre els diversos components mantenint amb això la salut del clúster.
  • Kube-Controller-Manager: és l'encarregat d'assegurar la coincidència entre l'estat desitjat del clúster i l'estat actual, això ho aconsegueix escalant càrregues de treball cap amunt i cap avall.
  • Kube-Scheduler: col·loca la càrrega de treball en el node que correspon; en aquest diagrama particular, totes les càrregues de treball s'ubiquen localment en el seu host.
  • Kubelet: rep les especificacions del pod del servidor API i administra els pods que s'executen en l'host.

Per estar en consonància amb els termes utilitzats comunament quan es parla de Kubernetes, manejarem la següent llista:

  • Pods: Kubernetes implementa i programa contenidors en grups anomenats pods. Els contenidors en un pod s'executen en el mateix node i comparteixen recursos com sistemes d'arxius, espai de noms en el kernel i una adreça IP.
  • Desplegaments: aquests blocs de construcció es poden usar per crear i administrar un grup de pods. Els desplegaments es poden usar a nivell de servei per escalar horitzontalment garantint disponibilitat.
  • Serveis: són els punts finals que es poden adreçar per nom i es poden connectar als pods utilitzant els selectors d'etiquetes. El servei automàticament enviarà sol·licituds per torns entre pods. Kubernetes configurarà un servidor DNS per al clúster que busca nous serveis i els permet ser adreçats pel seu nom. Els serveis són la part frontal de les càrregues de treball del seu contenidor.
  • Etiquetes: són parells clau-valor units a objectes i es poden usar per cercar i actualitzar múltiples objectes com un conjunt.

Què és Docker Swarm?

És una eina que permet als desenvolupadors implementar contenidors en mode swarm. Un clúster Swarm consisteix en Docker Engine implementat en múltiples nodes. Els nodes d'administració realitzen l'orquestració i l'administració del clúster. Els nodes de treball reben i executen tasques des dels nodes d'administració.

Un servei consisteix en tasques que es poden executar en nodes de Swarm. Els serveis es poden replicar per executar-se en múltiples nodes. En el model de servei replicats, l'equilibri de càrrega d'ingrés i el DNS intern es poden utilitzar per proporcionar punts finals de servei altament disponibles.

Swarm Architecture

L'usuari pot especificar declarativament l'estat de diversos serveis per executar en el clúster utilitzant per a això fitxers de tipus YAML. Per a aquesta arquitectura també llistarem alguns termes comunament esmentats.

  • Node: no és més que una instància d'un eixam. Els nodes es poden distribuir en les instal·lacions o en núvols públics.
  • Swarm: el conformen un grup de nodes (Docker Engine). En aquest model s'orquestren serveis en lloc d'executar comandes de contenidors.
  • Nodes d'administració: reben les definicions de servei de l'usuari i distribueixen la feina als nodes de treballadors. Els nodes d'administració també poden realitzar les tasques dels nodes de treballador.
  • Nodes de treballador: recopilen i executen tasques des dels nodes d'administració.
  • Tasca: és una unitat atòmica d'un servei programat en un node treballador.

Ja coneixent les arquitectures i components de Kubernetes i Docker Swarm, passarem a realitzar una comparativa d'ambdós ecosistemes.

Conclusions

Pel que fa a la popularitat i ús actual, Kubernetes és líder en totes les mètriques quan es compara amb Docker Swarm, té més del 80% de l'interès en articles de notícies, popularitat en eines com Github i cerques a la web.

D'altra banda, no és menys cert la diferència en la complexitat implicada en implementar Kubernetes en comparació amb Docker Swarm, però Kubernetes ha tractat de mitigar aquest inconvenient incorporant una varietat d'opcions d'implementació com Minikube i Kubeadm.