Enhet 5 / 11

Kubernetes: Manifest, Helm og AI-drevet orkestrering

Gevinster:

  • Evne til å forstå de grunnleggende objektene (Pod, Deployment, Service, ConfigMap, Secret, Namespace) og deklarative filosofien til Kubernetes og produsere solide manifester for kunstig intelligens
  • Evne til å gjøre manifester klare for produksjon og sikre med ressursgrenser, helsesjekker (sonder), faste bildekoder og smale RBAC
  • Evne til å verifisere korrekt kontekst før utførelse og anvende tørrløpsdisiplin med tørrløp/diff

Det er enkelt å kjøre én container. Men å etablere et system som sprer hundrevis av containere over dusinvis av servere, starter automatisk på nytt når en av dem krasjer, replikerer det når belastningen øker, og oppdaterer det med null nedetid? Det er orkestrering, og industristandardverktøyet er Kubernetes (K8s for korte) – plattformen som automatisk distribuerer, skalerer og administrerer containere på tvers av en klynge. Kubernetes er kraftig, men kompleks: alt er definert av lange, innrykk-sensitive YAML-filer – kalt manifester. Det er her AI gir et friskt pust; Med riktig kontekst produserer den raskt disse manifestene og dekoder deres mystiske feil.

Men i Kubernetes betyr et feil manifest at man ikke klarer å stå opp en hel tjeneste, skalere feil eller etterlate en sårbarhet. Det er ditt ansvar å forstå og verifisere hvert manifest AI produserer - spesielt før kubectl gjelder.

Kubernetes kjerneobjekter

For å revidere Kubernetes, bør du kjenne til hovedkonseptene:

  • Pod: Minste arbeidsenhet; Den inneholder en eller flere beholdere. Vanligvis brukes ikke Poden direkte, men de overordnede objektene som administrerer den brukes.
  • Implementering: Definerer hvor mange kopier av en applikasjon som skal kjøres, hvilket bilde den skal bruke og hvordan den skal oppdateres. Hvis en Pod krasjer, vil den automatisk gjenskape den.
  • Tjeneste: Gir en fast nettverksadresse og lastbalansering til podene; Selv om pods kommer og går, endres ikke tilgangsadressen.
  • ConfigMap og Secret: Holder konfigurasjonsverdier og hemmelig informasjon atskilt fra Pods. ConfigMap er for eksplisitte innstillinger, Secret er for sensitive verdier.
  • Navneområde: Området som logisk deler og isolerer ressurser (f.eks. dev, prod).
  • Ingress: Regelsettet som dirigerer HTTP-trafikk fra omverdenen til tjenester i klyngen.

Helm er "pakkebehandleren" til Kubernetes: den lar deg male gjentakende manifester (diagrammer) og installere dem med forskjellige verdier i forskjellige miljøer med en enkelt kommando. AI produserer både råmanifest og Helm-diagram.

Hvorfor er det så mange gjenstander? Fordi kjernefilosofien til Kubernetes er deklarativ: du definerer "hvordan du vil at systemet til slutt skal se ut" (f.eks. "har alltid 3 kopier av denne applikasjonen i gang"), mens Kubernetes kontinuerlig flytter gjeldende tilstand nærmere den ønskede tilstanden. Hvis en Pod dør, skaper den en ny; hvis en node går ned, flytter den arbeidsbelastningen til en annen node. Det er derfor manifester ikke er «gjør»-kommandoer, men «la det være slik»-oppskrifter. Å forstå denne forskjellen er avgjørende når du leser manifestene som AI produserer: hvert domene beskriver en del av den ønskede tilstanden til systemet. Et feil domene betyr at Kubernetes jobber mot et galt mål - og det målet håndheves stille, vedvarende.

Tips: I Kubernetes er det viktigste sikre testverktøyet kubectl apply --dry-run=server -f file.yaml: det viser om serveren vil akseptere og hva den skal gjøre uten å faktisk bruke manifestet. Sørg for å kjøre dry-run og kubectl diff før du bruker et manifest på prod.

