K8s/Kubernetes: AWS vs. GCP vs. Azure
Publicat: 2022-03-11Kubernetes (deseori stilizat „K8s”) a câștigat bătălia instrumentelor de orchestrare a containerelor cu ani în urmă. Cu toate acestea, există încă multe modalități de a implementa Kubernetes astăzi și de a-l face să funcționeze cu diverse infrastructuri și multe instrumente - unele mai bine întreținute decât altele. Totuși, probabil cea mai interesantă dezvoltare în acest sens este că cei mai buni furnizori de cloud au decis să-și lanseze propriile versiuni Kubernetes gestionate:
- Microsoft Azure oferă serviciul Azure Kubernetes (AKS)
- AWS oferă Amazon Elastic Kubernetes Service (EKS)
- Google Cloud oferă Google Kubernetes Engine (GKE)
Din perspectiva DevOps, ce oferă aceste platforme? Își respectă promisiunile? Cum se compară timpul lor de creare și alte repere? Cât de bine se integrează cu platformele lor respective, în special cu instrumentele CLI? Cum este să întreținem și să lucrezi cu ei? Mai jos, vom aprofunda aceste întrebări și multe altele.
Notă: Pentru cititorii care ar dori să fie explicate conceptele unui cluster Kubernetes înainte de a citi mai departe, Dmitriy Kononov oferă o introducere excelentă.
AKS vs. EKS vs. GKE: Funcții anunțate
Am decis să grupăm diferitele funcții disponibile pentru fiecare versiune Kubernetes gestionată în silozuri:
- Prezentare globală
- Rețele
- Scalabilitate și performanță
- Securitate și monitorizare
- Ecosistem
- Prețuri
Notă: Aceste detalii se pot schimba în timp, deoarece furnizorii de cloud își actualizează în mod regulat produsele.
Prezentare globală
Aspect de serviciu | AKS | EKS | GKE |
---|---|---|---|
Anul lansării | 2017 | 2018 | 2014 |
Ultima versiune | 1.15.11 (implicit) - 1.18.2 (previzualizare) | 1.16.8 (implicit) | 1.14.10 (implicit) - 1.16.9 |
Componente specifice | oms-agent, front tunel | aws-node | fluentd, fluentd-gcp-scaler, exportator de evenimente, l7-default-backend |
Upgrade Kubernetes Control Plane | Manual | Manual | Automat (implicit) sau manual |
Upgrade-uri pentru muncitori | Manual | Da (ușor cu grupuri de noduri gestionate) | Da: automat și manual, posibilă reglare fină |
SLA | 99,95 la sută cu zonă de disponibilitate, 99,9 la sută fără | 99,9 la sută pentru EKS (master), 99,99 la sută pentru EC2 (noduri) | 99,95 la sută într-o regiune, 99,5 la sută într-o zonă |
Suport nativ nativ | Nu | Nu | Nu (dar instalarea nativă Istio) |
Prețul avionului de control Kubernetes | Gratuit | 0,10 USD/oră | 0,10 USD/oră |
Kubernetes însuși a fost proiectul Google, așa că are sens că au fost primii care au propus o versiune găzduită în 2014.
Dintre cele trei comparate aici, Azure a fost următorul cu AKS și a avut timp să se îmbunătățească: dacă vă amintiți acs-engine, care a fost folosit pentru furnizarea Kubernetes pe Azure cu câțiva ani în urmă, veți aprecia efortul Microsoft pentru înlocuirea acestuia, aks-motor.
AWS a fost ultimul care a lansat propria sa versiune, EKS, așa că uneori poate părea să fie în urmă în ceea ce privește caracteristicile, dar ajung din urmă.
În ceea ce privește prețurile, desigur, lucrurile se mișcă mereu, iar Google a decis să se alăture AWS la prețul său de 0,10 USD/oră, în vigoare din iunie 2020. Azure este străin aici, oferind gratuit serviciul AKS, dar nu este clar cum mult timp care poate dura.
O altă diferență principală constă în caracteristica de actualizare a clusterului. Cele mai automate upgrade-uri sunt în GKE și sunt activate implicit. Totuși, AKS vs. EKS sunt similare unul cu celălalt aici, în sensul că ambele necesită solicitări manuale pentru a putea face upgrade nodurilor master sau worker.
Rețele
Aspect de serviciu | AKS | EKS | GKE |
---|---|---|---|
Politici de rețea | Da: Politici de rețea Azure sau Calico | Trebuie să instalați Calico | Da: nativ prin Calico |
Echilibrarea sarcinii | Echilibrator de încărcare SKU de bază sau standard | Echilibrator de încărcare clasic și de rețea | Echilibrator de încărcare nativ pentru container |
Service Mesh | Nici unul din cutie | AWS App Mesh (bazat pe Envoy) | Istio (din cutie, dar beta) |
Suport DNS | Personalizare CoreDNS | CoreDNS + Route53 în interiorul VPC | CoreDNS + Google Cloud DNS |
În ceea ce privește rețeaua, cei trei furnizori de cloud sunt foarte apropiați unul de celălalt. Toate le permit clienților să implementeze politici de rețea cu Calico, de exemplu. În ceea ce privește echilibrarea sarcinii, toți implementează integrarea lor cu propriile resurse de echilibrare a încărcăturii și oferă inginerilor posibilitatea de a alege ce să folosească.
Principala diferență găsită aici se bazează pe valoarea adăugată a rețelei de servicii. AKS nu acceptă nicio rețea de serviciu imediată (deși inginerii pot instala manual Istio). AWS și-a dezvoltat propria rețea de servicii numită App Mesh. În cele din urmă, Google și-a lansat propria integrare cu Istio (deși încă în versiune beta) pe care clienții o pot adăuga direct atunci când creează clusterul.
Cel mai bun pariu: GKE
Scalabilitate și performanță
Aspect de serviciu | AKS | EKS | GKE |
---|---|---|---|
Noduri Bare Metal | Nu | da | Nu |
Numărul maxim de noduri per cluster | 1.000 | 1.000 | 5.000 |
Cluster de înaltă disponibilitate | Nu | Da pentru planul de control, manual în AZ pentru lucrători | Da, prin cluster regional, master și lucrător sunt replicate |
Scalare automată | Da prin intermediul autoscalerului cluster | Da prin intermediul autoscalerului cluster | Da prin intermediul autoscalerului cluster |
Autoscaler vertical Pod | Nu | da | da |
Pool-uri de noduri | da | da | da |
Noduri GPU | da | da | da |
La premiu | Disponibil prin Azure ARC (beta) | Nu | GKE on-prem prin Anthos GKE |
În ceea ce privește performanța și scalabilitatea GKE vs. AKS vs. EKS, GKE pare să fie în frunte. Într-adevăr, acceptă cel mai mare număr de noduri (5.000) și oferă o documentație extinsă despre cum să scalați corect un cluster. Toate funcțiile pentru disponibilitate ridicată sunt disponibile și sunt ușor de ajustat. În plus, GKE a lansat recent Anthos, un proiect de creare a unui ecosistem în jurul GKE și a funcționalităților sale; cu Anthos, puteți implementa GKE on-prem.
AWS are totuși un avantaj cheie: este singurul care permite nodurilor bare-metal să ruleze cluster-ul Kubernetes.
Din iunie 2020, AKS nu are o disponibilitate ridicată pentru master, care este un aspect important de luat în considerare. Dar, ca întotdeauna, asta s-ar putea schimba în curând.
Cel mai bun pariu: GKE
Securitate și monitorizare
Aspect de serviciu | AKS | EKS | GKE |
---|---|---|---|
Criptarea secretelor aplicației | Nu | Da, posibil prin AWS KMS | Da, posibil prin Cloud KMS |
Conformitate | HIPAA, SOC, ISO, PCI DSS | HIPAA, SOC, ISO, PCI DSS | HIPAA, SOC, ISO, PCI DSS |
RBAC | da | Da, și integrare puternică cu IAM | da |
Monitorizarea | Caracteristica de sănătate a containerului Azure Monitor | Monitorizarea planului de control Kubernetes conectată la Cloudwatch, Container Insights Metrics pentru noduri | Monitorizarea și integrarea Kubernetes Engine cu Prometheus |
În ceea ce privește conformitatea, toți cei trei furnizori de cloud sunt echivalenti. Cu toate acestea, în ceea ce privește securitatea, EKS și GKE oferă un alt nivel de securitate cu serviciile lor de gestionare a cheilor încorporate.
În ceea ce privește monitorizarea, Azure și Google Cloud oferă propriul ecosistem de monitorizare în jurul Kubernetes. Este de remarcat faptul că cel de la Google a fost actualizat recent pentru a utiliza Kubernetes Engine Monitoring, care este special conceput pentru Kubernetes.
Azure oferă propriul sistem de monitorizare a containerelor, care a fost creat inițial pentru un ecosistem de containere de bază, non-Kubernetes. Au adăugat monitorizare pentru unele valori și resurse specifice Kubernetes (sănătatea clusterului, implementări) — în modul de previzualizare, începând cu iunie 2020.
AWS oferă monitorizare ușoară pentru planul de control direct în Cloudwatch. Pentru a monitoriza lucrătorii, puteți utiliza Metricurile Kubernetes Container Insights furnizate printr-un agent CloudWatch specific pe care îl puteți instala în cluster.
Cel mai bun pariu: GKE
Ecosistem
Aspect de serviciu | AKS | EKS | GKE |
---|---|---|---|
Piata de desfacere | Azure Marketplace (dar fără o integrare clară AKS) | AWS Marketplace (250+ aplicații) | Google Marketplace (+90 de aplicații) |
Suport pentru infrastructură ca cod (IaC). | Modul Terraform Modulul Ansible | Modul Terraform Modulul Ansible | Modul Terraform Modulul Ansible |
Documentație | Comunitate slabă, dar completă și puternică (2.000 de postări Stack Overflow) | Comunitate nu foarte amănunțită, dar puternică (1.500+ de postări Stack Overflow) | Documentație oficială extinsă și comunitate foarte puternică (4.000+ postări Stack Overflow) |
Suport CLI | Complet | Complete, plus instrument special separat eksctl (acoperit mai jos) | Complet |
În ceea ce privește ecosistemele, cei trei furnizori au puncte forte și atuuri diferite. AKS are acum o documentație foarte completă în jurul platformei sale și este al doilea în ceea ce privește postările pe Stack Overflow. EKS are cel mai mic număr de postări pe Stack Overflow, dar beneficiază de puterea AWS Marketplace. GKE, ca cea mai veche platformă, are cele mai multe postări pe Stack Overflow și un număr decent de aplicații pe piața sa, dar și cea mai cuprinzătoare documentație.

