14 instrumente de orchestrare a containerelor pentru DevOps

Să vorbim despre unele dintre instrumentele populare de orchestrare a containerelor disponibile pe piață.

Ce este o orchestrație container?

Platformele container precum Docker sunt foarte populare în zilele noastre pentru a împacheta aplicații bazate pe o arhitectură de microservicii. Containerele pot fi făcute foarte scalabile, care pot fi create la cerere. Deși acest lucru este bun pentru câteva containere, imaginați-vă că aveți sute de ele.

Devine extrem de dificil să gestionezi ciclul de viață al containerului și gestionarea acestuia atunci când numărul crește dinamic odată cu cererea.

Orchestrarea containerelor rezolvă problema prin automatizarea programării, implementării, scalabilității, echilibrării încărcăturii, disponibilității și conectării în rețea containerelor. Orchestrarea containerelor este automatizarea și gestionarea ciclului de viață al containerelor și serviciilor.

Este un proces de gestionare și organizare a mai multor containere și arhitectură de microservicii la scară.

Din fericire, există multe instrumente de orchestrare a containerelor disponibile pe piață.

Să le explorăm!

Kubernetes

Ai ghicit, nu-i așa?

Kubernetes este o platformă open-source care a fost concepută inițial de Google și întreținută acum de Cloud Native Computing Foundation. Kubernetes acceptă atât configurarea declarativă, cât și automatizarea. Poate ajuta la automatizarea implementării, scalarii și gestionării volumului de lucru și serviciilor containerizate.

Imagine de Kubernetes.io

API-ul Kubernetes ajută la stabilirea comunicării între utilizatori, componentele clusterului și componentele terțe externe. Planul de control Kubernetes și Nodurile rulează pe un grup de noduri care formează împreună clusterul. Volumul de lucru al aplicației constă dintr-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, AppDirect folosesc pe scară largă Kubernetes.

Caracteristici

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

Vrei să înveți Kubernetes? Consultați aceste resurse de învățare.

OpenShift

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

Imagine de Openshift

Este construit pe motorul Redhat Enterprise Linux și Kubernetes. Openshift are diverse funcționalități pentru a gestiona clusterele prin UI și CLI. Redhat oferă Openshift în încă două variante,

  • 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 în amonte, care este 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 pentru a implementa și gestiona containere și aplicații non-containerizate în local și în cloud la scară. Nomad rulează ca un singur binar cu o amprentă mică de resurse (35 MB) și este acceptat pe macOS, Windows și Linux.

Dezvoltatorii folosesc infrastructura-as-code declarativă (IaC) pentru implementarea aplicațiilor lor și definesc modul în care o aplicație ar trebui să fie implementată. Nomad recuperează automat aplicațiile din eșecuri.

Imagine de Nomad

  Cum să adăugați numere de linie la un document Microsoft Word

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

Caracteristici

  • Simplu și de încredere
  • Modernizați aplicațiile vechi fără rescriere
  • Federație ușoară la scară
  • Scalabilitate dovedită
  • Multi-Cloud cu ușurință
  • Integrari native cu Terraform, Consul și Vault

Docker Swarm

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

Imagine de Docker

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

Docker Swarm este format din două componente principale:

  • Manager – nodurile managerului atribuie sarcini nodurilor lucrătoare 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 orchestrare a sarcinilor pentru roi.
  • Worker Node – Worker Node primește sarcini de la nodul manager și le execută.

Caracteristici

  • Managementul clusterelor integrat cu Docker Engine
  • Design descentralizat
  • Model declarativ de serviciu
  • Scalare
  • Reconcilierea de stat dorită
  • Rețea multi-gazdă
  • Descoperirea serviciului
  • Echilibrarea sarcinii
  • Securizat implicit
  • Actualizări în curs

Docker Compose

Docker Compose este pentru definirea și rularea aplicațiilor cu mai multe containere care funcționează împreună. Docker-compose descrie grupuri de servicii interconectate care partajează dependențe de 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 docker-compose.yml arată astfel:

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 utiliza 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ă CLI pentru gestionarea întregului ciclu de viață al aplicațiilor dvs. Docker Compose s-a concentrat în mod tradițional pe fluxurile de lucru de dezvoltare și testare, dar acum se concentrează pe funcții mai orientate spre producție.

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

Caracteristici

  • Mai multe medii izolate pe o singură gazdă
  • Păstrați datele de volum atunci când sunt create containere
  • Recreează numai containerele care s-au schimbat
  • 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

Maraton este pentru Apache Mesos care are capacitatea de a orchestra aplicații, precum ș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 necontainerizate. Componentele majore dintr-un cluster Mesos sunt Mesos Agent Nodes, Mesos Master, ZooKeeper, Frameworks – Frameworks coordonează cu masterul pentru a programa sarcini pe nodurile agent. Utilizatorii interacționează cu cadrul Marathon pentru a programa lucrări.

  Cele mai bune alarme inteligente de fum

