Sobes.tech
Middle+

Door welke factoren wordt de correcte voltooiing van de knoop bereikt, afhankelijk van de prioriteit van de pod?

sobes.tech AI

Antwoord van AI

De correcte afsluiting van een knooppunt wordt bereikt door de volgende factoren:

  1. Time-outs:
    • terminationGracePeriodSeconds: Bepaalt de tijd waarin de knooppunt probeert de pods correct af te sluiten voordat ze geforceerd worden verwijderd. Standaard 30 seconden.
    • pod.spec.terminationGracePeriodSeconds: Kan de timeout voor een specifieke pod overschrijven.
    # Voorbeeld van een pod manifest met een verlengde afsluittimeout
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod-with-grace-period
    spec:
      containers:
      - name: my-container
        image: my-image
      terminationGracePeriodSeconds: 60 # Verlengde timeout
    
  2. Signalen:
    • Kubernetes stuurt het signaal SIGTERM naar de containers van de pod.
    • De applicatie in de container moet in staat zijn om SIGTERM op te vangen en correct te verwerken (bijvoorbeeld, huidige verbindingen sluiten, status opslaan).
    • Als de applicatie niet binnen terminationGracePeriodSeconds stopt na SIGTERM, wordt SIGKILL gestuurd.
  3. Prioriteit van de pod (priorityClassName):
    • Bij resource-tekort of evacuatie van de knooppunt worden pods met lagere prioriteit als eerste beëindigd.
    • Dit zorgt ervoor dat kritieke (hoogprioriteits) pods langer blijven werken en meer tijd krijgen voor een correcte afsluiting als het knooppunt niet bereikbaar is.
    # Voorbeeld van een pod manifest met prioriteitsklasse
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-priority-pod
    spec:
      containers:
      - name: my-container
        image: my-image
      priorityClassName: high-priority # Gebruik van prioriteitsklasse
    
  4. PreStop hooks:
    • Extra scripts of aanroepen die worden uitgevoerd in de container net voordat SIGTERM wordt verzonden.
    • Kunnen worden gebruikt voor synchronisatie, uitschrijving van services of andere taken die nodig zijn voor een correcte afsluiting.
    # Voorbeeld van een PreStop hook
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod-with-prestop
    spec:
      containers:
      - name: my-container
        image: my-image
        lifecycle:
          preStop:
            exec:
              command: ["/bin/sh", "-c", "echo 'Stopping container...' && sleep 5 && exit 0"] # Voorbeeldcommando
    
  5. Beheer van eindpunten (Endpoints):
    • Kubernetes verwijdert het IP-adres van de pod uit het Endpoints-object van de Service bij het begin van de afsluiting, zodat nieuw verkeer niet naar de afsluitende pod wordt gestuurd.
    • Dit stelt bestaande verbindingen in staat om af te sluiten tijdens de grace-periode.

Samengevat stellen deze mechanismen Kubernetes in staat om het afsluitproces van pods op de knooppunt te beheren, rekening houdend met hun prioriteit, hen de kans te geven correct af te sluiten en geforceerde vernietiging te voorkomen waar mogelijk.