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