Kubernetes kjører beholderbaserte programmer på en klynge av maskiner og holder dem i tilstanden du beskriver. Den gjør dette ved å plassere arbeid på de rette maskinene, rute trafikk til de rette stedene og se etter feil og endringer.
Den grunnleggende flyten
1. Du beskriver hva du vil kjøre
De fleste Kubernetes-arbeidsbelastninger starter som en erklært «ønsket tilstand» (hva som skal kjøres, hvor mange eksemplarer og hvordan de skal eksponeres). Kubernetes er bygget rundt deklarativ konfigurasjon og automatisering.
2. Kubernetes bestemmer hvor det skal kjøres
Kubernetes planlegger beholdere på maskiner i klyngen basert på tilgjengelige databehandlingsressurser og hva hver beholder trenger. Beholdere kjører i podder, som er enheten Kubernetes plasserer på en maskin.
3. Kubernetes fortsetter å kontrollere virkeligheten kontra ønsket tilstand
Kontrollere ser på klyngen og arbeider med å flytte den gjeldende tilstanden nærmere ønsket tilstand ved hjelp av API-serveren for å gjøre endringer.
Beholderplanlegging og daglig administrasjon
Planlegging er «hvor skal dette kjøres?» beslutning.
1. Podder er planlagt, individuelle beholdere ikke
Kubernetes grupperer beholdere i podder og plasserer deretter poddene på maskiner.
2. Planleggeren tilordner podder til en passende node
Kube-planleggeren ser etter podder som ikke er tilordnet ennå, og velger en node for dem.
3. Nodeagenter holder poddene i gang
På hver node sørger kubelet for at poddene kjører (inkludert beholderne deres).
Belastningsfordeling og tjenesteoppdagelse
Beholdere og podder kan opprettes, flyttes eller erstattes, slik at programmer trenger stabile måter å finne hverandre på.
Tjenesteoppdagelse og belastningsfordeling er innebygd atferd
Kubernetes administrerer tjenesteoppdagelse og bruker belastningsfordeling slik at trafikken kan rutes selv om podder endres over tid.
Tjenester gir en stabil adresse for et sett med podder som endres
Tjeneste-API-en tilbyr en stabil IP-adresse eller et vertsnavn for en tjeneste som støttes av én eller flere podder, og Kubernetes sporer de sikkerhetskopierte poddene gjennom EndpointSlice-objekter.
Trafikkrutingsoppdateringer etter hvert som podder endres
Når podder bak en tjeneste endres, tilpasses tjenesterutingen slik at trafikken fortsetter å nå gjeldende serverdeler.
Skalering av programmer (og hvorfor «ønsket tilstand» er viktig)
Kubernetes kan skalere arbeidsbelastninger mot tilstanden du angir, inkludert skalering basert på databehandlingsutnyttelse.
Vanlige skaleringsideer inkluderer:
Flere replikaer (flere podder) for å håndtere høyere etterspørsel.
Færre replikaer når etterspørselen faller.
Ressurssporing slik at plasseringsbeslutninger gjenspeiler CPU- og minnebehov.
Dette knytter seg til «ønsket tilstand»-modellen: du angir målet, og kontrollerne fortsetter å arbeide mot det.
Selvreparasjon: Hva skjer når noe går i stykker
Kubernetes inkluderer selvreparasjonsatferd som har som mål å opprettholde arbeidsbelastningens helse og tilgjengelighet. Disse inkluderer:
Starter mislykkede beholdere på nytt (omstarter på beholdernivå).
Erstatte mislykkede podder for å beholde det forespurte antallet replikaer (replikaerstatning).
Planlegge arbeidsbelastninger på nytt når noder blir utilgjengelige.
Fjerning av mislykkede podder fra tjenesteendepunkter, slik at trafikken bare går til sunne podder (belastningsfordeling for tjenester).
Selvreparasjon kontrollerer beholdertilstanden og starter på nytt eller replikerer dem når det oppstår problemer.
Rollen til Kubernetes KPI-er
Nøkkelindikatorer (KPI-er eller måledata) brukes til å forstå klyngetilstand og arbeidsbelastningsatferd.
Hvor KPI-er kommer fra
Kubernetes-systemkomponenter avgir måledata (Prometheus-format) som er nyttige for instrumentbord og varsler.
Måledata er vanligvis tilgjengelige på en komponents / måledata-HTTP-endepunkt, inkludert komponenter som kube-apiserver, kube-scheduler, kubelet, kube-proxy og kube-controller-manager.
Eksempler på hva KPI-er hjelper deg med å oppdage
Klyngetilstandssignaler (måledata på komponentnivå og feilmønstre)
Stabilitet for arbeidsbelastning (for eksempel hyppige omstarter eller erstatninger)
Kapasitetsbelastning (ressursallokering kontra etterspørsel, knyttet til skaleringsbeslutninger)
Hvorfor dette er viktig i den daglige driften
Overvåking gir teamene en mer fullstendig oversikt over klyngeressurser, Kubernetes API, beholdere og logger, noe som forkorter tilbakemeldingssløyfen mellom problemer og løsninger.