Programatorul Marathon folosește ZooKeeper pentru a localiza masterul curent pentru a trimite sarcini. Programatorul de maraton și masterul Mesos au rulare master secundară pentru a asigura o disponibilitate ridicată. Clienții interacționează cu Marathon folosind API-ul REST.

Caracteristici

  • Valabilitate ridicată
  • Aplicații cu stat
  • Interfață de utilizare frumoasă și puternică
  • Constrângeri
  • Descoperirea serviciului și echilibrarea sarcinii
  • Controale de sănătate
  • Abonament la eveniment
  • Metrici
  • API-urile REST

Cloudify

Cloudify este un instrument open-source de orchestrare în cloud pentru automatizarea implementării și gestionarea ciclului de viață al containerelor și microserviciilor. 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.

Poate fi integrat cu ușurință cu managerii de containere bazați pe Docker și Docker, inclusiv cu următoarele.

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

Cloudify poate ajuta la crearea, vindecarea, scalarea și distrugerea clusterelor de containere. Orchestrarea containerelor este esențială în furnizarea unei infrastructuri scalabile și foarte disponibile pe care managerii de containere pot rula. Cloudify oferă capacitatea de a orchestra servicii eterogene pe platforme. Puteți implementa aplicații folosind CLI și Cloudify Manager.

fermier

fermier este o platformă open-source care utilizează orchestrarea containerelor cunoscută sub numele de vite. Vă permite să utilizați servicii de orchestrare precum Kubernetes, Swarm, Mesos. Rancher oferă software-ul necesar pentru a gestiona containerele, astfel încât organizațiile să nu fie nevoite să construiască platforme de servicii de containere de la zero folosind un set distinct 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 a 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 fermierului permite gestionarea a mii de clustere și noduri Kubernetes.

Nava de containere

Containership este pentru a permite implementarea și gestionarea infrastructurii Kubernetes multi-cloud. Este flexibil să funcționeze în medii publice, private și în medii on-premise dintr-un singur instrument. Acesta permite furnizarea, gestionarea și monitorizarea clusterelor dvs. Kubernetes la toți furnizorii importanți de cloud.

Containership-ul este construit folosind instrumente native din cloud, cum ar fi Terraform pentru aprovizionare, Prometheus pentru monitorizare și Calico pentru rețele și managementul politicilor. Este construit pe Vanilla Kubernetes. Platforma Containership oferă un tablou de bord intuitiv, precum și un API REST puternic pentru automatizări complexe.

Caracteristici

  • Tabloul de bord Multicloud
  • Jurnalele de audit
  • Suport pentru instanțele GPU
  • Upgrade-uri fără perturbări
  • 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 printr-un fișier manifest (Azkfile.js), care ajută dezvoltatorii să instaleze, să configureze și să ruleze instrumente utilizate în mod obișnuit pentru dezvoltarea aplicațiilor web cu diferite tehnologii open source.

  Google Foto își pierde spațiul de stocare gratuit: Ce trebuie să știți

AZK folosește containere în loc de mașini virtuale. Containerele sunt ca mașinile virtuale, cu performanțe mai bune și cu 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. Poate fi partajat, ceea ce asigură paritatea totală între mediile de dezvoltare din mașinile diferitelor programatori și reduce ș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 clustere folosind Kubernetes CLI. Comenzile Kubernetes pot fi folosite pentru a implementa și gestiona aplicații, pentru a efectua sarcini de administrare, pentru a seta politici și pentru a monitoriza starea sarcinilor de lucru implementate.

Imagine de 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, upgrade-urile automate, repararea 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ă serviți containere de aplicații. Puteți utiliza 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.

Te interesează să înveți GKE? Verifica asta curs pentru incepatori.

AKS

AKS este un serviciu Kubernetes complet gestionat oferit de Azure, care oferă Kubernetes fără server, securitate și guvernare. AKS vă gestionează clusterul 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 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 acceptă, de asemenea, funcții suplimentare, cum ar fi rețelele avansate, integrarea Azure Active Directory și monitorizarea utilizând Azure Monitor.

AKS acceptă și containerele Windows Server. Performanța cluster-ului și a aplicațiilor implementate pot fi monitorizate 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, care este un calcul fără server pentru containere. Parfumul elimină nevoia de a furniza și gestiona servere, permițând plata per resursă 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ă experiență nativă Kubernetes. EKS rulează cel mai recent Kubernetes și este certificat în conformitate cu Kubernetes.

Concluzie

În cele din urmă, sper că lista de mai sus a oferit o înțelegere corectă a diferitelor instrumente de orchestrare a containerelor, iar acum, în funcție de cazul de utilizare, va fi mai ușor să optați pentru cel mai bun.

Apoi, aflați Software-ul de management Kubernetes.