14 instrumente de orchestrare a containerelor pentru DevOps

Haideți să explorăm câteva dintre cele mai populare instrumente de orchestrare a containerelor disponibile în prezent pe piață.

Ce reprezintă orchestrarea containerelor?

Platformele de containere, cum ar fi Docker, sunt extrem de răspândite astăzi pentru a împacheta aplicații ce se bazează pe o arhitectură de tip microservicii. Containerele pot fi scalate eficient, fiind create la nevoie. Deși acest lucru este avantajos pentru câteva containere, imaginați-vă că gestionați sute dintre ele.

În acest context, devine extrem de complicat să administrezi ciclul de viață al containerelor și să le gestionezi eficient, mai ales când numărul acestora crește dinamic odată cu cererea.

Orchestrarea containerelor vine în ajutor automatizând planificarea, implementarea, scalabilitatea, echilibrarea sarcinii, disponibilitatea și interconectarea containerelor. Aceasta se referă, așadar, la automatizarea și gestionarea ciclului de viață al containerelor și serviciilor.

Este un proces care implică administrarea și organizarea unui număr mare de containere și a unei arhitecturi de microservicii la scară largă.

Din fericire, există o varietate de instrumente de orchestrare a containerelor la dispoziție.

Să le analizăm împreună!

Kubernetes

Probabil că v-ați așteptat la acesta, nu-i așa?

Kubernetes este o platformă open-source, concepută inițial de Google și în prezent întreținută de Cloud Native Computing Foundation. Aceasta permite atât configurarea declarativă, cât și automatizarea. Kubernetes poate ajuta la automatizarea implementării, scalării și gestionării sarcinilor de lucru și serviciilor containerizate.

Imagine de pe Kubernetes.io

API-ul Kubernetes facilitează comunicarea între utilizatori, componentele clusterului și componentele externe. Planul de control Kubernetes și nodurile rulează pe un grup de noduri care formează împreună clusterul. Sarcina de lucru a aplicației constă într-unul sau mai multe Pod-uri care rulează pe noduri Worker. Planul de control gestionează Pod-urile și nodurile de lucru.

Companii precum Babylon, Booking.com și AppDirect folosesc pe scară largă Kubernetes.

Caracteristici:

  • Descoperirea serviciilor și echilibrarea sarcinii
  • Orchestrarea stocării
  • Lansări și actualizări automate
  • Scalare orizontală
  • Gestionarea secretelor și a configurației
  • Auto-vindecare
  • Execuția lotului
  • IPv4/IPv6 dual-stack
  • Ambalare automată a coșului

Doriți să învățați Kubernetes? Consultați aceste resurse de învățare.

OpenShift

Redhat oferă OpenShift Container Platform ca Platformă ca Serviciu (PaaS). Aceasta ajută la automatizarea aplicațiilor pe resurse sigure și scalabile în medii cloud hibride. OpenShift oferă platforme de nivel enterprise pentru construirea, implementarea și gestionarea aplicațiilor containerizate.

Imagine de pe Openshift

Este construit pe motorul Redhat Enterprise Linux și Kubernetes. OpenShift dispune de diverse funcționalități pentru a gestiona clusterele prin UI și CLI. Redhat oferă OpenShift în două variante suplimentare:

  • OpenShift Online – oferit ca software ca serviciu (SaaS)
  • OpenShift Dedicated – oferit ca servicii gestionate

Openshift Origin (Origin Community Distribution) este un proiect comunitar open-source, utilizat în OpenShift Container Platform, Openshift Online și OpenShift Dedicated.

Nomad

Nomad este un orchestrator de sarcină de lucru simplu, flexibil și ușor de utilizat, conceput pentru a implementa și a gestiona containere și aplicații non-containerizate în medii locale și în cloud la scară largă. Nomad rulează ca un singur binar cu o amprentă mică de resurse (35 MB) și este compatibil cu macOS, Windows și Linux.

Dezvoltatorii utilizează infrastructura ca cod declarativ (IaC) pentru a implementa aplicațiile lor, definind modul în care ar trebui să fie implementată o aplicație. Nomad recuperează automat aplicațiile în caz de eșec.

Imagine de pe Nomad

Nomad orchestrează aplicații de orice tip (nu doar containere). Acesta oferă suport de primă clasă pentru Docker, Windows, Java, VM și multe altele.

