Care orchestrație container este cea mai bună pentru tine?

Multe opțiuni sunt prezentate echipelor de tehnologie a informației (IT) atunci când rulează aplicații containerizate, abordând toate nivelurile de expertiză tehnică.

Poate fi dificil să selectați una, având în vedere că, după ce ați făcut alegerea, probabil că nu veți migra la altă opțiune prea curând.

Această postare contrastează două opțiuni importante: Amazon Elastic Container Service (ECS) și Kubernetes.

Ambele sunt platforme capabile în domeniul orchestrarii containerelor și al managementului microserviciilor. Și chiar înainte de a trece mai departe, o reîmprospătare a containerelor nu dăunează. Containerele au fost popularizate pentru a facilita dezvoltarea, promovarea și implementarea codului în multe medii. Sunt abstracții la nivelurile de aplicație, care împachetează codul cu dependențele necesare, biblioteci și setări de mediu într-un pachet executabil.

În timp ce obiectivul principal al utilizării containerelor este simplificarea procesului de implementare a codului, gestionarea a mii de ele devine din ce în ce mai dificilă. Este necesar un alt mecanism pentru a implementa implementări foarte fiabile, a scala aplicațiile în funcție de încărcare, a schimba containerele nesănătoase cu altele noi, pentru a echilibra încărcătura și pentru a expune porturile.

Acolo vine în ajutor orchestrarea containerelor. Pe lângă asta, este nevoie de mijloace pentru a rula containerele și a gestiona infrastructura lor generală. Sunt disponibile multe instrumente pentru a rezolva această problemă, dar haideți să reducem accentul la câteva.

Această piesă compară ECS și Kubernetes, evidențiind beneficiile fiecăruia și se încheie cu o direcție privind alegerea celui potrivit pe baza proiectului dumneavoastră.

Ce este Amazon ECS?

Amazon ECS este un serviciu de orchestrare a containerelor care simplifică implementarea, gestionarea și scalarea aplicațiilor containerizate. Practic, definiți aplicația dvs. și resursele necesare. Apoi, Amazon ECS lansează, monitorizează și scala aplicația dvs. în diferite opțiuni de calcul, permițând în același timp integrarea altor servicii AWS necesare. De exemplu, puteți verifica starea și modifica clusterele în mod programatic.

ECS vă permite să vă implementați aplicațiile printr-un grup de servere, numite clustere, folosind definiții de sarcini și apeluri de interfețe de program de aplicație (API).

Citiți și: Ce instanțe AWS EC2 ar trebui să utilizați?

