Sobes.tech
Junior

Aké typy kontajnerov existujú v Kubernetes?

sobes.tech AI

Odpoveď od AI

V Kubernetes nie sú "typy" kontajnerov ako také v zmysle rôznych technológií kontajnerizácie. Všetky kontajnery, ktoré bežia v Kubernetes, sú štandardné kontajnery (zvyčajne založené na Docker alebo kompatibilných motoroch, ako sú containerd alebo CRI-O).

Typy objektov, ktoré môžu obsahovať kontajnery v Kubernetes, zahŕňajú:

  • Pod: Najmenšia výkonná jednotka v Kubernetes. Jeden Pod môže obsahovať jeden alebo viac kontajnerov, ktoré zdieľajú sieťový priestor, úložisko a majú spoločný životný cyklus. Toto je základný "typ" entity, ktorá spúšťa kontajnery.
  • Deployment: Objekt vyššej úrovne, ktorý spravuje skupinu Podov. Poskytuje deklaratívnu aktualizáciu a škálovanie. Deployment vytvára ReplicaSet, ktorý ďalej spravuje Pody. Kontajnery sú definované v špecifikácii Podu, na ktorý sa Deployment odkazuje.
  • StatefulSet: Podobný Deploymentu, ale určený pre stavové aplikácie. Zabezpečuje stabilné názvy siete a úložiská pre Pody. Kontajnery sú tiež definované v špecifikácii Podu.
  • DaemonSet: Zaručuje, že Pod beží na všetkých (alebo určených) uzloch klastru. Používa sa na spustenie služobných kontajnerov, ako sú zberače logov alebo monitorovacie agenti. Kontajnery sú definované v špecifikácii Podu.
  • Job: Vytvára jeden alebo viac Podov a zaručuje ich vykonanie do úspešného ukončenia. Kontajnery sú definované v špecifikácii Podu.
  • CronJob: Vytvára Jobs podľa rozvrhu. Kontajnery sú definované v špecifikácii Podu, ktorý je s Jobom spojený.

Je dôležité pochopiť, že samotný kontajner je definovaný v špecifikácii Podu. Objekty riadenia (Deployment, StatefulSet atď.) len určujú, ako majú byť tieto Pody (a teda kontajnery v nich) nasadené, škálované a spravované.

Ak ste mali na mysli nie "typ" kontajnera podľa technológie, ale rôzne druhy kontajnerov v rámci jedného Podu, potom je možné ich rozlíšiť:

  • Application Containers: Hlavné kontajnery, ktoré vykonávajú obchodnú logiku aplikácie.
  • Init Containers: Kontajnery, ktoré sa spúšťajú pred spustením hlavných kontajnerov v Pode. Používajú sa na vykonanie prípravných úloh, ako je inicializácia dát alebo nastavenie konfigurácie. Spúšťajú sa sekvenčne a musia úspešne dokončiť, než budú spustené hlavné kontajnery.
  • Sidecar Containers: Kontajnery, ktoré bežia paralelne s hlavným kontajnerom a poskytujú pomocné funkcie, ako je zber logov, monitorovanie, proxyovanie sieťového prenosu atď.

Príklad YAML špecifikácie Podu s init-kontajnerom a hlavným kontajnerom:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  initContainers: # Sekcia pre init-kontajnery
  - name: init-myservice
    image: myregistry/init-service:1.0.0
    command: ["sh", "-c", "echo Initializing... && sleep 5"]
    # Tento kontajner sa spustí prvý a musí úspešne dokončiť
  containers: # Sekcia pre hlavné kontajnery
  - name: myapp-container
    image: myregistry/myapp:latest
    ports:
    - containerPort: 80
    # Tento kontajner sa spustí po úspešnom dokončení všetkých init-kontajnerov