7 juliol, 2020
kubernetes-swarm

Kubernetes vs Swarm

L’ús de contenidors permet executar un conjunt de processos separats del sistema facilitant la seva portabilitat a altres entorns i sent molt ràpids d’implementar. Els contenidors permeten empaquetar i aïllar del sistema, les aplicacions i l’entorn necessari perquè s’executin, permetent moure aquestes aplicacions entre diferents sistemes. A causa de la seva popularitat l’ús de contenidors s’ha estès i han sorgit eines que permeten administrar-los i organitzar-los com són Kubernetes de Google i Swarm de Docker.

En aquest article veurem què és Kubernetes, què és Swarm i quan és recomanable utilitzar cadascun d’aquests orquestadores de contenidors.

Què és Kubernetes

Un contenidor és una imatge que empaqueta l’aplicació amb les seves dependències i la seva configuració, fent que la portabilitat sigui més ràpida i eficient, i requereix molts menys recursos de hardware.

Kubernetes (K8s) és una plataforma de codi lliure l’objectiu del qual és administrar i organitzar clústers de contenidors, evitant els processos manuals relacionats per escalar i implementar aplicacions en contenidors. Quan es treballa amb grups de contenidors, Kubernetes facilita la seva administració de manera ràpida i efectiva.

Kubernetes està basat en 15 anys d’experiència executant càrregues de treball en els serveis de Google, i en les aportacions d’una gran comunitat. Google utilitza Kubernetes per a la gestió dels contenidors que donen lloc als seus serveis com Gmail o YouTube.

Característiques i fortaleses de Kubernetes

Les principals característiques de Kubernetes són:

  • Gestió de les càrregues de treball crítiques, permetent optimitzar els recursos i augmentar el rendiment (best effort).
  • Afegir contenidors de manera automàtica sense que afecti la disponibilitat.
  • Eliminar, reiniciar o reemplaçar els contenidors que fallin o quan els seus nodes no estiguin disponibles. Kubernetes garanteix una alta disponibilitat.
  • Facilita l’orquestració d’emmagatzematge per a crear sistema d’emmagatzematge en el núvol o en xarxa on premise.
  • Execució de desplegaments automatitzats monitorant el procés i permetent revertir els canvis (rollbacks automàtics). S’integra amb eines de desplegament DevOps.
  • Escalabilitat d’aplicacions, incrementant els recursos necessaris o reduint-se si no són utilitzats (escalat automàtic).
  • Utilitza la seva pròpia API pel que poden agregar-se noves operacions personalitzades.
  • Suporta una gran varietat de contenidors com docker, rkt, cri-o o frakti.
  • Compta amb una immensa comunitat, per la qual cosa disposa d’un gran suport.

En quins casos és recomanable Kubernetes?

Donada la seva flexibilitat i totes les possibilitats d’instal·lació que ofereix, Kubernetes pot utilitzar-se sense tot just restriccions. Entre l’ampli ventall de possibilitats d’ús de Kubernetes podem nomenar:

  • Servidors bàsics (bare metal). Pot desplegar-se el clúster sobre màquines físiques utilitzant diferents distribucions de Linux.
  • Virtualització on premise. És possible muntar un clúster en els servidors de les empreses, però utilitzant màquines virtuals.
  • Serveis PaaS, plataforma d’aplicacions com a servei.
  • Serveis Cloud.

Què és Swarm

Swarm és una eina integrada en Docker (aplicació per a la creació de contenidors) que permet agrupar una sèrie de hosts de Docker en un clúster i gestionar-los de forma centralitzada, així com orquestrar contenidors.

En el Docker Swarm es tindran múltiples servidors que es poden comunicar entre si i tenen corrent diversos contenidors. Algun d’aquests servidors seran managers i podran decidir on ha d’anar la càrrega, assignant en quin node correrà cada contenidor.

Amb Swarm es disposa de l’API de Docker, podent-se administrar les tasques i l’assignació de recursos per a cadascun dels contenidors que formen el clúster, com si es tractés d’una única màquina Docker.

Característiques i fortaleses de Swarm

Els principals avantatges de Swarm són:

  • Es troba integrat amb l’API Docker Engine, per la qual cosa és molt senzill d’utilitzar per als que treballen amb Docker. Les ordres que utilitza són els propis de Docker (no permet agregar noves operacions).
  • Es basa en dos elements principals: managers (host de Docker) i workers (serveis). Els managers poden actuar també com workers i s’encarreguen de donar ordres als workers.
  • Creació de serveis a partir d’una imatge i configuració per a distribuir-los en clústers (com a tasques). Aquests serveis poden ser replicats o globals.
  • Redistribueix les càrregues de treball si algun node falla assegurant una alta disponibilitat.
  • Administració de grups de contenidors (agregar, eliminar, balancejar, etc.).
  • Compta amb funcionalitats com escalat manual (augmentar i disminuir recursos segons necessitat) i rolling updates (gestió d’actualitzacions sobre els serveis) integrat.
  • No és necessària cap instal·lació extra per a tenir-ho disponible amb Docker.

En quins casos és recomanable Swarm? 

Per a projectes on s’usa Docker, Swarm és una bona opció, ja que és molt ràpid i fiable, trobant-se integrat de manera nativa en el mateix Docker.

Docker Swarm és molt senzill d’implementar pel que per a petits projectes senzills és molt interessant el seu ús, evitant complexes configuracions com les d’altres solucions com Kubernetes o Apache Mesos.

Quan és més recomanable utilitzar una d’aquestes eines?

Kubernetes és el líder en l’orquestració de contenidors, sent l’eina més popular i utilitzada del mercat. En grans projectes o projectes amb una major complexitat és millor utilitzar Kubernetes, mentre que per a projectes més petits o senzills la facilitat d’ús de Swarm és més apropiat.

Kubernetes requereix una instal·lació manual, per la qual cosa necessita configuracions que no són automàtiques com a gestió de rols i IP. Swarm es troba ja integrat en Docker, per la qual cosa és menys complex d’instal·lar i configurar que Kubernetes.

Kubernetes també maneja el control d’accés, els volums i la integració de serveis en el núvol millor que Docker Swarm, proporciona formes flexibles de monitoratge per a verificar que els contenidors estan actius i saludables.

En els casos en els quals es desitgin provar conceptes relacionats amb la comunicació i dinàmica de les aplicacions, Swarm és una gran opció per a fer-ho de manera ràpida i amb poc esforç.

Si es requereix disposar d’un major control sobre les possibles fallades, Swarm no és tan bo com Kubernetes en aquest aspecte.

A l’hora de l’assignació o modificació dels recursos assignats a cada contenidor, Swarm permet realitzar-lo de manera manual (encara que molt ràpid), mentre que Kubernetes pot realitzar de manera automàtica.

La gestió de grups de contenidors s’ha convertit en una qüestió de vital importància pel que han sorgit eines d’orquestració de contenidors com Kubernetes i Docker Swarm.

Moltes grans empreses com Google i Amazon utilitzen i recolzen Kubernetes, realitzant una gran aposta sobre aquest orquestrador de contenidors.

Encara estàs despert?

Nosaltres també. Posa't en contacte amb nosaltres i t'ajudarem en el que necessitis.
Contáctanos