Avantajele Amazon ECS

  • ECS tradițional – Această versiune a fost lansată în 2015 și este alimentată de Amazon EC2 pentru a rula containerele Dockers cu ușurință în cloud. ECS tradițional vă oferă controlul de bază asupra opțiunilor EC2, permițând flexibilitate. Înseamnă că alegeți tipurile de instanțe pe care doriți să le rulați pe containerul dvs. Modelul vă conectează în continuare cu alte servicii AWS pe care le puteți utiliza pentru a monitoriza și a înregistra activitatea pe instanțele EC2.
  • Fargate ECS – Lansat în 2017 pentru a rula containere fără a fi nevoie de gestionarea opțiunilor de calcul EC2 subiacente. Fargate adoptă o abordare diferită prin calcularea CPU și a memoriei necesare. Dacă doriți să porniți rapid sarcinile de lucru, aceasta ar putea fi cea mai bună opțiune, deoarece nu va trebui să vă faceți griji cu privire la opțiunile de calcul de bază.
  • Arhitecturi simplificate de aplicații – ECS este o opțiune bună pentru aplicațiile cu puține microservicii (cele cu puține dependențe externe sau au câteva părți mobile) care funcționează independent.
  • Monitorizare și înregistrare ușoară – Puteți integra cu ușurință ECS cu instrumente de înregistrare și monitorizare AWS precum CloudWatch. Nu trebuie să configurați vizibilitatea asupra încărcăturilor de lucru ale containerelor, economisindu-vă ceva timp.
  • Curba de învățare ușoară – ECS este ușor de învățat. Kubernetes găzduit câștigă mai multă popularitate decât modelele tradiționale precum KOPS flavors și Kubeadm.
  • Infrastructură fără server – ECS vă permite să rulați containere fără a fi nevoie de gestionarea mașinilor virtuale; desfășoară containere fără intervenție umană.
  • Securitate încorporată – În mod implicit, Amazon ECS este securizat și pune în cascadă măsurile de securitate printr-un mecanism izolat de rețea Virtual Private Cloud.
  •   Dispozitivul dvs. inteligent scump nu poate dura nici un deceniu

    Limitările ECS

  • Stocare limitată – Stocarea externă este limitată exclusiv la Amazon, până la Amazon EBS.
  • Limitări de validare – ECS este un produs bazat pe Amazon, deci indisponibil pentru implementări publice în afara Amazon.
  • Blocarea furnizorului – ECS este părtinitoare; poate gestiona doar containerele create.
  • Indisponibilitatea codului ECS – O mare parte din codul ECS nu este disponibil public. Instrumente precum AWS Blox (un cadru pentru construirea de programatoare personalizate) au o secțiune foarte mică din bazele de cod deschise.
  • Ce este Kubernetes?

    Kubernetes, numit în mod obișnuit K8s, este un software open-source pentru automatizarea implementării, scalarea și administrarea aplicațiilor containerizate.

    Folosind 15 ani de experiență în rularea sarcinilor de lucru de producție Google (combinând cele mai bune idei și practici comunitare), K8s grupează containerele dvs. de aplicații în unități logice pe care le puteți descoperi și gestiona cu ușurință.

    În plus, caracteristicile principale ale K8s, cum ar fi echilibrarea încărcăturii, stocarea persistentă, rollback-urile automate pentru aplicațiile containerizate, secretele, auto-vindecarea pentru clusterele Kubernetes și gestionarea configurației.

    Citește și: Noțiuni introductive cu Kubernetes: o introducere pentru începători

    Avantajele Kubernetes

  • Sursă deschisă (fără blocare a furnizorului) – Indiferent dacă rulați on-premise sau în cloud, puteți utiliza Kubernetes fără a re-arhitecta strategia de orchestrare. Spre deosebire de software-ul tradițional care implică unele taxe de licență, K8s este gratuit și open source. De parcă asta nu ar fi suficient, clusterele K8s rulează pe cloud-uri publice și private, oferind resurse de virtualizare pentru ambele entități.
  • Flexibilitate de mare putere – K8s este o soluție excelentă dacă aplicațiile dvs. au nevoie de disponibilitate ridicată, susținând în același timp eficiență și scalabilitate. Această trăsătură este utilă tactic în aplicațiile care generează venituri mari. Mai simplu spus, este un control granular asupra sarcinilor dvs. de lucru. În cazurile în care doriți să treceți aplicațiile pe platforme mai puternice, K8s nu se limitează la blocarea furnizorilor, cum ar fi ECS.
  • Disponibilitate ridicată – După cum sa menționat mai sus, designul K8s este conceput pentru a oferi disponibilitatea aplicațiilor și a infrastructurii necesare acestora, făcându-l o caracteristică necesară pentru containerele aflate în producție. În condiții de înaltă disponibilitate, există câteva tehnici:
    • Verificări de sănătate și auto-vindecare – Kubernetes vă protejează aplicațiile împotriva defecțiunilor prin inspecții regulate ale nodurilor. Dacă un recipient sau un recipient este zdrobit din cauza unei erori, K8s folosește automat un înlocuitor.
    • Echilibrarea încărcăturii și rutarea traficului – În ceea ce privește rutarea traficului, K8s va trimite cereri doar către containerele corespunzătoare. Și cu echilibrarea încărcăturii, K8s distribuie încărcăturile pe poduri, echilibrând resursele pentru mai multe cazuri, cum ar fi întreruperi, trafic de vârf incidental sau procesare în lot. Din nou, puteți utiliza și echilibrare de încărcare externe, dacă doriți.
  • Scalabilitate a sarcinii de lucru – Deși am menționat mai sus, haideți să o descompunem în continuare. K8s își folosește resursele pentru a oferi scalare eficientă în următoarele criterii.
    • Auto-scaling – Această caracteristică vă permite să ajustați automat numărul de containere care rulează în funcție de utilizarea CPU și alte valori ale CPU.
    • Scalare manuală – Cu ajutorul acestei caracteristici, puteți scala numărul de containere care rulează prin linia de comandă sau interfața.
    • Controler de replicare – Acest instrument vă permite să determinați numărul de poduri care se potrivesc cu specificațiile clusterului dvs.; dacă sunt puține, pornește nou, iar dacă sunt prea multe, le termină.
      Cum să dezactivați backupul și sincronizarea mesajelor AT&T
  • Proiectat pentru implementare – K8s este special conceput pentru a accelera procesul de construire, testare și livrare a software-ului. Iată câteva dintre caracteristicile sale oferite:
    • Rollback-uri și lansări automate – Poate doriți să lansați câteva configurații noi sau actualizări ale aplicațiilor în timpul dezvoltării. K8s vă permite să puneți în aplicare procesul fără întreruperi ale aplicației. În cazul unei defecțiuni, K8s revine automat la versiunea anterioară.
    • Implementări Canary – Puteți profita de această caracteristică testând noi implementări în producție în paralel cu versiunea anterioară; K8s vă permite să reduceți ultima versiune a aplicației în timp ce creșteți simultan cea mai recentă versiune.
    • Suport divers pentru limbaje și cadre de programare – Fie că veniți din limbajul de programare Go, Java sau .Net, Kubernetes acceptă multe limbaje și cadre de dezvoltare. Dacă o aplicație poate rula pe un container, aceasta rulează pe K8s.
  • Descoperirea serviciilor – Fiecare dezvoltator dorește ca toate serviciile furnizate să aibă o modalitate de a comunica între ele. Cu toate acestea, modelul de funcționare K8s presupune crearea și distrugerea continuă a containerelor, făcând unele servicii inexistente în anumite locații. În dezvoltarea tradițională, un registru de servicii ar fi adaptat pentru a urmări locațiile acestor servicii. K8s rezolvă această problemă printr-un concept de serviciu nativ pentru a grupa pod-uri și a descoperi servicii fără probleme. Deci, K8s furnizează adrese IP pentru toate podurile, alocă nume DNS pentru fiecare set de pod și apoi echilibrează traficul de încărcare pe fiecare set de pod. Această arhitectură generează un mediu în care descoperirea serviciului este extrasă din fiecare container.
  • Comunitate vibrantă – K8s este susținut de o comunitate vibrantă, cu mii de dezvoltatori care își folosesc serviciile. La momentul scrierii, peste 100 de milioane de dezvoltatori folosesc K8 pentru a descoperi, contribuind cu 330 de milioane de proiecte. Comunitatea nu dă semne de încetinire și încurajează colaborarea între dezvoltatori.
  • Limitările Kubernetes

  • Curbă abruptă de învățare – Pentru a începe să utilizați Kubernetes, va trebui să înțelegeți peisajul acestuia. În plus, furnizarea unei soluții end-to-end necesită includerea unei varietăți de tehnologii și servicii. Și cu tehnologiile suplimentare care variază semnificativ (uneori, unele soluții datează de la dominația UNIX, în timp ce altele sunt tehnologii noi cu o adopție scăzută), a afla care dintre ele să includă poate fi agitat. De asemenea, ar trebui să vă dați seama cum se potrivesc toate componentele pentru a oferi o soluție mai cuprinzătoare pentru anumite probleme. Documentația este disponibilă, dar va trebui să înțelegeți cum să furnizați și să gestionați aceste servicii.
  • Diferențierea caracteristicilor și proiectelor – Înțelegerea diferențelor dintre proiecte și caracteristici poate fi o provocare. Deși puteți obține cu ușurință sfaturi privind gestionarea proiectelor, este posibil să nu obțineți o distincție clară între caracteristici și proiecte comunitare.
  • Cunoștințe dincolo de Kubernetes – Kubernetes este o platformă sofisticată. Cu toată această complexitate în furnizarea de soluții, probabil că veți întâlni o confuzie, mai ales dacă sunteți nou în acest domeniu. Cu toate acestea, organizațiile încă doresc să ofere soluții (cum ar fi depozitele de date ca serviciu), amplificând curba de învățare. Dacă utilizați astfel de servicii pentru produsul dvs., trebuie să vă extindeți cunoștințele dincolo de Kubernetes.
  • Gestionarea Kubernetes este dificilă – A ajunge la producție cu K8s este un lucru. Va trebui să furnizați toate resursele necesare pentru ca aplicațiile dvs. să le gestioneze. De asemenea, va trebui să gestionați toată securitatea și să o integrați cu infrastructura dvs. De asemenea, veți avea nevoie de o experiență de nivel înalt pentru a procesa și a utiliza instrumentele în mod eficient. Va trebui să obțineți cunoștințe aprofundate pentru a gestiona clusterele Kubernetes, pentru a monitoriza și depana clusterele și pentru a le susține la scară.
  •   12 cele mai bune instrumente de extragere a datelor pentru a vă simplifica procesele de afaceri

    Comparând ECS și Kubernetes

    Iată o comparație una lângă alta care arată diferențele:

    Punct de diferențăKubernetesAmazon ECSDefiniția aplicațieiAplicațiile sunt implementate prin combinarea podurilor, nodurilor și serviciilor. Implementarea aplicației ia forma unor sarcini. Sarcinile sunt instanțe de container – de exemplu, containere Docker care rulează pe instanțe ECS.DeploymentComplex deoarece trebuie să implementați și să configurați clusterele manual. Implementare ușoară prin consola AWS. Suport pentru noduri (număr de mașini)5000 de noduri per cluster.1000 de noduri per cluster. .ContainerePână la 300.000 de containere per cluster.Limitate de capacitatea infrastructurii utilizate.Echilibrarea sarciniiPod-urile sunt expuse prin intermediul serviciilor utilizate ca echilibrare a încărcăturii în spatele controlerelor de intrare.Două echilibrare a încărcăturii disponibile; ELB-Application sau Network.PricingFree.ECS este gratuit, dar trebuie să plătiți pentru resurse EC2.OptimizareBine optimizat pentru un singur cluster mare.Preconfigurat cu cerințe și cerințe de container.AutoscalingDefiniți parametrii de autoscaling atunci când construiți implementări.Utilizați servicii de monitorizare precum CloudWatch la scalare automată pe baza procesorului, memoriei și parametri personalizați. Verificarea sănătății Sunt disponibile două verificări de sănătate: pregătirea și gradul de viață. Atinge prin servicii de monitorizare precum CloudWatch. înNu.Da.

    Cazuri de utilizare ale ECS și Kubernetes

    Iată cum tehnologia de containerizare ECS și Kubernetes revoluționează industriile:

    ECS INC International evidențiază numeroase cazuri de utilizare în care tehnologia ECS a fost implementată. În dispozitivele medicale moderne, veți găsi metode revoluționate de tratare a pacienților și tehnici de administrare a medicamentelor. Există multe instrumente, cum ar fi inhalatoarele electronice, auto-injectoarele medicale și pompele de perfuzie.

    În domeniul IoT, avem dispozitive inteligente de acasă. Dacă vă îndreptați atenția către industria auto, avem mașini electrice inteligente cu experiență de conducere îmbunătățită și măsuri de siguranță îmbunătățite, cum ar fi sistemele de frânare asistată.

    Până acum, acesta este vârful aisbergului; puteți verifica mai multe aplicații ale ECS care nu se limitează la tehnologie wireless, dispozitive portabile și cazuri de utilizare industrială.

    Pe de altă parte, Kubernetes are partea sa de aplicații practice. În primul rând, cloud-ul IBM oferă funcționalități private, publice și hibride într-o gamă largă de timpi de execuție.

    Spotify, un gigant în domeniul streamingului muzical, folosește tehnologia Kubernetes pentru a facilita operațiuni fără întreruperi, până la 10 milioane de solicitări pe secundă. Deși acestea sunt cazuri de utilizare din lumea reală, K8s oferă mai multe funcționalități în arhitectura de microservicii, funcții de rețea native din cloud, învățarea automată și pivotarea ciclului de viață al dezvoltării software.

    Cuvinte finale

    După ce ați parcurs acest ghid, aveți o imagine de ansamblu solidă a meritelor și a dezavantajelor optării fie pentru ECS, fie pentru K8. Cheia pentru alegerea opțiunii potrivite se bazează pe câteva argumente. Va trebui să cântăriți între costuri, limitările serviciilor și costurile talentelor.

    Dacă doriți să utilizați un serviciu gratuit, K8s va fi alegerea dvs. numărul unu. Cu toate acestea, veți avea nevoie de talent sau abilități solide pentru a gestiona complexitatea care vine cu el. Deși K8s nu are limitări de blocare a furnizorului, va necesita o înțelegere aprofundată a modului în care funcționează platforma. ECS, pe de altă parte, a primit configurații rapide.

    Apoi, consultați ghidul detaliat despre Kubernetes vs. Docker.