Sobes.tech
Middle+

Aké faktory zabezpečujú správne ukončenie uzla v závislosti od priority poda?

sobes.tech AI

Odpoveď od AI

Správne ukončenie práce uzla saťahuje sa nasledujúcich faktorov:

  1. Časové limity:
    • terminationGracePeriodSeconds: Určuje čas, počas ktorého sa uzol pokúsi správne ukončiť prácu podov pred ich núteným zničením. Predvolene je 30 sekúnd.
    • pod.spec.terminationGracePeriodSeconds: Môže prepísať časový limit pre konkrétny pod.
    # Príklad manifestu podu s predĺženým časom ukončenia
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod-with-grace-period
    spec:
      containers:
      - name: my-container
        image: my-image
      terminationGracePeriodSeconds: 60 # Predĺžený čas
    
  2. Signály:
    • Kubernetes odosiela signál SIGTERM kontajnerom podu.
    • Aplikácia v kontajneri by mala byť schopná zachytiť SIGTERM a správne s ním zaobchádzať (napríklad ukončenie aktuálnych spojení, uloženie stavu).
    • Ak aplikácia neukončí prácu na SIGTERM v rámci terminationGracePeriodSeconds, odošle sa SIGKILL.
  3. Priorita podu (priorityClassName):
    • Pri vytlačení (napríklad pri nedostatku zdrojov alebo evakuácii uzla) sa pody s nižšou prioritou ukončujú ako prvé.
    • To zabezpečuje, že kriticky dôležité (vysokoprioritné) pody budú fungovať dlhšie a dostanú viac času na správne ukončenie, ak sa uzol stane nedostupným.
    # Príklad manifestu podu s určením priority
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-priority-pod
    spec:
      containers:
      - name: my-container
        image: my-image
      priorityClassName: high-priority # Použitie triedy priority
    
  4. PreStop hooky:
    • Ďalšie skripty alebo volania, ktoré sa vykonávajú v kontejnere tesne pred odoslaním SIGTERM.
    • Môžu byť použité na synchronizáciu, odhlásenie zo služieb alebo iné úlohy potrebné na správne ukončenie.
    # Príklad PreStop hooku
    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"] # Príklad príkazu
    
  5. Správa koncových bodov (Endpoints):
    • Kubernetes odstraňuje IP adresu poda z objektu Endpoints Service pri začiatku ukončenia, aby nový prenos nebol smerovaný na ukončujúci sa pod.
    • To umožňuje, aby existujúce spojenia boli ukončené počas grace period.

Tieto mechanizmy umožňujú Kubernetes riadiť proces ukončenia podov na uzle, zohľadňujúc ich prioritu, a poskytujú im šancu na správne ukončenie, čím sa vyhýbajú nútenému zničeniu tam, kde je to možné.