Trinn for trinn: Lage manifester med AI

  1. Beskriv søknad og behov. Bildenavn, port, hvor mange replikaer, ressursgrenser (CPU/minne).
  2. Be om distribusjon + tjeneste. Vanligvis kreves begge sammen.
  3. Separat konfigurasjon og hemmelig. Innstillinger til ConfigMap, sensitive verdier til Secret.
  4. Legg til helsesjekker. livenessProbe (er den live) og readinessProbe (er den klar for trafikk) er kritiske.
  5. Sett en ressursgrense. Uten forespørsler/begrensninger kan en Pod konsumere hele noden.
  6. Bekreft med `--dry-run` og `diff`, og bruk deretter. Først i testnavnerommet.

Sikkerhet: Kubernetes-spesifikke risikoer

  1. Hemmeligheten er egentlig ikke hemmelig – den er bare base64. Kubernetes Secret objektbase64 koder verdier; Dette er ikke kryptering, det er enkelt å dekryptere. For ekte personvern kreves etcd-kryptering og eksternt hvelv (Vault, cloud secret manager). Aldri begå hemmelige manifester direkte til Git (det finnes løsninger for dette som forseglede hemmeligheter/eksterne hemmeligheter).
  2. Sett en ressursgrense. En Pod uten grenser kan krasje hele noden med en minnelekkasje.
  3. Minimumsmyndighet (RBAC). Med rollebasert tilgangskontroll har hver tjeneste/bruker kun de tillatelsene den trenger. AI gir noen ganger stor cluster-admin; begrense dette.
  4. Ikke bruk den «nyeste» bildekoden. Du vet ikke hvilken versjon som kjører, og du kan ikke rulle den tilbake.
Forsiktig: kubectl-sletting eller feil bruk kan ødelegge en live-distribusjon. Sørg for å bekrefte hvilket navneområde du er i (kubectl config gjeldende-kontekst) før du kjører kommandoene; Utilsiktet arbeid er en vanlig katastrofe i produksjonssammenheng.

Rått manifest vs. Helm-tabell

kriterium

Rå YAML-manifest

Hjelmdiagram

Installasjon

kubectl anvende -f

montering av roret

Multimedia (utvikler/prod)

Copy-paste, utsatt for feil

Enkelt diagram, forskjellige verdier.yaml

Versjon/tilbakeføring

for hånd

enkelt med tilbakerulling av roret

Læringskurve

lav

medium

når

Lite, enkelt miljø

Multimedia, repeterende tjeneste

tre minisaker

Sak 1 - hemmeligheten bak den krasjete tjenesten. En Pod startet hele tiden på nytt (CrashLoopBackOff). Teamet ga loggene og manifestet til AI; AI viste at Pod aldri ble ansett som "klar" fordi readinessProbe så på feil port. De fikset havnen, tjenesten ble stabil på 10 minutter. Å etablere dette forholdet manuelt kan ta timer.

Tilfelle 2 — ikke å sette grenser brøt knuten. Det var ingen begrensninger i en distribusjon; En minnelekkasje svulmet opp Pod-en og krasjet hele noden, og dermed også nabotjenester. Etter hendelsen fikk de AI til å si "legg til rimelige CPU/minneforespørsler og grenser for alle distribusjoner" og gjorde det til standard. Én manglende linje kostet timer med nedetid.

Tilfelle 3 - stor RBAC fanget. Under en undersøkelse ble det funnet at et ServiceAccount-manifest generert av AI var knyttet til klynge-admin-rollen – noe som betyr at tjenesten kunne administrere hele klyngen. Teamet begrenset tillatelsen til kun å lese Pods i navneområdet deres. Prinsippet om minste privilegium lukket en sikkerhetssårbarhet.

Fire kopierbare maler

1) Implementering + tjenesteproduksjon:

Skriv et distribusjons- og tjenestemanifest for Kubernetes. Applikasjon: [AD], bilde: [bilde: fast versjon], port: [X], replika: [N]. Regler:- Legg til CPU/minneforespørsler og begrensninger.- Definer livenessProbe og readinessProbe.- Les konfigurasjon fra ConfigMap, hemmelig fra hemmelig objekt; Ikke bygg inn verdier i manifestet, bruk plassholdere. - IKKE bruk image tag ":latest". Gi med beskrivelse.

