Sobes.tech
Junior

Milyen típusú konténerek vannak a Kubernetesben?

sobes.tech MI

Válasz az MI-től

A Kubernetesben nincsenek "típusú" konténerek, mint külön technológiák. Minden Kubernetesben futó konténer szabványos konténer (általában Docker vagy kompatibilis motorok, például containerd vagy CRI-O alapján).

Az objektumtípusok, amelyek konténereket tartalmazhatnak Kubernetesben, a következők:

  • Pod: A legkisebb végrehajtható egység Kubernetesben. Egy Pod tartalmazhat egy vagy több konténert, amelyek közösen használják a hálózati teret, a tárolót és közös életciklussal rendelkeznek. Ez az alap "típus" az entitás, amely konténereket futtat.
  • Deployment: Egy magasabb szintű objektum, amely egy Pod-okat tartalmazó csoportot kezel. Deklaratív frissítést és skálázást biztosít. A Deployment létrehoz egy ReplicaSet-et, amely a Pod-okat kezeli. A konténerek a Deployment által hivatkozott Pod-specifikációban vannak meghatározva.
  • StatefulSet: Hasonló a Deploymenthez, de állapotot kezelő alkalmazásokhoz készült. Stabil hálózati neveket és tárolókat biztosít a Pod-ok számára. A konténerek szintén a Pod-specifikációban vannak meghatározva.
  • DaemonSet: Biztosítja, hogy egy Pod minden (vagy megadott) csomóponton fusson a klaszterben. Szolgáltatási konténerek futtatására használják, például naplógyűjtőket vagy megfigyelő ügynököket. A konténerek a Pod-specifikációban vannak meghatározva.
  • Job: Egy vagy több Pod-ot hoz létre, és garantálja azok végrehajtását a sikeres befejezésig. A konténerek a Pod-specifikációban vannak meghatározva.
  • CronJob: Ütemezés szerint hoz létre Jobs-t. A konténerek a Pod-specifikációban vannak meghatározva, amely a Job-hoz kapcsolódik.

Fontos megérteni, hogy a konténer maga a Pod-specifikációban van meghatározva. A kezelőobjektumok (Deployment, StatefulSet stb.) csak meghatározzák, hogy ezek a Pod-ok (és így a bennük lévő konténerek) hogyan legyenek telepítve, skálázva és kezelve.

Ha nem a technológia szerint "típus" konténerről van szó, hanem különböző típusú konténerekről egy Pod-on belül, akkor megkülönböztethetjük:

  • Application Containers: Az alkalmazás üzleti logikáját végző fő konténerek.
  • Init Containers: Olyan konténerek, amelyek a fő konténerek indítása előtt futnak a Pod-ban. Előkészítő feladatokat látnak el, például adatok inicializálását vagy konfiguráció beállítását. Sorban futnak, és sikeresen be kell fejeződniük, mielőtt a fő konténerek elindulnának.
  • Sidecar Containers: Olyan konténerek, amelyek párhuzamosan futnak a fő konténerrel, és segédfunkciókat nyújtanak, például naplógyűjtést, megfigyelést, hálózati proxyzást stb.

Példa YAML specifikáció egy Pod-ra init-konténerrel és fő konténerrel:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  initContainers: # Az init-konténer szekció
  - name: init-myservice
    image: myregistry/init-service:1.0.0
    command: ["sh", "-c", "echo Initializing... && sleep 5"]
    # Ez a konténer lesz az első, és sikeresen be kell fejeződnie
  containers: # A fő konténerek szekciója
  - name: myapp-container
    image: myregistry/myapp:latest
    ports:
    - containerPort: 80
    # Ez a konténer a sikeres init-konténerek befejezése után indul el