Caracteristici:

  • Simplu și fiabil
  • Modernizarea aplicațiilor vechi fără rescriere
  • Federare simplă la scară
  • Scalabilitate dovedită
  • Compatibilitate multi-cloud
  • Integrări native cu Terraform, Consul și Vault

Docker Swarm

Docker Swarm utilizează un model declarativ. Puteți defini starea dorită a serviciului, iar Docker va menține această stare. Docker Enterprise Edition a integrat Kubernetes cu Swarm. Astfel, Docker oferă acum flexibilitate în alegerea motorului de orchestrare. CLI-ul pentru motorul Docker este utilizat pentru a crea un roi de motoare Docker unde serviciile de aplicații pot fi implementate.

Imagine de pe Docker

Comenzile Docker sunt folosite pentru a interacționa cu clusterul. Mașinile care se alătură clusterului sunt cunoscute sub numele de noduri, iar managerul Swarm se ocupă de activitățile clusterului.

Docker Swarm este format din două componente principale:

  • Manager – nodurile managerului atribuie sarcini nodurilor de lucru din roi. Un lider este ales pe baza unui algoritm de consens Raft. Liderul se ocupă de toate deciziile de gestionare a roiului și de orchestrarea sarcinilor pentru roi.
  • Worker Node – nodurile Worker Node primesc sarcini de la nodul manager și le execută.

Caracteristici:

  • Managementul clusterelor integrat cu Docker Engine
  • Design descentralizat
  • Model declarativ de serviciu
  • Scalare
  • Reconcilierea stării dorite
  • Rețea multi-gazdă
  • Descoperirea serviciilor
  • Echilibrarea sarcinii
  • Securizat implicit
  • Actualizări continue

Docker Compose

Docker Compose este conceput pentru a defini și a rula aplicații cu mai multe containere care funcționează împreună. Docker Compose descrie grupuri de servicii interconectate, care partajează dependențe software și sunt orchestrate și scalate împreună.

Puteți utiliza un fișier YAML (dockerfile) pentru a configura serviciile aplicației dvs. Apoi, cu o comandă `docker-compose up`, creați și porniți toate serviciile din configurația dvs.

Un exemplu de `docker-compose.yml`:

version: '3'
volumes:
  app_data:
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.0
    ports:
      - 9200:9200
      - 9300:9300
    volumes:
      - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
      - ./docker-data-volumes/elasticsearch:/usr/share/elasticsearch/data

  kibana:
    depends_on:
      - elasticsearch
    image: docker.elastic.co/kibana/kibana:6.8.0
    ports:
      - 5601:5601
    volumes:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
  app:
    depends_on:
      - elasticsearch
    image: asadali08527/app:latest
    ports:
      - 8080:8080
    volumes:
      - app_data:/var/lib/app/

Puteți folosi Docker Compose pentru a include codul aplicației în mai multe servicii care rulează independent și care comunică folosind o rețea internă. Instrumentul oferă un CLI pentru gestionarea întregului ciclu de viață al aplicațiilor dvs. Docker Compose s-a concentrat inițial pe fluxurile de lucru de dezvoltare și testare, dar acum se concentrează și pe funcții orientate spre producție.

Motorul Docker poate fi o instanță autonomă furnizată cu Docker Machine sau un cluster Docker Swarm complet.

Caracteristici:

  • Multiple medii izolate pe o singură gazdă
  • Păstrarea datelor de volum atunci când sunt create containere
  • Recrearea doar a containerelor care s-au modificat
  • Variabile și mutarea unei compoziții între medii

MiniKube

Minikube permite utilizatorilor să ruleze Kubernetes local. Cu Minikube, puteți testa aplicații local într-un cluster Kubernetes cu un singur nod pe computerul personal. Minikube are suport integrat pentru tabloul de bord Kubernetes.

Minikube rulează cea mai recentă versiune stabilă a Kubernetes și acceptă următoarele caracteristici:

  • Echilibrarea sarcinii
  • Multi-cluster
  • Volume persistente
  • NodePorts
  • ConfigMaps și Secrete
  • Timp de rulare a containerului: Docker, CRI-O și containerizat
  • Activarea CNI (Container Network Interface)

Maraton

Marathon este un instrument conceput pentru Apache Mesos, având capacitatea de a orchestra atât aplicații, cât și cadre.

