Programmering

4 grunde til at du skal bruge Kubernetes

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

Som de fleste moderne softwareudviklere kan attestere, har containere givet os dramatisk større fleksibilitet til at køre cloud-native applikationer på fysisk og virtuel infrastruktur. Containere pakker tjenesterne, der omfatter en applikation, og gør dem bærbare på tværs af forskellige computermiljøer til både dev / test og produktionsbrug. Med containere er det let at hurtigt applikationsforekomster rampe op for at matche stigende efterspørgsel. Og fordi containere trækker på ressourcer fra værts-OS, har de meget lavere vægt end virtuelle maskiner. Dette betyder, at containere gør meget effektiv brug af den underliggende serverinfrastruktur.

Så langt så godt. Men selvom container-runtime-API'erne er velegnede til styring af individuelle containere, er de sørgeligt utilstrækkelige, når det kommer til administration af applikationer, der muligvis omfatter hundreder af containere spredt over flere værter. Containere skal styres og forbindes med omverdenen til opgaver såsom planlægning, belastningsbalancering og distribution, og det er her et containerorkestreringsværktøj som Kubernetes kommer til sin ret.

Et open source-system til implementering, skalering og styring af containeriserede applikationer, Kubernetes håndterer arbejdet med at planlægge containere i en computerklynge og administrerer arbejdsbelastningerne for at sikre, at de kører som brugeren havde til hensigt. I stedet for at boltre på operationer som en eftertanke bringer Kubernetes softwareudvikling og operationer sammen ved design. Ved at bruge deklarative, infrastruktur-agnostiske konstruktioner til at beskrive, hvordan applikationer er sammensat, hvordan de interagerer, og hvordan de administreres, muliggør Kubernetes en størrelsesorden, der øges i moderne softwaresystemers funktionsdygtighed.

Kubernetes blev bygget af Google baseret på sin egen erfaring med at køre containere i produktionen, og det skylder helt sikkert meget af sin succes til Googles engagement. Google har nogle af de mest talentfulde softwareudviklere på planeten, og de kører nogle af de største softwaretjenester i skala. Denne kombination sikrede, at Kubernetes ville blive en bundsolid platform, der kan imødekomme skaleringsbehovet i stort set enhver organisation. Denne artikel forklarer, hvorfor Kubernetes er vigtig, og hvorfor det markerer et vigtigt skridt fremad for devops-hold.

Relateret video: Hvad er Kubernetes?

I denne 90-sekunders video lærer du om Kubernetes, open source-systemet til automatisering af containeriserede applikationer, fra en af ​​teknologiens opfindere, Joe Beda, grundlægger og CTO hos Heptio.

En infrastrukturramme for i dag

Disse dage opfordres udviklere til at skrive applikationer, der kører på tværs af flere driftsmiljøer, herunder dedikerede on-prem servere, virtualiserede private skyer og offentlige skyer som AWS og Azure. Traditionelt har applikationer og værktøjer, der understøtter dem, været tæt knyttet til den underliggende infrastruktur, så det var dyrt at bruge andre implementeringsmodeller på trods af deres potentielle fordele. Dette betød, at applikationer blev afhængige af et bestemt miljø i flere henseender, herunder ydelsesproblemer relateret til en bestemt netværksarkitektur; overholdelse af cloud-udbyder-specifikke konstruktioner, såsom proprietære orkestreringsteknikker; og afhængigheder af et bestemt back-end-lagersystem.

PaaS forsøger at omgå disse problemer, men ofte på bekostning af at stille strenge krav inden for områder som programmeringssprog og applikationsrammer. Således er PaaS uden grænser for mange udviklingsteams.

Kubernetes fjerner lock-in af infrastruktur ved at levere kernefunktioner til containere uden at pålægge begrænsninger. Det opnår dette gennem en kombination af funktioner inden for Kubernetes-platformen, herunder Pods og Services.

Bedre styring gennem modularitet

Beholdere gør det muligt at nedbryde applikationer i mindre dele med en klar adskillelse af bekymringer. Abstraktionslaget til et individuelt containerbillede giver os grundlæggende mulighed for at genoverveje, hvordan distribuerede applikationer bygges. Denne modulære tilgang muliggør hurtigere udvikling af mindre, mere fokuserede teams, der hver især er ansvarlige for specifikke containere. Det giver os også mulighed for at isolere afhængigheder og gøre bredere brug af velindstillede, mindre komponenter.

Men dette kan ikke opnås ved containere alene; det kræver et system til integration og orkestrering af disse modulære dele. Kubernetes opnår dette delvist ved hjælp af Pods - typisk en samling containere, der styres som en enkelt applikation. Containerne deler ressourcer, såsom filsystemer, kernenavneområder og en IP-adresse. Ved at lade containere samles på denne måde fjerner Kubernetes fristelsen til at klemme for meget funktionalitet ind i et enkelt containerbillede.

