Sobes.tech
Middle+

Milyen tényezők biztosítják a csomópont helyes befejezését a pod prioritásától függően?

sobes.tech MI

Válasz az MI-től

A csomópont működésének helyes befejezése a következő tényezőktől függ:

  1. Időkorlátok:
    • terminationGracePeriodSeconds: Meghatározza, hogy mennyi idő áll rendelkezésre a podok helyes leállítására, mielőtt kényszerített módon megsemmisítésre kerülnek. Alapértelmezett 30 másodperc.
    • pod.spec.terminationGracePeriodSeconds: Felülírhatja az időkorlátot egy adott pod esetében.
    # Példa egy pod manifestre, amely megnövelt leállási időtartamot mutat
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod-with-grace-period
    spec:
      containers:
      - name: my-container
        image: my-image
      terminationGracePeriodSeconds: 60 # Megnövelt időtartam
    
  2. Jelzések:
    • A Kubernetes SIGTERM jelet küld a pod konténereinek.
    • A konténerben futó alkalmazásnak képesnek kell lennie fogni a SIGTERM jelet és helyesen kezelni azt (pl. aktuális kapcsolatok lezárása, állapot mentése).
    • Ha az alkalmazás nem fejeződik be a SIGTERM jelre a terminationGracePeriodSeconds időn belül, akkor küldésre kerül a SIGKILL jel.
  3. Pod prioritás (priorityClassName):
    • Kihívás esetén (pl. erőforrás hiánya vagy node evakuálás) a alacsonyabb prioritású podok kerülnek elsőként leállításra.
    • Ez biztosítja, hogy a kritikus (magas prioritású) podok hosszabb ideig működjenek, és több időt kapjanak a helyes befejezéshez, ha a node nem elérhető.
    # Példa egy pod manifestre prioritás megadásával
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-priority-pod
    spec:
      containers:
      - name: my-container
        image: my-image
      priorityClassName: high-priority # Prioritási osztály használata
    
  4. PreStop hook-ok:
    • Kiegészítő szkriptek vagy hívások, amelyek a konténerben futnak közvetlenül a SIGTERM küldése előtt.
    • Használhatók szinkronizációra, szolgáltatásokról való leiratkozásra vagy más, a helyes befejezést segítő feladatokra.
    # Példa PreStop hook-ra
    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"] # Parancs példa
    
  5. Végpontok kezelése (Endpoints):
    • A Kubernetes eltávolítja a pod IP-jét a Endpoints Service objektumból a leállítás megkezdésekor, hogy az új forgalom ne irányuljon a leálló podra.
    • Ez lehetővé teszi a meglévő kapcsolatok befejezését a grace period alatt.

Ezek a mechanizmusok összességében lehetővé teszik a Kubernetes számára, hogy kezelje a podok leállítási folyamatát a node-on, figyelembe véve azok prioritását, és lehetőséget adva a helyes befejezésre, elkerülve a kényszerített megsemmisítést, ahol csak lehetséges.