Hvilken containerorkestering er bedst for dig?

Mange valgmuligheder præsenteres for informationsteknologi (IT)-teams, når de kører containeriserede applikationer, der adresserer alle niveauer af teknisk ekspertise.

Det kan være svært at vælge en, i betragtning af, at efter at have truffet dit valg, vil du sandsynligvis ikke migrere til en anden mulighed snart.

Dette indlæg kontrasterer to vægtige muligheder: Amazon Elastic Container Service (ECS) og Kubernetes.

Begge er egnede platforme inden for containerorkestrering og administration af mikrotjenester. Og lige før du går videre, skader en genopfriskning på containere ikke. Containere er blevet populært for at lette kodeudvikling, promovering og implementering på tværs af mange miljøer. De er abstraktioner på applikationslag, indpakning af kode med nødvendige afhængigheder, biblioteker og miljøindstillinger i en eksekverbar pakke.

Mens hovedformålet med at bruge containere er at forenkle kodeimplementeringsprocessen, bliver det stadig mere udfordrende at administrere tusindvis af dem. En anden mekanisme er nødvendig for at implementere yderst pålidelige implementeringer, skalere applikationer efter belastning, udskifte usunde beholdere med nye, belastningsbalancering og eksponere porte.

Det er her, containerorkestrering kommer til hjælp. Bortset fra det, er der behov for midlerne til at køre containere og administrere deres overordnede infrastruktur. Mange værktøjer er tilgængelige til at løse dette problem, men lad os begrænse fokus til nogle få.

Dette stykke sammenligner ECS og Kubernetes, fremhæver fordelene ved hver, og afslutter med en vejledning om at vælge den rigtige baseret på dit projekt.

Hvad er Amazon ECS?

Amazon ECS er en containerorkestreringstjeneste, der strømliner implementering, styring og skalering af containeriserede applikationer. Grundlæggende definerer du din ansøgning og dens nødvendige ressourcer. Derefter lancerer, overvåger og skalerer Amazon ECS din app på tværs af beregningsmuligheder, mens den tillader integration af andre nødvendige AWS-tjenester. For eksempel kan du kontrollere status og ændre dine klynger programmatisk.

ECS giver dig mulighed for at implementere dine apps gennem en gruppe af servere, kaldet klynger, ved hjælp af opgavedefinitioner og applikationsprogramgrænseflader (API)-kald.

Læs også: Hvilke AWS EC2-instanser skal du bruge?

