Programmering

4 grunner til at du bør bruke Kubernetes

Sirish Raghuram er medstifter og administrerende direktør for Platform9 Systems.

Som de fleste moderne programvareutviklere kan attestere, har containere gitt oss dramatisk mer fleksibilitet for å kjøre skyinnfødte applikasjoner på fysisk og virtuell infrastruktur. Beholdere pakker opp tjenestene som består av en applikasjon og gjør dem bærbare i forskjellige databehandlingsmiljøer, for både dev / test og produksjonsbruk. Med containere er det enkelt å raskt rampe applikasjonsforekomster for å matche etterspørselstopper. Og fordi containere bruker ressurser fra verts-operativsystemet, har de mye lavere vekt enn virtuelle maskiner. Dette betyr at containere bruker svært effektiv bruk av den underliggende serverinfrastrukturen.

Så langt så bra. Men selv om API-ene for containerruntime er godt egnet til å administrere individuelle containere, er de sørgelig utilstrekkelige når det gjelder administrering av applikasjoner som kan omfatte hundrevis av containere spredt over flere verter. Containere må styres og kobles til omverdenen for oppgaver som planlegging, lastbalansering og distribusjon, og det er her et containerorkestreringsverktøy som Kubernetes kommer til sin rett.

Et åpen kildekodesystem for distribusjon, skalering og administrering av containeriserte applikasjoner, Kubernetes håndterer arbeidet med å planlegge containere til en databehandlingsklynge og administrerer arbeidsmengden for å sikre at de kjører som brukeren hadde til hensikt. I stedet for å boltre på operasjoner som en ettertanke, bringer Kubernetes programvareutvikling og operasjoner sammen etter design. Ved å bruke deklarative, infrastruktur-agnostiske konstruksjoner for å beskrive hvordan applikasjoner er sammensatt, hvordan de samhandler og hvordan de administreres, muliggjør Kubernetes en størrelsesorden økning i brukbarheten til moderne programvaresystemer.

Kubernetes ble bygget av Google basert på sin egen erfaring med å kjøre containere i produksjon, og det skylder sikkert mye av suksessen til Googles involvering. Google har noen av de mest talentfulle programvareutviklerne på planeten, og de driver noen av de største programvaretjenestene i skala. Denne kombinasjonen sørget for at Kubernetes ville bli en bunnsolid plattform som kan møte skaleringsbehovet til praktisk talt alle organisasjoner. Denne artikkelen forklarer hvorfor Kubernetes er viktig, og hvorfor det markerer et viktig skritt fremover for devops-team.

Relatert video: Hva er Kubernetes?

I denne 90 sekunders videoen kan du lære om Kubernetes, open source-systemet for automatisering av containeriserte applikasjoner, fra en av teknologiens oppfinnere, Joe Beda, grunnlegger og CTO i Heptio.

En infrastrukturramme for i dag

I disse dager blir utviklere bedt om å skrive applikasjoner som kjører på tvers av flere driftsmiljøer, inkludert dedikerte lokale servere, virtualiserte private skyer og offentlige skyer som AWS og Azure. Tradisjonelt har applikasjoner og verktøy som støtter dem vært nært knyttet til den underliggende infrastrukturen, så det var kostbart å bruke andre distribusjonsmodeller til tross for deres potensielle fordeler. Dette betydde at applikasjoner ble avhengige av et bestemt miljø i flere henseender, inkludert ytelsesproblemer knyttet til en bestemt nettverksarkitektur; overholdelse av skyleverandørsspesifikke konstruksjoner, som proprietære orkestreringsteknikker; og avhengigheter av et bestemt back-end-lagringssystem.

PaaS prøver å komme seg rundt disse problemene, men ofte på bekostning av å stille strenge krav innen områder som programmeringsspråk og applikasjonsrammer. Dermed er PaaS utenfor grensene for mange utviklingsteam.

Kubernetes eliminerer låsing av infrastruktur ved å tilby kjernefunksjoner for containere uten å innføre begrensninger. Det oppnår dette gjennom en kombinasjon av funksjoner innen Kubernetes-plattformen, inkludert Pods og Services.

Bedre styring gjennom modularitet

Beholdere gjør at applikasjoner kan spaltes i mindre deler med tydelig skille mellom bekymringer. Abstraksjonslaget som er gitt for et individuelt containerbilde, lar oss fundamentalt revurdere hvordan distribuerte applikasjoner bygges. Denne modulære tilnærmingen muliggjør raskere utvikling av mindre, mer fokuserte team som hver har ansvar for spesifikke containere. Det lar oss også isolere avhengigheter og bruke bredere innstilte, mindre komponenter.

Men dette kan ikke oppnås med containere alene; det krever et system for integrering og orkestrering av disse modulære delene. Kubernetes oppnår dette delvis ved hjelp av Pods - vanligvis en samling containere som styres som en enkelt applikasjon. Containerne deler ressurser, for eksempel filsystemer, kjernens navneområder og en IP-adresse. Ved å la containere samle seg på denne måten fjerner Kubernetes fristelsen til å stappe for mye funksjonalitet i et enkelt containerbilde.

