Kubernetes

Hva er Kubernetes?

Hva er Kubernetes?

Hva er Kubernetes? Og hva er arkitekturen?

Containerization har kuttet ledningen mellom programvareutviklere og produksjonsmiljøet. Ikke i den forstand at du ikke trenger et produksjonssystem i det hele tatt, men du trenger ikke å bekymre deg for spesifisiteten til produksjonsmiljøet.

Appene er nå pakket med avhengighetene de trenger, i en lett container i stedet for en VM. Det er flott! Imidlertid gir den ikke immunitet mot systemfeil, nettverksfeil eller diskfeil. For eksempel, hvis datasenteret, der serverne kjører, er under vedlikehold, vil søknaden gå offline.

Kubernetes kommer inn i bildet for å løse disse problemene. Det tar ideen om containere og utvider den til å fungere på tvers av flere beregningsnoder (som kan være virtuell maskin som er vert for skyen eller servere med bare metall). Tanken er å ha et distribuert system for containeriserte applikasjoner å kjøre på.

Hvorfor Kubernetes?

Nå, hvorfor trenger du i utgangspunktet å ha et distribuert miljø?

Av flere grunner er først og fremst høy tilgjengelighet. Du vil at e-handelsnettstedet ditt skal være online 24/7, ellers mister du forretninger, bruk Kubernetes til det. For det andre er skalerbarhet, der du vil skalere 'ut'. Å skalere ut her innebærer å legge til flere beregningsnoder for å gi den voksende applikasjonen din mer plass til å operere.

Design og arkitektur

Som et hvilket som helst distribuert system, har en Kubernetes-klynge en hovednode og deretter mange arbeidernoder som applikasjonene dine faktisk vil kjøre. Mesteren er ansvarlig for planlegging av oppgaver, administrering av arbeidsmengder og sikker legging av nye noder i klyngen.

Nå kan selvfølgelig masternoden mislykkes og ta hele klyngen med seg, så Kubernetes lar deg faktisk ha flere masternoder for redundans skyld.

Et fugleperspektiv av en typisk Kubernetes-distribusjon

Kubernetes Master

Kubernetes-mesteren er det DevOps-teamet samhandler med og bruker for å klargjøre nye noder, distribuere nye apper og ressursovervåking og -administrasjon. Masternodens mest grunnleggende oppgave er å rute arbeidsmengden effektivt blant alle arbeidernodene for å maksimere ressursutnyttelsen, forbedre ytelsen og følge ulike retningslinjer valgt av DevOps-teamet for deres spesielle arbeidsmengde.

En annen viktig komponent er etcd som er en demon som holder rede på arbeidernoder og holder en database som lagrer hele klyngens tilstand. Det er en nøkkelverdi datalager, som også kan kjøres i et distribuert miljø på tvers av flere hovednoder. Innholdet i etcd gir alle relevante data om hele klyngen. En arbeidernode vil fra tid til annen se på innholdet i etcd for å bestemme hvordan den skal oppføre seg.

Kontroller er enheten som tar instruksjoner fra API-serveren (som vi vil dekke senere) og utfører nødvendige handlinger som oppretting, sletting og oppdatering av applikasjoner og pakker.

De API-server avslører Kubernetes API, som bruker JSON-nyttelast over HTTPS, for å kommunisere med brukergrensesnittet som utviklerlagene eller DevOps-personalet til slutt vil ende opp med å kommunisere med. Både nettgrensesnittet og CLI bruker denne API-en til å samhandle med Kubernetes-klyngen.

API-serveren er også ansvarlig for kommunikasjonen mellom arbeidernodene og forskjellige hovednodekomponenter som etcd.

Master-noden blir aldri utsatt for sluttbrukeren, da den vil risikere sikkerheten til hele klyngen.

Kubernetes noder

En maskin (fysisk eller virtuell) trenger noen viktige komponenter som en gang er installert og satt opp riktig, kan gjøre serveren til et medlem av Kubernetes-klyngen din.

Det første du trenger er en container kjøretid, som Docker, installert og kjører på den. Det vil selvfølgelig være ansvarlig for å spinne opp og administrere containere.

Sammen med Docker-kjøretiden trenger vi også Kubelet daemon. Den kommuniserer med masternodene, via API-serveren og spør etcd, og gir tilbake helse- og bruksinformasjon om podene som kjører på den noden.

Imidlertid er containere ganske begrenset av seg selv, så Kubernetes har en høyere abstraksjon bygget på toppen av en samling containere, kjent som Pods.

Hvorfor komme med belger?

Docker har en policy om å kjøre ett program per container. Ofte beskrevet som “En prosess per container” Politikk. Dette betyr at hvis du trenger et WordPress-nettsted, oppfordres du til å ha to containere, en for databasen å kjøre på, og en annen for webserveren å kjøre på. Bundling av slike relaterte komponenter i en applikasjon i en pod sørger for at når du skalerer ut, vil de to avhengige beholderne alltid eksistere samtidig på samme node, og dermed snakke med hverandre raskt og enkelt.

Pods er den grunnleggende enheten for distribusjon i Kubernetes. Når du skalerer ut, legger du til flere pods i klyngen. Hver pod får sin egen unike IP-adresse i klyngens interne nettverk.

Tilbake til Kubernetes Node

Nå kan en node kjøre flere pods, og det kan være mange slike noder. Dette er helt greit til du tenker på å prøve å kommunisere med den eksterne verden. Hvis du har en enkel nettbasert tjeneste, hvordan vil du peke domenenavnet ditt til denne samlingen av pods med mange IP-adresser?

Du kan ikke, og du trenger ikke! Kube-proxy er den siste biten i puslespillet som gjør det mulig for operatører å eksponere visse pods ut til Internett. For eksempel kan front-enden din gjøres tilgjengelig for offentligheten, og kube-proxyen vil distribuere trafikken mellom alle de forskjellige podene som er ansvarlige for hosting av frontend. Databasen din trenger imidlertid ikke å bli offentlig, og kube-proxy tillater bare intern kommunikasjon for slike back-end-relaterte arbeidsbelastninger.

Trenger du alt dette?

Hvis du nettopp har begynt som hobbyist eller student, vil det faktisk være ineffektivt å bruke Kubernetes for en enkel applikasjon. Hele rigmarolen bruker mer ressurser enn den faktiske applikasjonen, og vil gi mer forvirring for en enkelt person.

Men hvis du skal jobbe med et stort team og distribuere appene dine for seriøs kommersiell bruk, er Kubernetes verdt tilleggskostnaden. Du kan forhindre at ting blir kaotiske. Gi plass til vedlikehold uten noe nedetid. Sett opp smarte A / B-testforhold og skaler gradvis uten å bruke for mye på infrastrukturen foran.

Shadow of the Tomb Raider for Linux Tutorial
Shadow of the Tomb Raider er det tolvte tilskuddet til Tomb Raider-serien - et action-eventyrspill-franchise opprettet av Eidos Montreal. Spillet ble ...
Hvordan øke FPS i Linux?
FPS står for Bilder per sekund. FPSs oppgave er å måle bildefrekvensen i videoavspilling eller spillprestasjoner. Med enkle ord betegnes antall uavbru...
Topp Oculus App Lab-spill
Hvis du er Oculus-hodesettinnehaver, må du være klar over sideloading. Sidelading er prosessen med å installere ikke-butikkinnhold på hodesettet. Side...