2) Manifest feilløsning:

Gjeldende Pod er i tilstanden [CrashLoopBackOff / Pending / ImagePullBackOff]. I henhold til følgende manifest og 'kubectl describe'-utdata, liste opp mulige grunnårsaker i sannsynlighetsrekkefølge og utsted verify-kommandoen for hver. Manifest: [YAML] Beskriv: [OUTPUT]

3) Sikkerhets-/integritetssjekk:

Sjekk dette Kubernetes-manifestet: mangler ressursgrensen, mangler den prob, er det en :siste tag, er det en for bred RBAC/tillatelse, er hemmeligheten innebygd i manifestet? Skriv funnene i viktig rekkefølge og med korrigering. Manifest: [YAML]

4) Konvertering til rordiagram:

Konverter følgende råmanifester til et gjenbrukbart Helm-diagram: hvilke verdier skal gå ut til values.yaml (bilde, replika, kilde, miljø)? Vis diagramstruktur og eksempelverdier.yaml.Manifests: [YAML]

Svak forespørsel / Sterk forespørsel

Svak: "Skriv Kubernetes YAML for søknaden min."

Resultat: en no-probe, no-limit distribusjon med :latest tag, innebygd den hemmelige sletten; Usikker og skjør i prod.

Sterk: "Skriv Kubernetes Deployment + Service. Bilde minapp:1.4.2, 3 replikaer, 8080 porter. CPU 100m-500m, minne 128Mi-512Mi legg til forespørsler/grenser. Sett liveness probe for /healthz, readiness probe for /readyed it. Les hemmeligheten fra manifestet med beskrivelsen."

Forskjell: andre ledetekstversjon gir skala, ressursgrenser, helsesjekker og hemmelig regel; Utgangen er nær produksjon og trygg.

Vanlige feil

  • Setter ikke ressursgrenser. En enkelt Pod kan konsumere hele noden.
  • Legger ikke til en helsesjekk (sonde). Kubernetes kan ikke oppdage en krasjet/ikke klar Pod.
  • `:siste` tag. Det blir uklart hvilken versjon som kjører, den kan ikke rulles tilbake.
  • Overgir hemmeligheten direkte til Git. Base64 er ikke kryptering; alle løser det.
  • Kjører kommandoer i feil kontekst/navneområde. Den vanligste måten å krasje på i prod.
  • hopper over `--dry-run`/`diff`. Ser ikke hva som vil skje før implementering.

Oppsummert

Kubernetes er en kraftig, men kompleks orkestrator som automatisk distribuerer, skalerer og optimerer beholdere på tvers av en klynge; Alt er definert av manifest YAMLs, som Helm maler. AI produserer raskt implementerings-/tjenestemanifester og rordiagrammer, løser mystiske feil – men du må eksplisitt be om ressursgrense, helsesjekk, uforanderlig bildekode, smale RBAC og hemmelige sikkerhetsregler. --tørrkjøring, diff og korrekt kontekstsjekking er vaner som forhindrer prod-krasj.

Søknadsoppgave

Få AI til å generere et manifest for en eksempelapplikasjon med malen "Deployment + Service generation". Deretter: (1) Få det sjekket for ressursgrense, probe, :nyeste og hemmelig med malen "Sikkerhets-/tilregnelighetssjekk"; (2) kjør kubectl apply --dry-run=server på en testklynge/minikube hvis mulig og les utdataene; (3) legg merke til de to mest kritiske sikkerhets-/robusthetselementene du finner mangler.

sjekkliste

  • [ ] Jeg la til bildeversjonen, antall replikaer, port- og ressursgrenser i forespørselen min.
  • [ ] Jeg la livlighet og beredskapsundersøkelse til manifestet.
  • [ ] Bildetag fikset; Jeg brukte ikke :latest.
  • [ ] Secret er ikke innebygd i manifestet; Jeg brukte hemmelig objekt/eksternt hvelv.
  • [ ] Jeg begrenset RBAC/tillatelser til minimale tillatelser.
  • [ ] Før jeg søkte, bekreftet jeg at jeg var i riktig kontekst og at --dry-run/diff utganger.