Konseptet med en tjeneste i Kubernetes brukes til å gruppere en samling pods som utfører en lignende funksjon. Tjenester kan enkelt konfigureres for oppdagbarhet, observerbarhet, horisontal skalering og lastbalansering.

Implementering og oppdatering av programvare i stor skala

Devops dukket opp som en metode for å øke prosessen med å bygge, teste og gi ut programvare. Dens resultat har vært et skift i vekt fra å administrere infrastruktur til å administrere hvordan programvare distribueres og oppdateres i stor skala. De fleste infrastrukturrammer støtter ikke denne modellen, men Kubernetes gjør det, delvis gjennom Kubernetes Controllers. Takket være kontrollere er det enkelt å bruke infrastruktur til å administrere applikasjonens livssyklus.

Deployment Controller forenkler en rekke komplekse administrasjonsoppgaver. For eksempel:

  • Skalerbarhet. Programvare kan distribueres for første gang på en skala ut på tvers av Pods, og distribusjoner kan når som helst skaleres inn eller ut.
  • Synlighet. Identifiser fullførte, pågående og mislykkede distribusjoner med muligheter for statusforespørsel.
  • Tidsbesparelser. Stopp en distribusjon når som helst, og fortsett den senere.
  • Versjonskontroll. Oppdater distribuerte pods ved hjelp av nyere versjoner av applikasjonsbilder og rull tilbake til en tidligere distribusjon hvis den nåværende versjonen ikke er stabil.

Blant andre muligheter forenkler Kubernetes noen spesifikke distribusjonsoperasjoner som er spesielt verdifulle for utviklere av moderne applikasjoner. Disse inkluderer følgende:

  • Horisontal autoskalering. Kubernetes autoskalere størrelse automatisk en distribusjon antall Pods basert på bruk av spesifiserte ressurser (innenfor definerte grenser).
  • Rullende oppdateringer. Oppdateringer til en Kubernetes-distribusjon blir orkestrert på "rullende måte", over distribusjonens Pods. Disse rullende oppdateringene er orkestrert mens du arbeider med valgfrie forhåndsdefinerte begrensninger på antall Pods som kan være utilgjengelige og antall ekstra Pods som kan eksistere midlertidig.
  • Kanariutplasseringer. Et nyttig mønster når du distribuerer en ny versjon av en distribusjon, er å først teste den nye distribusjonen i produksjon, parallelt med den forrige versjonen, og skalere opp den nye distribusjonen mens du samtidig skalerer ned den forrige distribusjonen.

I motsetning til tradisjonelle, altomfattende PaaS-tilbud, gir Kubernetes bred bredde for de typer applikasjoner som støttes. Det dikterer ikke applikasjonsrammer (for eksempel Wildfly), begrenser de støttede språketidene (Java, Python, Ruby), imøtekommer bare 12-faktor-applikasjoner eller skiller "apper" fra "tjenester". Kubernetes støtter et bredt utvalg av arbeidsbelastninger, inkludert statsløs, stateful og databehandling. Hvis et program kan kjøres i en container, bør det kjøre bra på Kubernetes.

Legger grunnlaget for skyinnfødte apper

Ikke overraskende gitt interessen for containere, andre administrasjons- og orkestreringsverktøy har dukket opp. Populære alternativer inkluderer Apache Mesos med Marathon, Docker Swarm, AWS EC2 Container Service (ECS) og HashiCorp’s Nomad.

Hver har sine fordeler. Docker Swarm følger tett med Docker-kjøretiden, slik at brukerne enkelt kan gå fra Docker til Swarm; Mesos med Marathon er ikke begrenset til containere, men kan distribuere alle slags applikasjoner; AWS ECS er lettere tilgjengelig for nåværende AWS-brukere. Imidlertid kan Kubernetes-klynger kjøre på EC2 og integreres med tjenester som Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups, og så videre.

Disse rammene begynner å duplisere hverandre i funksjoner og funksjonalitet, men Kubernetes forblir utrolig populært på grunn av sin arkitektur, innovasjon og det store open source-samfunnet rundt det.

Kubernetes markerer et gjennombrudd for devops fordi det gjør at lagene kan holde tritt med kravene til moderne programvareutvikling. I fravær av Kubernetes har team ofte blitt tvunget til å skript sin egen programvaredistribusjon, skalering og oppdatering av arbeidsflyter. Noen organisasjoner bruker store team for å håndtere disse oppgavene alene. Kubernetes tillater oss å hente maksimal nytte fra containere og bygge cloud-native applikasjoner som kan kjøres hvor som helst, uavhengig av sky-spesifikke krav. Dette er helt klart den effektive modellen for applikasjonsutvikling og drift vi har ventet på.

New Tech Forum er et sted for å utforske og diskutere ny teknologi i enestående dybde og bredde. Valget er subjektivt, basert på vårt valg av teknologiene vi mener er viktige og av størst interesse for leserne. godtar ikke markedsføringssikkerhet for publisering og forbeholder seg retten til å redigere alt bidratt innhold. Send alle henvendelser til [email protected].

$config[zx-auto] not found$config[zx-overlay] not found