Begrebet en tjeneste i Kubernetes bruges til at gruppere en samling af bælg, der udfører en lignende funktion. Tjenester kan let konfigureres til opdagelsesevne, observerbarhed, vandret skalering og belastningsbalancering.

Implementering og opdatering af software i målestok

Devops opstod som en metode til at fremskynde processen med at opbygge, teste og frigive software. Dens resultat har været et skift i vægt fra administration af infrastruktur til styring af, hvordan software implementeres og opdateres i stor skala. De fleste infrastrukturrammer understøtter ikke denne model, men Kubernetes gør det delvis gennem Kubernetes Controllers. Takket være controllere er det let at bruge infrastruktur til at styre applikationens livscyklus.

Deployment Controller forenkler et antal komplekse ledelsesopgaver. For eksempel:

  • Skalerbarhed. Software kan distribueres for første gang på en skaleringsmæssig måde på tværs af Pods, og implementeringer kan skaleres ind eller ud til enhver tid.
  • Sigtbarhed. Identificer afsluttede, igangværende og svigtende implementeringer med statusforespørgsel.
  • Tidsbesparelser. Sæt en installation på pause når som helst, og genoptag den senere.
  • Versionskontrol. Opdater implementerede Pods ved hjælp af nyere versioner af applikationsbilleder, og rul tilbage til en tidligere implementering, hvis den aktuelle version ikke er stabil.

Blandt andre muligheder forenkler Kubernetes et par specifikke implementeringsoperationer, der er særligt værdifulde for udviklere af moderne applikationer. Disse inkluderer følgende:

  • Horisontal autoskalering. Kubernetes-autoskalere størrer automatisk en implementerings antal Pods baseret på brugen af ​​specificerede ressourcer (inden for definerede grænser).
  • Rullende opdateringer. Opdateringer til en Kubernetes-implementering er orkestreret på "rullende måde" på tværs af implementeringens Pods. Disse rullende opdateringer er orkestreret, mens der arbejdes med valgfri foruddefinerede begrænsninger for antallet af pods, der kan være utilgængelige, og antallet af ekstra pods, der muligvis eksisterer midlertidigt.
  • Kanariske implementeringer. Et nyttigt mønster ved implementering af en ny version af en implementering er først at teste den nye implementering i produktion parallelt med den tidligere version og skalere den nye implementering samtidig med at den tidligere implementering skaleres ned.

I modsætning til traditionelle altomfattende PaaS-tilbud giver Kubernetes bred bredde for de typer applikationer, der understøttes. Det dikterer ikke applikationsrammer (såsom Wildfly), begrænser de understøttede sprogkørselstider (Java, Python, Ruby), imødekommer kun 12-faktor applikationer eller skelner mellem "apps" og "tjenester". Kubernetes understøtter en bred vifte af arbejdsbelastninger, herunder statsløs, stateful og databehandling. Hvis et program kan køre i en container, skal det køre godt på Kubernetes.

Lægge grundlaget for cloud-native apps

Ikke overraskende i betragtning af interessen for containere, andre styrings- og orkestreringsværktøjer er dukket op. Populære alternativer inkluderer Apache Mesos med Marathon, Docker Swarm, AWS EC2 Container Service (ECS) og HashiCorp's Nomad.

Hver har sine fordele. Docker Swarm leveres tæt sammen med Docker-runtime, så brugerne nemt kan skifte fra Docker til Swarm; Mesos med Marathon er ikke begrænset til containere, men kan implementere enhver form for applikation; AWS ECS er lettere at få adgang til for nuværende AWS-brugere. Kubernetes-klynger kan dog køre på EC2 og integreres med tjenester såsom Amazon Elastic Block Storage, Elastic Load Balancing, Auto Scaling Groups og så videre.

Disse rammer begynder at duplikere hinanden i funktioner og funktionalitet, men Kubernetes forbliver utroligt populært på grund af dets arkitektur, innovation og det store open source-samfund omkring det.

Kubernetes markerer et gennembrud for devops, fordi det giver hold mulighed for at holde trit med kravene til moderne softwareudvikling. I mangel af Kubernetes er hold ofte blevet tvunget til at script deres egen softwareinstallation, skalering og opdatering af arbejdsgange. Nogle organisationer anvender store hold til at håndtere disse opgaver alene. Kubernetes giver os mulighed for at udnytte maksimal nytte fra containere og bygge cloud-native applikationer, der kan køre hvor som helst, uafhængigt af cloud-specifikke krav. Dette er helt klart den effektive model til applikationsudvikling og operationer, vi har ventet på.

New Tech Forum giver et sted at udforske og diskutere nye virksomhedsteknologier i hidtil uset dybde og bredde. Valget er subjektivt baseret på vores valg af de teknologier, som vi mener er vigtige og af største interesse for læserne. accepterer ikke markedsføringssikkerhed til offentliggørelse og forbeholder sig retten til at redigere alt bidraget indhold. Send alle forespørgsler til [email protected]