Sådan fungerer Kubernetes — ønsket tilstand til kørende workloads
Sådan fungerer Kubernetes, vist på et interaktivt lærred: manifester, control plane, planlægning og den afstemningsløkke, der holder jeres workloads kørende.
Kubernetes kører containeriserede programmer ved hele tiden at afstemme: du deklarerer den ønskede tilstand, og control plane og worker-noderne arbejder på at få clusteret til at matche den.
Sådan fungerer Kubernetes — ønsket tilstand til kørende workloads
The interactive FlowJam canvas for this explanation — every lane, row and arrow above is a real QueryChart diagram you can open and edit.
How to read this visual
- Læs de fire kolonner fra venstre mod højre: Deklarér, Planlæg, Kør, Vedligehold.
- Rækkerne i control plane (øverst) beslutter; rækkerne på worker-noderne (nederst) udfører. Pile fra top til bund er kommandoer; løkken tilbage op fra »Er pod'en sund?« er afstemningscyklussen.
- Den ønskede tilstand i manifestet er sandhedskilden — alle andre bokse findes for at flytte virkeligheden hen mod den.
Sådan deklareres den ønskede tilstand
»kubectl apply af et manifest med den ønskede tilstand« er sådan, det hele begynder: udvikleren beskriver målet — »3 replikaer af API'et, image v2.1, port 8080« — og indsender det. »API-serveren gemmer den ønskede tilstand i etcd« er commit-punktet: API-serveren i control plane er hoveddøren, og etcd er clusterets sandhedskilde. Alt det følgende er en konsekvens af denne ene skrivning.
Planlægningen
»Scheduleren holder øje og vælger noder til pods« og »Scheduleren tildeler hver pod til en sund node« er control plane, der vælger, hvor arbejdet skal køre. Scheduleren tager hensyn til hver nodes ressourcer og begrænsninger og placerer pod'en på den bedste kandidat — udvikleren vælger ikke maskiner, kun den ønskede tilstand.
Kørslen på worker-noderne
»kubelet på noden puller images og starter containere« er workerhalvdelen af arrangementet: kubelet er den agent, control plane har på hver node, og den taler med container-runtimen for at starte de tildelte pods og rapportere sundhedstilstanden tilbage. »En Service dirigerer trafik til de kørende pods« tilføjer det stabile indgangspunkt på netværket — pods kommer og går, men navnet på servicen ændrer sig ikke.
Sådan vedligeholdes tilstanden
»Controlleren afstemmer — genstarter fejl, skalerer replikaer« er tilbagekoblingsløkken, og »Er pod'en sund?« er dens probe — liveness- og readiness-tjek afgør, om en pod bliver erstattet (»Nej«-grenen løber tilbage i afstemningen) eller beholdt. »Deploymentet forbliver i den ønskede tilstand« er sluttilstanden: ikke et færdigt job, men et kørende system, der matcher sit manifest.
Key relationships and takeaways
- Kubernetes er deklarativ: du angiver målet, ikke trinnene, og systemet klarer resten.
- Control plane beslutter, kubelet udfører — intet kører uden den ønskede tilstand i etcd.
- Afstemning er løkken: sammenlign, anvend forskellen, gentag, i det uendelige.
- Probes afgør sundheden, og sundheden afgør udskiftningen — en fejlende pod genstartes uden menneskelig handling.
- Kubernetes orkestrerer de containere, Docker pakker, og derfor hænger de to visuelle forklaringer sammen.
When to use this visual
- At forklare forskellen på control plane og worker-noder for et team, der er nyt i Kubernetes.
- At undervise i den deklarative model, før nogen skriver deres første Deployment- og Service-manifester.
- At forankre en samtale om selvhelbredelse — hvad Kubernetes retter automatisk, og hvad der stadig kræver en operatør.
Sådan fungerer det
Annotér det manifest, I faktisk kører
Tilføj noter på apply-trinnet om jeres faktiske Deployment og Service — antal replikaer, images, porte — så diagrammet afspejler jeres cluster.
Tilføj netværkslaget
Indsæt en Ingress-boks mellem servicen og brugerne, og notér, hvordan jeres cluster eksponerer trafik, for det er den del, de fleste team tilpasser først.
Vis jeres skaleringsregler
Udvid afstemningstrinnet med en gren til en Horizontal Pod Autoscaler, der skalerer replikaer på CPU eller egne metrikker, og som ender i sin egen tilstand.
Tilføj veje for fejl og lagring
Tag persistente volumener med til stateful workloads og de anti-affinity-regler, I bruger, hver med en kommentar, der forklarer hvorfor.
Ofte stillede spørgsmål
Hvad er Kubernetes med enkle ord?
Kubernetes er et system, der kører containeriserede programmer på tværs af et cluster af maskiner og holder dem kørende. Du fortæller det, hvad du vil have — hvor mange kopier af hvert program, hvilket image, hvilke porte — og det planlægger arbejdet ud på maskinerne, genstarter fejl, skalerer op og ned og dirigerer trafikken. Diagrammet fanger det som deklarér, planlæg, kør og vedligehold.
Hvad er control plane i Kubernetes?
Control plane er de komponenter, der træffer beslutninger om clusteret: API-serveren, der tager imod dine manifester, etcd, der gemmer den ønskede tilstand, scheduleren, der placerer pods, og controllerne, der afstemmer virkeligheden mod den ønskede tilstand. Det er hjernen. Worker-noderne er musklerne — hver af dem kører en kubelet, der starter og overvåger de pods, den får tildelt.
Hvad betyder »deklarativ« i Kubernetes?
Det betyder, at du beskriver måltilstanden i stedet for at give kommandoer for at nå den. Du anvender et manifest, der siger »kør tre replikaer«; Kubernetes finder ud af trinnene og bliver ved med at tage dem, hver gang virkeligheden driver. Dør en pod, opretter controlleren en erstatning for at komme tilbage til tre — intet menneske kører en kommando igen. Manifestet er sandhedskilden, og afstemningen er mekanismen.
Hvordan holder Kubernetes programmer sunde?
Gennem probes og afstemningsløkken. Liveness-probes fortæller Kubernetes, om en container er i live — en fejlende liveness-probe genstarter den. Readiness-probes fortæller, om en pod kan betjene trafik — en fejlende readiness-probe fjerner den fra servicen. Controlleren sammenligner den kørende tilstand med den ønskede og anvender forskellen løbende, og det er den løkke, beslutningen »Er pod'en sund?« i diagrammet står for.
Redigér dette diagram i QueryChart (FlowJam)
Åbn præcis dette Kubernetes-lærred som dit eget diagram, omdøb komponenterne til jeres eget cluster, og annotér jeres workloads.