Hvilken containerorkestering er best for deg?

Mange valg blir presentert for informasjonsteknologi (IT)-team når de kjører containeriserte applikasjoner, som tar for seg alle nivåer av teknisk ekspertise.

Det kan være vanskelig å velge en, med tanke på at du sannsynligvis ikke vil migrere til et annet alternativ når som helst snart.

Dette innlegget kontrasterer to tungtveiende alternativer: Amazon Elastic Container Service (ECS) og Kubernetes.

Begge er dyktige plattformer innen containerorkestrering og administrasjon av mikrotjenester. Og rett før du går videre, skader ikke en oppfriskning på containere. Beholdere har blitt populært for å lette kodeutvikling, promotering og distribusjon på tvers av mange miljøer. De er abstraksjoner på applikasjonslag, pakker kode med nødvendige avhengigheter, biblioteker og miljøinnstillinger inn i en kjørbar pakke.

Mens hovedmålet med å bruke containere er å forenkle kodedistribusjonsprosessen, blir det stadig mer utfordrende å administrere tusenvis av dem. En annen mekanisme er nødvendig for å implementere svært pålitelige distribusjoner, skalere applikasjoner etter belastning, bytte usunne beholdere med nye, lastbalansering og eksponere porter.

Det er der containerorkestrering kommer til hjelp. Bortsett fra det, er det behov for midler til å kjøre containere og administrere deres overordnede infrastruktur. Mange verktøy er tilgjengelige for å løse dette problemet, men la oss begrense fokuset til noen få.

Dette stykket sammenligner ECS og Kubernetes, fremhever fordelene med hver, og avslutter med en veiledning om å velge den riktige basert på prosjektet ditt.

Hva er Amazon ECS?

Amazon ECS er en containerorkestreringstjeneste som effektiviserer distribusjon, administrering og skalering av containeriserte applikasjoner. I utgangspunktet definerer du søknaden din og dens nødvendige ressurser. Deretter lanserer, overvåker og skalerer Amazon ECS appen din på tvers av dataalternativer samtidig som den tillater integrering av andre nødvendige AWS-tjenester. Du kan for eksempel sjekke statusen og endre klyngene dine programmatisk.

ECS lar deg distribuere appene dine gjennom en gruppe servere, kalt klynger, ved å bruke oppgavedefinisjoner og applikasjonsprogramgrensesnitt (API)-kall.

Les også: Hvilke AWS EC2-instanser bør du bruke?

