Grundlæggende Kubernetes · Lektion

Ressourcekvoter og limitområder

Forebyg problemer med støjende naboer og løbsk workloads ved at håndhæve ResourceQuotas på namespace-niveau og LimitRanges pr. Pod.

Lektion 4 af 413 trin

Ressourcekvoter og limitområder er en gratis Grundlæggende Kubernetes-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Grundlæggende Kubernetes, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Grundlæggende Kubernetes-kurset indeholder 4 lektioner i alt.

Beskyttelsesregler for delte klynger

I en delt klynge kan ét team ved et uheld bruge alle ressourcerne. ResourceQuotas og LimitRanges er beskyttelsesregler, der sikrer fairness mellem navnerum og forhindrer driftsstop.

Hvad er en ResourceQuota

En ResourceQuota sætter et loft over de samlede ressourcer, et navnerum må bruge: CPU, hukommelse og antal objekter som Pods eller Services.

En beregningskvote

Denne kvote begrænser de samlede ressourceanmodninger og -grænser for alle Pods i navnerummet.

apiVersion: v1
kind: ResourceQuota
metadata:
  name: team-compute
  namespace: team-a
spec:
  hard:
    requests.cpu: '4'
    requests.memory: 8Gi
    limits.cpu: '8'
    limits.memory: 16Gi

Kvoter for antal objekter

Kvoter kan også begrænse, hvor mange objekter af hver type der må eksistere, så utilsigtet ukontrolleret vækst forhindres.

spec:
  hard:
    pods: '20'
    services: '5'
    persistentvolumeclaims: '10'

Reglen for håndhævelse af kvoter

Når der er angivet en ResourceQuota for beregningsressourcer, skal hver Pod angive ressourceanmodninger og -grænser, ellers afvises den. Kvoten kan ikke tage højde for Pods uden begrænsninger.

Kontrol af kvoteforbrug

Undersøg, hvor meget af en kvote der er brugt på et hvilket som helst tidspunkt.

kubectl describe resourcequota team-compute -n team-a
# Resource         Used  Hard
# requests.cpu     2     4
# requests.memory  3Gi   8Gi

Hvad er en LimitRange?

En LimitRange anvender standardværdier og grænser for hvert objekt i et navneområde, så individuelle Pods begrænses, selv hvis en udvikler glemmer at angive værdier.

Standardværdier og grænser

En LimitRange kan indsætte standardværdier for ressourceanmodninger og -grænser samt håndhæve minimum og maksimum for hver container.

apiVersion: v1
kind: LimitRange
metadata:
  name: container-limits
  namespace: team-a
spec:
  limits:
  - type: Container
    default:
      cpu: 500m
      memory: 256Mi
    defaultRequest:
      cpu: 250m
      memory: 128Mi
    max:
      cpu: '2'
      memory: 1Gi

Sådan fungerer de sammen

LimitRange udfylder standardværdier for hver container, hvorefter ResourceQuota lægger det hele sammen og holder det op mod navneområdets grænse. Sammen sikrer de både fornuftig dimensionering pr. Pod og en rimelig samlet mængde for navneområdet.

Fejlfinding af afvisninger

Hvis en Pod afvises, angiver fejlen den politik, der blev overtrådt. Læs den grundigt: Den fortæller dig, om du overskred kvoten eller overtrådte en grænse i en LimitRange.

# exceeded quota: team-compute, requested: requests.cpu=2, used: 3, limited: 4
# maximum cpu usage per Container is 2, but limit is 4

Tips til produktion

  • Angiv en LimitRange, så glemte ressourceanmodninger ikke får kvoten til at fejle
  • Dimensionér kvoter ud fra det faktiske forbrug med plads til spidsbelastninger
  • Gennemgå forbruget regelmæssigt, og justér det, efterhånden som teams vokser

Hurtigt tjek

Test din forståelse af sikkerhedsregler for navneområder.

Opsummering

Du har lært at sikre rimelig fordeling med ResourceQuotas (grænser på navneområdeniveau for beregningsressourcer og antal objekter) og LimitRanges (standardværdier og grænser pr. container). Brugt sammen forhindrer de problemer med støjende naboer og holder delte klynger stabile – en vigtig bedste praksis i produktion.

Gratis at komme i gang

Lær Grundlæggende Kubernetes med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Ressourcekvoter og limitområder” gratis?

Ja — alle 3 lektioner i læringssporet Grundlæggende Kubernetes, inklusive “Ressourcekvoter og limitområder”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Grundlæggende Kubernetes-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Ressourcekvoter og limitområder”?

Forebyg problemer med støjende naboer og løbsk workloads ved at håndhæve ResourceQuotas på namespace-niveau og LimitRanges pr. Pod. Du øver dig i Grundlæggende Kubernetes med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Grundlæggende Kubernetes?

Der kræves ingen tidligere erfaring. Grundlæggende Kubernetes på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Ressourcekvoter og limitområder”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Grundlæggende Kubernetes-lektion?

Ja. Alle Grundlæggende Kubernetes-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Diagnosticering af almindelige problemer
  2. Fejlfinding af Pods og Services
  3. Bedste praksis og tips til produktion
  4. Ressourcekvoter og limitområder
← Tilbage til Grundlæggende Kubernetes