Apache Mesos este un manager de cluster open-source. Mesos este un proiect de la Apache, care are capacitatea de a rula atât sarcini de lucru containerizate, cât și non-containerizate. Componentele majore dintr-un cluster Mesos sunt: noduri Mesos Agent, Mesos Master, ZooKeeper, Framework-uri (care se coordonează cu masterul pentru a programa sarcini pe nodurile agent). Utilizatorii interacționează cu cadrul Marathon pentru a programa sarcinile.

Programatorul Marathon folosește ZooKeeper pentru a localiza masterul curent, la care să trimită sarcinile. Programatorul de maraton și masterul Mesos au o funcție de master secundar, pentru a asigura o disponibilitate ridicată. Clienții interacționează cu Marathon folosind API-ul REST.

Caracteristici:

  • Disponibilitate ridicată
  • Aplicații cu stare
  • Interfață de utilizare atractivă și eficientă
  • Constrângeri
  • Descoperirea serviciilor și echilibrarea sarcinii
  • Controale de sănătate
  • Abonament la evenimente
  • Metrici
  • API-uri REST

Cloudify

Cloudify este un instrument open-source de orchestrare în cloud, utilizat pentru automatizarea implementării și gestionarea ciclului de viață al containerelor și microserviciilor. Acesta oferă funcții precum clustere la cerere, auto-vindecare și scalare la nivel de infrastructură. Cloudify poate gestiona infrastructura containerelor și poate orchestra serviciile care rulează pe platforme de containere.

Se poate integra ușor cu managerii de containere bazați pe Docker, inclusiv cu următoarele:

  • Docker
  • Docker Swarm
  • Docker Compose
  • Kubernetes
  • Apache Mesos

Cloudify poate ajuta la crearea, recuperarea, scalarea și distrugerea clusterelor de containere. Orchestrarea containerelor este esențială în furnizarea unei infrastructuri scalabile și cu disponibilitate ridicată, pe care managerii de containere pot rula. Cloudify oferă capacitatea de a orchestra servicii eterogene pe platforme. Puteți implementa aplicații utilizând CLI-ul și Cloudify Manager.

Rancher

Rancher este o platformă open-source care folosește orchestrarea containerelor cunoscută sub numele de cattle. Acesta permite utilizarea de servicii de orchestrare precum Kubernetes, Swarm, Mesos. Rancher oferă software-ul necesar pentru a gestiona containerele, astfel încât organizațiile să nu mai fie nevoite să construiască platforme de servicii de containere de la zero, utilizând un set diferit de tehnologii open source.

Rancher 2.x permite gestionarea clusterelor Kubernetes care rulează pe furnizorii specificați de client.

Începerea cu Rancher este un proces în doi pași.

Pregătiți o gazdă Linux

Pregătiți o gazdă Linux cu Ubuntu 16.04 sau 18.04 pe 64 de biți (sau altă distribuție Linux acceptată) și cel puțin 4 GB de memorie. Instalați o versiune acceptată de Docker pe gazdă.

Porniți serverul

Pentru a instala și rula Rancher, executați următoarea comandă Docker pe gazda dvs.:

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

Interfața cu utilizatorul Rancher permite gestionarea a mii de clustere și noduri Kubernetes.

Containership

Containership este conceput pentru a permite implementarea și gestionarea infrastructurii Kubernetes multi-cloud. Este flexibil, funcționând în medii publice, private și on-premise, printr-un singur instrument. Acesta permite furnizarea, gestionarea și monitorizarea clusterelor Kubernetes la toți furnizorii principali de cloud.

Containership este construit folosind instrumente native din cloud, precum Terraform pentru alocare, Prometheus pentru monitorizare și Calico pentru rețele și gestionarea politicilor. Acesta este construit pe Kubernetes Vanilla. Platforma Containership oferă un tablou de bord intuitiv, precum și un API REST eficient, pentru automatizări complexe.

Caracteristici:

  • Tablou de bord Multi-cloud
  • Jurnalele de audit
  • Suport pentru instanțe GPU
  • Upgrade-uri fără întreruperi
  • Master programabile
  • Metrici integrate
  • Înregistrare în timp real
  • Implementări fără timpi de nefuncționare
  • Suport de stocare persistent
  • Suport pentru registru privat
  • Autoscalare a sarcinii de lucru
  • Managementul cheilor SSH