Fordeler med Amazon ECS

  • Tradisjonell ECS – Denne versjonen ble lansert i 2015 og er drevet av Amazon EC2 for å kjøre Dockers-containere enkelt i skyen. Tradisjonell ECS gir deg underliggende kontroll over EC2-alternativer som gir fleksibilitet. Det betyr at du velger hvilke typer forekomster du vil kjøre på beholderen. Modellen kobler deg videre med andre AWS-tjenester som du kan bruke til å overvåke og logge aktivitet på EC2-instansene.
  • Fargate ECS – Utgitt i 2017 for å kjøre containere uten behov for å administrere underliggende EC2-beregningsalternativer. Fargate tar en annen tilnærming ved å beregne nødvendig CPU og minne. Hvis du ønsker å få arbeidsbelastninger i gang raskt, kan dette være det beste alternativet, siden du ikke trenger å bekymre deg for de underliggende databehandlingsalternativene.
  • Forenklede applikasjonsarkitekturer – ECS er et godt alternativ for applikasjoner med få mikrotjenester (de med få eksterne avhengigheter eller har noen få bevegelige deler) som jobber uavhengig.
  • Enkel overvåking og logging – Du kan enkelt integrere ECS med AWS-loggings- og overvåkingsverktøy som CloudWatch. Du trenger ikke å konfigurere synlighet i containerarbeidsbelastninger, noe som sparer deg for litt tid.
  • Enkel læringskurve – ECS er lett å lære. Hosted Kubernetes blir mer populær enn tradisjonelle modeller som KOPS-smaker og Kubeadm.
  • Serverløs infrastruktur – ECS lar deg kjøre containere uten behov for å administrere virtuelle maskiner; distribuerer containere uten menneskelig innblanding.
  • Innebygd sikkerhet – Som standard er Amazon ECS sikret og kaskaderer sikkerhetstiltakene gjennom en isolert Virtual Private Cloud-nettverksmekanisme.
  •   Topp 10 Media Streaming Server for personlig og forretningsbruk

    Begrensninger for ECS

  • Begrenset lagring – Ekstern lagring er utelukkende begrenset til Amazon, opptil Amazon EBS.
  • Valideringsbegrensninger – ECS er et Amazon-basert produkt, og dermed utilgjengelig for offentlige distribusjoner utenfor Amazon.
  • Leverandørlåsing – ECS er partisk; den kan bare administrere de opprettede beholderne.
  • ECS-kode utilgjengelighet – Mye av ECS-koden er ikke offentlig tilgjengelig. Verktøy som AWS Blox (et rammeverk for å bygge egendefinerte planleggere) har en veldig liten del av kodebasene åpen kildekode.
  • Hva er Kubernetes?

    Kubernetes, ofte kalt K8s, er en åpen kildekode-programvare for automatisering av containeriserte applikasjoners distribusjon, skalering og administrasjon.

    Ved å utnytte 15 års erfaring med å kjøre Google-produksjonsarbeidsbelastninger (kombinerer de beste ideene og fellesskapspraksisen), grupperer K8s applikasjonsbeholderne dine i logiske enheter som du enkelt kan oppdage og administrere.

    I tillegg K8s» primære funksjoner, som lastbalansering, vedvarende lagring, automatisk tilbakeføring for containeriserte apper, hemmeligheter, selvhelbredelse for Kubernetes-klynger og konfigurasjonsadministrasjon.

    Les også: Komme i gang med Kubernetes: An Introduction for Beginners

    Fordeler med Kubernetes

  • Åpen kildekode (ingen leverandørlåsing) – Uansett om du kjører lokalt eller i skyen, kan du bruke Kubernetes uten å omstrukturere orkestreringsstrategien. I motsetning til tradisjonell programvare som medfører noen lisensavgifter, er K8s gratis og åpen kildekode. Som om det ikke er nok, kjører K8s-klynger på tvers av offentlige og private skyer som gir virtualiseringsressurser på begge enheter.
  • Kraftig fleksibilitet – K8s er en flott løsning hvis applikasjonene dine trenger høy tilgjengelighet samtidig som de støtter effektivitet og skalerbarhet. Denne egenskapen er taktisk nyttig i applikasjoner som genererer høyinntekter. Enkelt sagt er det detaljert kontroll over arbeidsmengdene dine. I tilfeller der du ønsker å bytte applikasjoner til kraftigere plattformer, er K8s ikke begrenset til leverandørlåser som ECS.
  • Høy tilgjengelighet – Som nevnt ovenfor er K8s design rettet for å gi tilgjengeligheten til applikasjoner og deres nødvendige infrastruktur, noe som gjør det til en nødvendig funksjon for containere under produksjon. Under høy tilgjengelighet er det noen få teknikker:
    • Helsesjekker og selvhelbredelse – Kubernetes beskytter applikasjonene dine mot feil gjennom regelmessige inspeksjoner av noder. Hvis en pod eller beholder blir knust på grunn av en feil, benytter K8s automatisk en erstatning.
    • Lastbalansering og trafikkruting – Når det gjelder trafikkdirigering, vil K8s kun sende forespørsler til de aktuelle containerne. Og med belastningsbalansering fordeler K8s belastninger på tvers av pods, og balanserer ressursene dine for flere tilfeller som avbrudd, tilfeldig topptrafikk eller batchbehandling. Igjen kan du også bruke eksterne lastbalansere hvis du vil.
  • Skalerbarhet for arbeidsbelastning – Mens det er nevnt ovenfor, la oss bryte det ned ytterligere. K8s bruker ressursene sine til å gi effektiv skalering i følgende kriterier.
    • Automatisk skalering – Denne funksjonen lar deg automatisk justere antall kjørende beholdere i henhold til CPU-bruk og andre CPU-målinger.
    • Manuell skalering – Ved hjelp av denne funksjonen kan du skalere antall kjørende containere gjennom kommandolinjen eller grensesnittet.
    • Replikeringskontroller – Dette verktøyet lar deg bestemme antall pods som samsvarer med klyngespesifikasjonen din; hvis det er få, starter det nytt, og hvis det er for mange, avslutter det dem.
      Slik sletter du Microsoft Teams-konto
  • Designet for distribusjon – K8s er spesialdesignet for å fremskynde prosessen med å bygge, teste og sende programvare. Her er noen av funksjonene som tilbys:
    • Automatiserte tilbakeføringer og utrullinger – Det kan være lurt å rulle ut noen nye konfigurasjoner eller applikasjonsoppdateringer under utviklingen. K8s lar deg gjennomføre prosessen uten nedetid for programmet. I tilfelle en feil, ruller K8s robotisk tilbake til forrige versjon.
    • Canary-distribusjoner – Du kan dra nytte av denne funksjonen ved å teste nye distribusjoner i produksjon parallelt med forrige versjon; K8s lar deg skalere ned den siste versjonen av appen samtidig som du skalerer opp den nyeste versjonen.
    • Variert støtte for programmeringsspråk og rammeverk – Enten du kommer fra Go-, Java- eller .Net-programmeringsspråkbakgrunnen, støtter Kubernetes mange utviklingsspråk og rammeverk. Hvis en app kan kjøre på en container, kjører den på K8s.
  • Tjenesteoppdagelse – Enhver utvikler ønsker at alle leverte tjenester har en måte å kommunisere med hverandre på. K8s operasjonsmodell innebærer imidlertid å skape og ødelegge containere kontinuerlig, noe som gjør at noen tjenester ikke eksisterer på bestemte steder. I tradisjonell utvikling vil et tjenesteregister være tilpasset for å spore plasseringen av disse tjenestene. K8s løser dette problemet gjennom et innebygd tjenestekonsept for å gruppere pods og oppdage tjenester sømløst. Så, K8s gir IP-adresser for alle pods, tildeler DNS-navn for hvert podsett, og balanserer deretter belastningstrafikken på hvert podsett. Denne arkitekturen genererer et miljø der tjenesteoppdagelse abstraheres fra hver beholder.
  • Vibrant Community – K8s støttes av et levende fellesskap med tusenvis av utviklere som utnytter tjenestene deres. I skrivende stund bruker over 100 millioner utviklere K8-er for å oppdage, og bidrar med 330 millioner prosjekter. Fellesskapet viser ingen tegn til å bremse og oppmuntrer til samarbeid mellom utviklere.
  • Begrensninger for Kubernetes

  • Bratt læringskurve – For å komme i gang med Kubernetes, må du forstå landskapet. Dessuten krever levering av en ende-til-ende-løsning inkludering av en rekke teknologier og tjenester. Og med tilleggsteknologiene som varierer betydelig (til tider, noen løsninger går tilbake til UNIX-dominert mens andre er nye teknologier med lav bruk), kan det være hektisk å finne ut hvilke som skal inkluderes. Du må også finne ut hvordan alle komponentene passer sammen for å gi en mer omfattende løsning for spesielle problemer. Dokumentasjonen er tilgjengelig, men du må forstå hvordan du leverer og administrerer disse tjenestene.
  • Å skille funksjoner og prosjekter – Å forstå forskjellene mellom prosjekter og funksjoner kan være utfordrende. Selv om du enkelt kan få råd om hvordan du administrerer prosjekter, får du kanskje ikke et klart skille mellom funksjoner og fellesskapsprosjekter.
  • Kunnskap utover Kubernetes – Kubernetes er en sofistikert plattform. Med all denne kompleksiteten i å levere løsninger, vil du sannsynligvis møte litt forvirring, spesielt hvis du er ny på det. Likevel ønsker organisasjoner fortsatt å tilby løsninger (som datalagre-som-en-tjeneste), som forsterker læringskurven. Hvis du bruker slike tjenester på produktet ditt, må du utvide kunnskapen din utover Kubernetes.
  • Å administrere Kubernetes er vanskelig – Å komme til produksjon med K8s er én ting. Du må oppgi alle nødvendige ressurser for at applikasjonene dine skal kunne administrere den. Du må også håndtere all sikkerheten og integrere den med infrastrukturen din. Du trenger også litt ekspertise på høyt nivå for å behandle og betjene verktøyene effektivt. Du må få dyp kunnskap for å administrere Kubernetes-klynger, overvåke og feilsøke klynger og støtte dem i stor skala.
  •   Hvordan fikse WOW-feil #134 dødelig tilstand

    Sammenligning av ECS og Kubernetes

    Her er en side-ved-side-sammenligning som viser forskjellene:

    Point of differenceKubernetesAmazon ECSApplikasjonsdefinisjon Applikasjoner distribueres ved å kombinere pods, noder og tjenester. Applikasjonsdistribusjon tar form av oppgaver. Oppgavene er containerforekomster – for eksempel Docker-containere som kjører på ECS-forekomster.DeploymentComplex da du må distribuere og konfigurere klynger manuelt.Enkel distribusjon via AWS-konsollen.Nodestøtte (antall maskiner)5000 noder per klynge.1000 noder per klynge .ContainereOpp til 300 000 containere per klynge.Begrenset av utnyttet infrastrukturkapasitet.Load BalancingPods er eksponert gjennom tjenester som brukes som lastbalansere bak ingress controllers.To lastbalansere tilgjengelig; ELB-Application eller Network.PricingFree.ECS er gratis, men du må betale for EC2-ressurser.OptimaliseringGodt optimalisert for en enkelt stor klynge.Forhåndskonfigurert med krav og containerkrav.AutoskaleringDu definerer autoskaleringsparametere når du bygger implementeringer.Du bruker overvåkingstjenester som CloudWatch automatisk skalering basert på CPU, minne og egendefinerte parametere. HelsesjekkTo helsesjekker er tilgjengelige: beredskap og liveness. Oppnås gjennom overvåkingstjenester som CloudWatch. TjenesteoppdagelseEnacted gjennom miljøvariabler eller DNS.Oppnådd gjennom overvåkingstjenester – CloudWatch.Vendor-lock innNei.Ja.

    Brukstilfeller av ECS og Kubernetes

    Her er hvordan ECS og Kubernetes containeriseringsteknologi revolusjonerer industrien:

    ECS INC International fremhever en rekke brukstilfeller der ECS-teknologien er implementert. I moderne medisinsk utstyr finner du revolusjonerte metoder for å behandle pasienter og teknikker for medikamentlevering. Mange verktøy finnes, som elektroniske inhalatorer, medisinske autoinjektorer og infusjonspumper.

    I IoT-domenet har vi smarthjemenheter. Hvis du flytter oppmerksomheten til bilindustrien, har vi smarte elbiler med forbedret kjøreopplevelse og forbedrede sikkerhetstiltak som assisterte bremsesystemer.

    Så langt er det toppen av isfjellet; du kan sjekke ut flere applikasjoner av ECS som ikke er begrenset til trådløs teknologi, bærbare enheter og industrielle brukstilfeller.

    På den andre enden har Kubernetes sin del av praktiske applikasjoner. For det første tilbyr IBM-skyen private, offentlige og hybride funksjoner på tvers av et bredt spekter av kjøretider.

    Spotify, en gigant innen musikkstrømming, utnytter Kubernetes-teknologi for å lette sømløse operasjoner, opptil 10 millioner forespørsler per sekund. Selv om dette er brukstilfeller i den virkelige verden, betjener K8s flere funksjoner innen mikrotjenestearkitektur, skybaserte nettverksfunksjoner, maskinlæring og å endre livssyklusen for programvareutvikling.

    Siste ord

    Etter å ha gått gjennom denne veiledningen, har du en solid oversikt over fordelene og ulempene ved å velge enten ECS eller K8s. Nøkkelen til å velge riktig alternativ er basert på noen få argumenter. Du må veie mellom kostnader, tjenestebegrensninger og talentkostnader.

    Hvis du ønsker å bruke en gratis tjeneste, vil K8s være ditt førstevalg. Du trenger imidlertid solide talenter eller ferdigheter for å håndtere kompleksiteten som følger med det. Selv om K8s ikke har begrensninger for leverandørlåsing, vil det kreve en grundig forståelse av hvordan plattformen fungerer. ECS, derimot, fikk raske konfigurasjoner.

    Deretter kan du sjekke ut den detaljerte veiledningen om Kubernetes vs. Docker.