Cele mai bune pariuri: GKE și EKS
Prețuri
Aspect de serviciu | AKS | EKS | GKE |
---|---|---|---|
Cap de utilizare gratuită | în valoare de 170 USD | Nu sunt eligibile pentru nivelul gratuit | în valoare de 300 de dolari |
Costul avionului de control Kubernetes | Gratuit | 0,10 USD/oră | 0,10 USD/oră (iunie 2020) |
Preț redus (Instanță spot/Noduri preemptibile) | da | da | da |
Exemplu de preț pentru o lună | 342 USD 3 noduri D2 | 300 USD 3 t3.noduri mari | 190 USD 3 n1-standard-2 noduri |
În ceea ce privește prețul general, chiar și cu mișcarea GKE de a implementa prețul de 0,10 USD/oră pentru orice cluster, acesta rămâne de departe cel mai ieftin cloud. Acest lucru se datorează ceva specific Google: reduceri de utilizare susținută, care se aplică ori de câte ori utilizarea lunară a resurselor la cerere atinge un anumit minim.
Este important de reținut că rândul de preț exemplu nu ia în considerare traficul către clusterul Kubernetes pentru care furnizorul de cloud îl poate percepe.
Motivul pentru care AWS nu permite utilizarea nivelului lor gratuit pentru a testa un cluster EKS este că EKS necesită mașini mai mari decât nivelul tX.micro, iar prețul orar EKS nu este în nivelul gratuit.
Cu toate acestea, poate fi în continuare economic să testați oricare dintre aceste opțiuni Kubernetes gestionate cu o încărcare decentă folosind nodurile spot/preemptibile ale fiecărui furnizor de cloud - această tactică va economisi cu ușurință 80 până la 90% din prețul final. (Desigur, nu este recomandat să rulați încărcări de producție cu stare pe astfel de mașini!)
Caracteristici promovate și avantajul Google
Când ne uităm la diferitele caracteristici promovate online, se pare că există o corelație între cât timp a fost pe piață versiunea Kubernetes gestionată și numărul de funcții. După cum am menționat, Google a fost inițiatorul proiectului Kubernetes pare a fi un avantaj incontestabil, având ca rezultat o integrare mai bună și mai puternică cu propria sa platformă cloud.
Dar AKS și EKS nu trebuie subestimate pe măsură ce se maturizează; ambele pot profita de caracteristicile lor unice. De exemplu, AWS este singurul care are integrare bare-metal nod și, de asemenea, se mândrește cu cel mai mare număr de aplicații de pe piața sa.
Acum că funcțiile afișate pentru fiecare ofertă Kubernetes sunt clare, haideți să facem o scufundare mai profundă cu câteva teste practice.
Kubernetes: AWS vs. GCP vs. Azure în practică
Publicitatea este un lucru, dar cum se compară diferitele platforme când vine vorba de deservirea sarcinilor de producție? În calitate de inginer cloud, știu importanța cât timp durează pentru a se genera și pentru a elimina un cluster atunci când impun infrastructura ca cod. Dar am vrut, de asemenea, să explorez posibilitățile fiecărui CLI și să comentez cât de ușor (sau nu) fiecare furnizor de cloud face generarea unui cluster.
Experiența utilizatorului în crearea unui cluster
AKS
Pe AKS, generarea unui cluster este similară cu crearea unei instanțe în AWS. Găsiți meniul AKS și parcurgeți o serie de meniuri diferite. Odată validată configurația, clusterul poate fi creat, un proces în doi pași. Este foarte simplu, iar inginerii pot lansa cu ușurință și rapid un cluster cu setările implicite.
EKS
Crearea clusterelor este cu siguranță mai complexă pe EKS vs. AKS. În primul rând, și în mod implicit, AWS necesită o călătorie la IAM pentru a crea un nou rol pentru planul de control Kubernetes și pentru a-i atribui inginerului. De asemenea, este important de menționat că această creare a clusterului nu include crearea nodurilor, așa că atunci când am măsurat 11 minute în medie, aceasta este doar pentru crearea principală. Crearea grupului de noduri este un alt pas pentru administrator, având din nou nevoie de un rol pentru lucrători cu trei politici necesare care trebuie făcute prin panoul de control IAM.
GKE
Pentru mine, experiența de a crea un cluster manual este cea mai plăcută pe GKE. După ce ați găsit Kubernetes Engine în Google Cloud Console, faceți clic pentru a crea un cluster. Diferite categorii de setări apar într-un meniu din stânga. Google va prepopula noul cluster cu un pool de noduri implicit ușor de modificat. Nu în ultimul rând, GKE are cel mai rapid timp de generare a clusterelor, ceea ce ne duce la următorul tabel.
E timpul să dai naștere unui cluster
Aspect de serviciu | AKS | EKS | GKE |
---|---|---|---|
mărimea | 3 noduri (Ds2-v2), fiecare având 2 vCPU-uri, 7 GB RAM | 3 noduri t3.mari | 3 noduri n1-standard-2 |
Timp (m:ss) | Media 5:45 pentru un cluster complet | 11:06 pentru master plus 2:40 pentru grupul de noduri (în total 13:46 pentru un cluster complet) | Media 2:42 pentru un cluster complet |
Am efectuat aceste teste în aceeași regiune (Frankfurt și Europa de Vest pentru AKS) pentru a elimina posibilul impact al acestei diferențe asupra timpului de reproducere. De asemenea, am încercat să selectez aceeași dimensiune pentru nodurile pentru cluster: trei noduri, fiecare având două vCPU-uri și șapte sau opt GB de memorie, o dimensiune standard pentru a rula o încărcare mică pe Kubernetes și a începe experimentarea. Am creat fiecare cluster de trei ori pentru a calcula o medie.
În aceste teste, GKE a rămas mult înainte, cu un timp de generare întotdeauna sub trei minute.
Kubernetes: AWS vs. GCP vs. Azure CLI Prezentare generală
Nu toate CLI-urile sunt create egale, dar în acest caz, toate cele trei CLI-uri sunt de fapt module ale unui CLI mai mare. Cum este să pornești cu lanțul de instrumente CLI al fiecărui furnizor de cloud?
AKS CLI (prin az
)
După instalarea instrumentelor az
, apoi a modulului AKS (prin az aks install-cli
), inginerii trebuie să autorizeze CLI să comunice cu contul Azure al proiectului. Aceasta este o chestiune de obținere a acreditărilor pentru a actualiza fișierul local kubeconfig printr-un simplu az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
.
În mod similar, pentru a crea un cluster: az aks create --resource-group myResourceGroup --name myAKSCluster
EKS CLI (prin aws
sau eksctl
)
Pe AWS, găsim o abordare diferită - există două instrumente CLI oficiale diferite pentru a gestiona clusterele EKS. Ca întotdeauna, aws
se poate conecta la resursele AWS, în special la clustere. Obținerea acreditărilor într-un kubeconfig local se poate face prin: aws eks update-kubeconfig --name cluster-test
.
Cu toate acestea, inginerii pot folosi și eksctl
, dezvoltat de Weaveworks și scris în Go, pentru a crea și gestiona cu ușurință un cluster EKS. Un avantaj major pe care EKS îl oferă inginerilor cloud este că îl pot combina cu fișierele de configurare YAML pentru a crea infrastructură-as-code (IaC), deoarece funcționează cu CloudFormation. Este cu siguranță un atu de luat în considerare atunci când integrați un cluster EKS într-o infrastructură mai mare pe AWS.
Crearea unui cluster prin eksctl
este la fel de simplă ca eksctl create cluster
, fără alți parametri necesari.
GKE CLI (prin gcloud
)
Pentru GKE, pașii sunt foarte similari: instalați gcloud
, apoi autentificați-vă prin gcloud init
. Posibilitățile de acolo: Inginerii pot crea, șterge, descrie, obține acreditări pentru, redimensiona, actualiza sau actualiza un cluster sau pot lista clustere.
Sintaxa pentru a crea un cluster cu gcloud
este simplă: gcloud container clusters create myGCloudCluster --num-nodes=1
AKS vs. EKS vs. GKE: rezultate test Drive
În practică, putem vedea că GKE este cu siguranță cel mai rapid pentru a crea un cluster de bază, atât din punct de vedere al simplității consolei, cât și al timpului de generare a clusterului. În ceea ce privește UX, cu butonul de conectare de lângă cluster, ceea ce face și cel mai simplu să se conecteze la un cluster.
În ceea ce privește instrumentele CLI, cei trei furnizori de cloud au implementat funcționalități similare; cu toate acestea, putem pune accent pe instrumentul suplimentar oferit de Weaveworks pentru EKS. eksctl
este instrumentul perfect pentru a implementa infrastructura ca cod pe lângă infrastructura AWS preexistentă, combinând alte servicii cu EKS.
Ofertele Kubernetes gestionate Avanză: AWS vs. GCP vs. Azure
Pentru cei care încep în lumea Kubernetes, implementarea de bază pentru mine este GKE, deoarece este cea mai simplă. Este ușor de configurat, are un UX simplu și rapid pentru generare și este bine integrat în ecosistemul Google Cloud Platform.
Chiar dacă AWS a fost ultimul care s-a alăturat cursei, are câteva avantaje incontestabile, cum ar fi noduri metalice goale și simplul fapt că este integrat cu furnizorul cu cea mai mare partajare a minții.
În cele din urmă, AKS a făcut progrese mari de la crearea sa. Paritatea instrumentelor și a caracteristicilor probabil nu va dura mult, lăsând, între timp, spațiu în procesul de inovare. Și ca și în cazul oricărei oferte Kubernetes gestionate, pentru cei care se află deja pe platforma părinte, integrarea va fi un punct de vânzare.
Odată ce o echipă a ales un furnizor de cloud Kubernetes, ar putea fi interesant să analizăm experiențele altor echipe, în special eșecurile. Aceste autopsie sunt o reflectare a cazurilor din lumea reală – întotdeauna un bun punct de plecare pentru dezvoltarea propriilor bune practici de ultimă oră. Aștept cu nerăbdare comentariile voastre de mai jos!