AZK

AZK este un instrument de orchestrare open-source pentru medii de dezvoltare, care utilizează un fișier manifest (Azkfile.js). Acesta ajută dezvoltatorii să instaleze, să configureze și să ruleze instrumente folosite frecvent pentru dezvoltarea aplicațiilor web cu diferite tehnologii open-source.

AZK folosește containere în loc de mașini virtuale. Containerele sunt similare cu mașinile virtuale, oferind performanțe mai bune și un consum mai mic de resurse fizice.

Fișierele Azkfile.js pot fi reutilizate pentru a adăuga componente noi sau pentru a crea altele noi de la zero. Acestea pot fi partajate, asigurând paritatea totală între mediile de dezvoltare din mașinile diferiților programatori, reducând astfel șansele de erori în timpul implementării.

GKE

GKE oferă o soluție complet gestionată pentru orchestrarea aplicațiilor container pe Google Cloud Platform. Clusterele GKE sunt alimentate de Kubernetes. Puteți interacționa cu clusterele folosind Kubernetes CLI. Comenzile Kubernetes pot fi utilizate pentru a implementa și gestiona aplicații, a efectua sarcini de administrare, a seta politici și a monitoriza starea sarcinilor de lucru implementate.

Imagine de pe GCP

Funcții avansate de gestionare ale Google Cloud sunt disponibile și cu clusterele GKE, cum ar fi echilibrarea încărcăturii Google Cloud, grupurile de noduri, scalarea automată a nodurilor, actualizări automate, recuperarea automată a nodurilor, înregistrarea în jurnal și monitorizarea cu suita de operațiuni Google Cloud.

Google Cloud oferă instrumente CI/CD pentru a vă ajuta să construiți și să furnizați containere de aplicații. Puteți folosi Cloud Build pentru a crea imagini container (cum ar fi Docker) dintr-o varietate de depozite de cod sursă și Container Registry pentru a stoca imaginile containerului.

GKE este o soluție pregătită pentru întreprindere, cu șabloane de implementare prefabricate.

Vă interesează să învățați GKE? Consultați acest curs pentru începători.

AKS

AKS este un serviciu Kubernetes complet gestionat, oferit de Azure, care furnizează Kubernetes serverless, securitate și guvernanță. AKS gestionează clusterul dvs. Kubernetes și vă permite să implementați cu ușurință aplicații containerizate. AKS configurează automat toate nodurile și masterul Kubernetes. Trebuie doar să gestionați și să întrețineți nodurile de agent.

Imagine de pe Azure

AKS este gratuit; plătiți doar pentru nodurile de agent din clusterul dvs. și nu pentru master. Puteți crea un cluster AKS în portalul Azure sau în mod programatic. Azure oferă, de asemenea, funcții suplimentare, cum ar fi rețele avansate, integrarea Azure Active Directory și monitorizarea folosind Azure Monitor.

AKS acceptă și containerele Windows Server. Performanța clusterului și a aplicațiilor implementate poate fi monitorizată din Azure Monitor. Jurnalele sunt stocate într-un spațiu de lucru Azure Log Analytics.

AKS a fost certificat ca fiind conform Kubernetes.

AWS EKS

AWS EKS este un serviciu Kubernetes complet gestionat. AWS vă permite să rulați clusterul EKS folosind AWS Fragrate, un serviciu de calcul serverless pentru containere. Fragrate elimină necesitatea de a aloca și gestiona servere, permițând plata în funcție de resursele consumate per aplicație.

AWS permite utilizarea de caracteristici suplimentare cu EKS, cum ar fi Amazon CloudWatch, Amazon Virtual Private Cloud (VPC), AWS Identity, Auto Scaling Groups și Access Management (IAM), aplicații de monitorizare, scalare și echilibrare a încărcăturii. EKS se integrează cu AWS App Mesh și oferă o experiență nativă Kubernetes. EKS rulează cea mai recentă versiune Kubernetes și este certificat în conformitate cu Kubernetes.

Concluzie

Sper că lista de mai sus v-a oferit o înțelegere clară a diferitelor instrumente de orchestrare a containerelor. Acum, în funcție de cazurile dvs. specifice de utilizare, ar trebui să fie mai ușor să alegeți cel mai potrivit instrument.

Apoi, vă invităm să explorați și software-ul de management Kubernetes.