Kubernetes kører programmer i objektbeholdere på en klynge af maskiner og holder dem i den tilstand, du beskriver. Det gør den ved at placere arbejde på de rigtige maskiner, dirigere trafik til de rigtige steder og holde øje med fejl og ændringer.
Det grundlæggende flow
1. Du beskriver, hvad du vil køre
De fleste Kubernetes-arbejdsbelastninger starter som en deklareret "ønsket tilstand" (hvad der skal køre, hvor mange kopier, og hvordan de skal eksponeres). Kubernetes er bygget op omkring deklarativ konfiguration og automatisering.
2. Kubernetes beslutter, hvor den skal køres
Kubernetes planlægger objektbeholdere på maskiner i klyngen baseret på tilgængelige beregningsressourcer, og hvad hver objektbeholder har brug for. Objektbeholdere kører i pods, som er den enhed, Kubernetes placerer på en maskine.
3. Kubernetes bliver ved med at sammenligne virkeligheden med din ønskede tilstand
Controllers holder øje med klyngen og arbejder på at bringe den aktuelle tilstand tættere på den ønskede tilstand ved hjælp af API-serveren for at foretage ændringer.
Planlægning af objektbeholdere og daglig administration
Planlægning er "hvor skal den køres?" beslutning.
1. Pods er planlagt, ikke individuelle objektbeholdere
Kubernetes grupperer objektbeholdere i pods og placerer derefter disse pods på maskiner.
2. Planlæggeren tildeler pods til en passende node
Kube-scheduler søger efter pods, der endnu ikke er tildelt, og vælger en node til dem.
3. Nodeagenter holder pods kørende
På hver node sikrer kubelet, at pods kører (herunder deres objektbeholdere).
Justering af belastning og tjenesteregistrering
Objektbeholdere og pods kan oprettes, flyttes eller erstattes, så programmer har brug for stabile måder at finde hinanden på.
Tjenesteregistrering og justering af belastning er indbyggede funktionsmåder
Kubernetes administrerer tjenesteregistrering og bruger justering af belastning, så trafikken kan dirigeres, selv når pods ændres over tid.
Tjenester giver en stabil adresse til et skiftende sæt pods
Tjeneste-API'en leverer en stabil IP-adresse eller et værtsnavn til en tjeneste, der understøttes af en eller flere pods, og Kubernetes sporer de sikkerhedskopierede pods via EndpointSlice-objekter.
Trafikrouting opdateres, når pods ændrer sig
Når pods bag en tjeneste ændres, tilpasses tjenesterouting, så trafikken fortsat når de aktuelle back-ends.
Skalering af programmer (og hvorfor "ønsket tilstand" betyder noget)
Kubernetes kan skalere arbejdsbelastninger mod den tilstand, du angiver, herunder skalering baseret på beregningsudnyttelse.
Almindelige skaleringsforslag omfatter:
Flere replikaer (flere pods) til at håndtere større efterspørgsel.
Færre replikaer, når efterspørgslen falder.
Ressourcesporing, så placeringsbeslutninger afspejler CPU- og hukommelsesbehov.
Det hænger sammen med modellen for "ønsket tilstand": Du angiver målet, og controllere fortsætter med at arbejde hen imod det.
Selvheling: Hvad sker der, når noget går i stykker
Kubernetes omfatter selvheling, der har til formål at opretholde arbejdsbelastningens tilstand og tilgængelighed. Disse omfatter:
Genstart af mislykkede objektbeholdere (genstart på objektbeholderniveau).
Erstatning af mislykkede pods for at bevare det ønskede antal replikaer (replikaerstatning).
Omplanlægning af arbejdsbelastninger, når noder bliver utilgængelige.
Fjernelse af mislykkede pods fra tjenesteslutpunkter, så trafikken kun går til sunde pods (justering af belastning for tjenester).
Selvheling kontrollerer objektbeholdernes tilstand og genstarter eller replikerer dem, når der opstår problemer.
Rollen for Kubernetes-KPI'er
Nøgletal (KPI'er eller målepunkter) bruges til at forstå klyngens tilstand og funktionsmåde for arbejdsbelastninger.
Hvor KPI'er kommer fra
Kubernetes-systemkomponenter udsender målepunkter (Prometheus-format), der er nyttige for dashboards og beskeder.
Målepunkter er typisk tilgængelige på HTTP-slutpunktet for en komponents/et målepunkt, herunder komponenter som kube-apiserver, kube-scheduler, kubelet, kube-proxy og kube-controller-manager.
Eksempler på, hvad KPI'er hjælper dig med at spotte
Klyngens tilstandssignaler (målepunkter og fejlmønstre på komponentniveau)
Arbejdsbelastningens stabilitet (f.eks. hyppige genstarter eller udskiftninger)
Kapacitetstryk (ressourceallokering i forhold til efterspørgsel, knyttet til skaleringsbeslutninger)
Derfor er det vigtigt i den daglige drift
Overvågning giver teams en mere komplet visning af klyngeressourcer, Kubernetes-API'en, objektbeholdere og logge, hvilket forkorter feedbackløkken mellem problemer og rettelser.