← Natrag
AI

Maskirane jedinice: Zašto se orkestratori ponovno pokreću i kontrolirati

Damir Radulić· 9. listopada 2026.· 2 min čitanja· 2 pregleda
Maskirane jedinice: Zašto se orkestratori ponovno pokreću i kontrolirati
🎧 Poslušaj članak

U Linux‑sustavima sistemd je najčešće korišten servisni menadžer. Jedna od njegovih značajki je maskiranje jedinice – to je način da se sistemd obavijesti da ne želi pokrenuti određeni servis ili uslugu. Maskiranje se obično radi povezivanjem jedinice na /dev/null, čime se onemogućuje bilo kakav pokretni proces.

Međutim, u modernim okruženjima – posebno u kontejnerskim orkestratorima poput Kubernetes, OpenShift ili Docker Swarm – maskirane jedinice ne ostaju nepokrenute. Orkestratori i agenti za upravljanje konfiguracijom (npr. Ansible, Chef, Puppet) često ne uzimaju u obzir maskiranje i nastavljaju pokušavati pokrenuti servis. Rezultat je da se maskirane jedinice „obnavljaju“ ili ponovno postavljaju u aktivno stanje, što može uzrokovati neočekivane greške ili sigurnosne propuste.

Zašto se maskirane jedinice vraćaju?

  • Neodgovarajući konfiguracijski agent: Agent koji upravlja konfiguracijom može biti postavljen da automatski pokrene sve jedinice, bez obzira na maskiranje. To je često slučaj u DevOps‑pipeline‑ima gdje se želi osigurati da sve usluge rade.
  • Orkestrator s vlastitim pravilima: Kubernetes, na primjer, koristi initContainers i sidecar kontejnere koji mogu pokrenuti sistemd unutar podova, ignorirajući maskiranje na hostu.
  • Watchdog i recovery mehanizmi: Uređaji poput systemd‑service‑watchdog ili custom scripts često provjeravaju status servisa i automatski ga restartuju ako je neaktivni.
  • Konflikt između hosta i kontejnera: Maskiranje na hostu ne utječe na jedinice unutar kontejnera, pa se unutar kontejnera može pokrenuti ista usluga.

Kako kontrolirati maskirane jedinice u orkestratorima?

1. Koristite labeling i selektore: U Kubernetesu možete označiti resurse systemd.mask=true i koristiti nodeSelector ili taints da izbjegnete pokretanje maskiranih servisa na određenim čvorovima.

2. Konfigurirajte agent: U Ansible‑playbooku ili Chef‑recipe‑u postavite systemd_unit { name: "myservice", masked: true } kako bi agent znao da ne pokreće servis.

3. Koristite systemctl mask unutar kontejnera: Ako je servis unutar kontejnera, možete ga maskirati unutar samog kontejnera kako bi se izbjeglo njegovo pokretanje.

4. Implementirajte watchdog‑policy: U postavkama watchdog‑a postavite WatchdogSec=0 ili Restart=no za maskirane jedinice.

Primjer: Maskiranje u Kubernetesu

Recimo da imate servis nginx.service koji želite maskirati na svim čvorovima. U vašem deployment‑file‑u dodajte:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    systemd.mask: "true"
spec:
  containers:
  - name: nginx
    image: nginx:latest
    command: ["/bin/sh", "-c", "systemctl mask nginx.service && nginx -g 'daemon off;'"]

Ovaj pristup osigurava da se nginx.service maskira prije pokretanja samog Nginx‑a, čime se sprječava bilo kakav konflikt s host‑sistemd‑om.

Zaključak

Maskiranje je moćan alat za upravljanje sistemd jedinicama, ali u orkestriranim okruženjima zahtijeva dodatnu pažnju. Pravilnim konfiguriranjem agenata, orkestratora i watchdog‑a, možete osigurati da maskirane jedinice ostanu onemogućene i da se izbjegnu neočekivani restartovi.

sistemdmaskiranjeorkestratoriDevOpsadministracija

Zanima vas ovakva AI tehnologija?

RiNET gradi sovereign AI rjesenja za javni sektor i poduzeca - od civic intelligence do automatizacije nabave.

Kontaktirajte nas →
0 komentara

Komentari