Fordele ved Amazon ECS

  • Traditionel ECS – Denne version blev lanceret i 2015 og er drevet af Amazon EC2 til nemt at køre Dockers-containere i skyen. Traditionel ECS giver dig underliggende kontrol over EC2-muligheder, hvilket giver mulighed for fleksibilitet. Det betyder, at du vælger de typer forekomster, du gerne vil køre på din container. Modellen tilslutter dig yderligere andre AWS-tjenester, som du kan bruge til at overvåge og logge aktivitet på EC2-instanserne.
  • Fargate ECS – Udgivet i 2017 for at køre containere uden behov for at administrere underliggende EC2-beregningsmuligheder. Fargate tager en anden tilgang ved at beregne den nødvendige CPU og hukommelse. Hvis du gerne vil have arbejdsbelastninger op at køre hurtigt, kan dette være din bedste mulighed, da du ikke behøver at bekymre dig om de underliggende computermuligheder.
  • Forenklede applikationsarkitekturer – ECS er en god mulighed for applikationer med få mikrotjenester (dem med få eksterne afhængigheder eller få bevægelige dele), der arbejder uafhængigt.
  • Nem overvågning og logning – Du kan nemt integrere ECS med AWS-lognings- og overvågningsværktøjer som CloudWatch. Du behøver ikke at konfigurere synlighed i containerarbejdsbelastninger, hvilket sparer dig noget tid.
  • Nem indlæringskurve – ECS er let at lære. Hosted Kubernetes vinder mere popularitet end traditionelle modeller som KOPS-flavors og Kubeadm.
  • Serverløs infrastruktur – ECS giver dig mulighed for at køre containere uden behov for at administrere virtuelle maskiner; installerer containere, mens de er fri for menneskelig indgriben.
  • Indbygget sikkerhed – Som standard er Amazon ECS sikret og kaskaderer sikkerhedsforanstaltningerne gennem en isoleret Virtual Private Cloud-netværksmekanisme.
  •   Sådan konfigureres Apache HTTP med SSL-certifikat?

    Begrænsninger af ECS

  • Begrænset lagerplads – Ekstern lagerplads er udelukkende begrænset til Amazon, op til Amazon EBS.
  • Valideringsbegrænsninger – ECS er et Amazon-baseret produkt, og derfor ikke tilgængeligt for offentlige implementeringer uden for Amazon.
  • Leverandørlåsning – ECS er forudindtaget; den kan kun administrere sine oprettede containere.
  • ECS-kode utilgængelig – Meget af ECS-koden er ikke offentligt tilgængelig. Værktøjer som AWS Blox (en ramme til at bygge brugerdefinerede skemalæggere) har en meget lille del af deres kodebaser open source.
  • Hvad er Kubernetes?

    Kubernetes, almindeligvis kaldet K8s, er en open source-software til automatisering af containeriserede applikationers udrulning, skalering og administration.

    Ved at udnytte 15 års erfaring med at køre Google-produktionsarbejdsbelastninger (ved at kombinere de bedste ideer og fællesskabspraksis), grupperer K8s dine applikationscontainere i logiske enheder, som du nemt kan finde og administrere.

    Derudover K8s’ primære funktioner, såsom belastningsbalancering, vedvarende lagring, automatiserede rollbacks for containeriserede apps, hemmeligheder, selvhelbredelse for Kubernetes-klynger og konfigurationsstyring.

    Læs også: Kom godt i gang med Kubernetes: En introduktion til begyndere

    Fordele ved Kubernetes

  • Open source (ingen leverandørlåsning) – Uanset om det kører on-premise eller i skyen, kan du bruge Kubernetes uden at ændre orkestreringsstrategien. I modsætning til traditionel software, der medfører nogle licensgebyrer, er K8s gratis og open source. Som om det ikke er nok, kører K8s-klynger på tværs af offentlige og private skyer og leverer virtualiseringsressourcer på begge enheder.
  • Kraftig fleksibilitet – K8s er en fantastisk løsning, hvis dine applikationer har brug for høj tilgængelighed, samtidig med at de understøtter effektivitet og skalerbarhed. Denne egenskab er taktisk nyttig i applikationer, der genererer højindkomstindtægter. Kort sagt er det detaljeret kontrol over dine arbejdsbelastninger. I tilfælde, hvor du gerne vil skifte dine applikationer til mere kraftfulde platforme, er K8s ikke begrænset til leverandørlåse som ECS.
  • Høj tilgængelighed – Som nævnt ovenfor er K8s design gearet til at give tilgængeligheden af ​​applikationer og deres nødvendige infrastruktur, hvilket gør det til en nødvendig funktion for containere under produktion. Under høj tilgængelighed er der et par teknikker:
    • Sundhedstjek og selvhelbredelse – Kubernetes beskytter dine applikationer mod fejl gennem regelmæssige inspektioner af noder. Hvis en pod eller container bliver knust på grund af en fejl, benytter K8s automatisk en erstatning.
    • Lastbalancering og trafikdirigering – Med hensyn til trafikdirigering vil K8s kun sende anmodninger til de relevante containere. Og med belastningsbalancering distribuerer K8s belastninger på tværs af pods, og balancerer dine ressourcer i flere tilfælde, f.eks. udfald, tilfældig spidsbelastning eller batchbehandling. Igen kan du også bruge eksterne load balancere, hvis du vil.
  • Skalerbarhed for arbejdsbyrder – Mens det er nævnt ovenfor, lad os nedbryde det yderligere. K8s bruger sine ressourcer til at levere effektiv skalering i følgende kriterier.
    • Auto-skalering – Denne funktion giver dig mulighed for automatisk at justere antallet af kørende containere i henhold til CPU-udnyttelse og andre CPU-metrikker.
    • Manuel skalering – Ved hjælp af denne funktion kan du skalere antallet af kørende containere gennem kommandolinjen eller grænsefladen.
    • Replikeringscontroller – Dette værktøj giver dig mulighed for at bestemme antallet af pods, der matcher din klyngespecifikation; hvis der er få, starter det nyt, og hvis der er for mange, afslutter det dem.
      Sådan får du adgang til blokerede websteder på en computer eller mobilenhed
  • Designet til implementering – K8s er specielt designet til at fremskynde processen med at bygge, teste og sende software. Her er nogle af dets tilbudte funktioner:
    • Automatiserede tilbagerulninger og udrulninger – Du vil måske udrulle nogle nye konfigurationer eller applikationsopdateringer under udviklingen. K8s giver dig mulighed for at gennemføre processen uden nedetid for programmet. I tilfælde af en fejl ruller K8’ere robotisk tilbage til den tidligere version.
    • Canary-implementeringer – Du kan drage fordel af denne funktion ved at teste nye implementeringer i produktion parallelt med den tidligere version; K8s giver dig mulighed for at nedskalere den seneste version af appen, mens du samtidig skalerer den seneste version op.
    • Diverse understøttelse af programmeringssprog og -frameworks – Uanset om du kommer fra Go-, Java- eller .Net-programmeringssprogets baggrund, understøtter Kubernetes mange udviklingssprog og -frameworks. Hvis en app kan køre på en container, kører den på K8s.
  • Tjenesteopdagelse – Enhver udvikler ønsker, at alle leverede tjenester har en måde at kommunikere med hinanden på. K8s driftsmodel involverer dog kontinuerligt at skabe og ødelægge containere, hvilket gør nogle tjenester ikke-eksisterende på bestemte steder. I traditionel udvikling vil et serviceregister blive tilpasset til at spore disse tjenesters placering. K8s løser dette problem gennem et indbygget servicekoncept til at gruppere pods og finde tjenester problemfrit. Så K8s leverer IP-adresser til alle pods, tildeler DNS-navne for hvert podsæt og balancerer derefter belastningstrafikken på hvert podsæt. Denne arkitektur genererer et miljø, hvor serviceopdagelse abstraheres fra hver container.
  • Vibrant Community – K8s er bakket op af et levende fællesskab med tusindvis af udviklere, der udnytter deres tjenester. I skrivende stund bruger over 100 millioner udviklere K8’er til at opdage og bidrager med 330 millioner projekter. Fællesskabet viser ingen tegn på at bremse og opfordrer til samarbejde mellem udviklere.
  • Begrænsninger af Kubernetes

  • Stejl læringskurve – For at komme i gang med Kubernetes skal du forstå dets landskab. Desuden kræver levering af en end-to-end-løsning inklusion af en række forskellige teknologier og tjenester. Og med de supplerende teknologier, der varierer betydeligt (til tider, nogle løsninger går tilbage til UNIX-dominerede, mens andre er nye teknologier med en lav anvendelse), kan det være hektisk at finde ud af, hvilke der skal inkluderes. Du skal også finde ud af, hvordan alle komponenter passer sammen for at give en mere omfattende løsning til bestemte problemer. Dokumentationen er tilgængelig, men du skal forstå, hvordan du leverer og administrerer disse tjenester.
  • Differentiering af funktioner og projekter – At forstå forskellene mellem projekter og funktioner kan være udfordrende. Selvom du nemt kan få råd om styring af projekter, får du muligvis ikke en klar skelnen mellem funktioner og fællesskabsprojekter.
  • Viden ud over Kubernetes – Kubernetes er en sofistikeret platform. Med al denne kompleksitet i at levere løsninger, vil du sandsynligvis støde på en vis forvirring, især hvis du er ny til det. Alligevel ønsker organisationer stadig at levere løsninger (som datalagre-som-en-tjeneste), hvilket forstærker indlæringskurven. Hvis du bruger sådanne tjenester på dit produkt, skal du udvide din viden ud over Kubernetes.
  • Det er svært at administrere Kubernetes – At komme i produktion med K8s er én ting. Du skal levere alle de nødvendige ressourcer til dine applikationer for at kunne administrere det. Du skal også håndtere al sikkerheden og integrere den med din infrastruktur. Du har også brug for ekspertise på højt niveau for at behandle og betjene dets værktøjer effektivt. Du skal have dybtgående viden til at administrere Kubernetes-klynger, overvåge og fejlfinde klynger og støtte dem i stor skala.
  •   5000+ sjove Kahoot-navne

    Sammenligning af ECS og Kubernetes

    Her er en side-by-side sammenligning, der viser forskellene:

    Point of differenceKubernetesAmazon ECSApplication definitionApplikationer implementeres ved at kombinere pods, noder og services.Applikationsimplementering tager form af opgaver. Opgaverne er containerinstanser – for eksempel Docker-containere, der kører på ECS-instanser.DeploymentComplex, da du skal implementere og konfigurere klynger manuelt.Nem implementering via AWS-konsollen.Nodeunderstøttelse (antal maskiner)5000 noder pr. klynge.1000 noder pr. .ContainereOp til 300.000 containere pr. klynge.Begrænset af udnyttet infrastrukturkapacitet.Load balancingPods eksponeres gennem tjenester, der bruges som load balancers bag indgangscontrollere.To load balancers tilgængelige; ELB-Application eller Network.PricingFree.ECS er gratis, men du skal betale for EC2-ressourcer.OptimeringGodt optimeret til en enkelt stor klynge.Forudkonfigureret med krav og containerkrav.AutoskaleringDu definerer autoskaleringsparametre, når du bygger implementeringer.Du bruger overvågningstjenester som CloudWatch til automatisk skalering baseret på CPU, hukommelse og brugerdefinerede parametre.SundhedstjekTo sundhedstjek er tilgængelige: parathed og livlighed.Opnås gennem overvågningstjenester som CloudWatch.ServiceopdagelseEnacted gennem miljøvariabler eller DNS.Opnået gennem overvågningstjenester – CloudWatch.Vendor-lock iNej. Ja.

    Use Cases af ECS og Kubernetes

    Sådan revolutionerer ECS og Kubernetes containeriseringsteknologi industrier:

    ECS INC International fremhæver adskillige use cases, hvor ECS-teknologien er blevet implementeret. I moderne medicinsk udstyr finder du revolutionerede metoder til behandling af patienter og medicinafgivelsesteknikker. Der findes mange værktøjer, såsom elektroniske inhalatorer, medicinske auto-injektorer og infusionspumper.

    På IoT-domænet har vi smart home-enheder. Hvis du flytter opmærksomheden til bilindustrien, har vi smarte elbiler med forbedret køreoplevelse og forbedrede sikkerhedsforanstaltninger som assisterede bremsesystemer.

    Indtil videre er det toppen af ​​isbjerget; du kan tjekke flere applikationer af ECS, der ikke er begrænset til trådløs teknologi, bærbare enheder og industrielle brugssager.

    På den anden ende har Kubernetes sin andel af praktiske applikationer. For det første tilbyder IBM-skyen private, offentlige og hybride funktioner på tværs af en lang række kørselstider.

    Spotify, en gigant inden for musikstreaming, udnytter Kubernetes-teknologien til at lette problemfri drift, op til 10 millioner anmodninger i sekundet. Selvom disse er brugssager i den virkelige verden, betjener K8s flere funktionaliteter i mikroservicearkitektur, cloud-native netværksfunktioner, maskinlæring og omdrejning af softwareudviklingens livscyklus.

    Afsluttende ord

    Efter at have gennemgået denne guide har du et solidt overblik over fordele og ulemper ved at vælge enten ECS eller K8’er. Nøglen til at vælge den rigtige løsning er baseret på nogle få argumenter. Du bliver nødt til at veje mellem omkostninger, servicebegrænsninger og talentomkostninger.

    Hvis du gerne vil bruge en gratis tjeneste, vil K8s være dit første valg. Du skal dog have solide talenter eller færdigheder for at håndtere den kompleksitet, der følger med. Selvom K8s ikke har begrænsninger for leverandørlåsning, vil det kræve en dybdegående forståelse af, hvordan platformen fungerer. ECS, på den anden side, fik hurtige konfigurationer.

    Tjek derefter den detaljerede guide om Kubernetes vs. Docker.