Sobes.tech
Junior

Kādi konteineru tipi pastāv Kubernetes?

sobes.tech AI

Atbilde no AI

Kubernetes nav pastāv "tipi" konteineriem kā tādi dažādu konteinerizācijas tehnoloģiju nozīmē. Visi konteineri, kas tiek palaisti Kubernetes, ir standarta konteineri (parasti balstīti uz Docker vai līdzīgām motoriem, piemēram, containerd vai CRI-O).

Objektu tipi, kas var saturēt konteinerus Kubernetes, ietver:

  • Pod: Mazākā izpildes vienība Kubernetes. Viens Pod var saturēt vienu vai vairākus konteinerus, kas kopīgi izmanto tīkla telpu, glabātuvi un ir kopīga dzīves cikla. Šis ir galvenais "tips" vienībai, kas palaista konteinerus.
  • Deployment: Augstākā līmeņa objekts, kas pārvalda Pod kopu. Nodrošina deklaratīvu Pod atjaunināšanu un mērogošanu. Deployment izveido ReplicaSet, kas savukārt pārvalda Pod. Konteineri ir definēti Pod specifikācijā, uz kuru atsaucas Deployment.
  • StatefulSet: Līdzīgs Deployment, bet paredzēts stāvokļa lietojumprogrammām. Nodrošina stabilus tīkla un glabāšanas nosaukumus Podiem. Konteineri arī ir definēti Pod specifikācijā.
  • DaemonSet: Garantē, ka Pod darbojas visos (vai norādītajos) klastera mezglos. Izmanto pakalpojumu konteineru, piemēram, žurnālu vākšanas vai uzraudzības aģentu, palaistšanai. Konteineri ir definēti Pod specifikācijā.
  • Job: Izveido vienu vai vairākus Podus un garantē to izpildi līdz veiksmīgai pabeigšanai. Konteineri ir definēti Pod specifikācijā.
  • CronJob: Izveido Jobs pēc grafika. Konteineri ir definēti Pod specifikācijā, kas saistīta ar Job.

Svarīgi saprast, ka konteineris pats par sevi ir definēts Pod specifikācijā. Pārvaldības objekti (Deployment, StatefulSet utt.) tikai nosaka, kā šie Pod (un attiecīgi konteineri tajos) jāizvieto, jāmēro un jāpārvalda.

Ja domāts ne "konteinera tips" pēc tehnoloģijas, bet dažādi konteineri vienā Pod, tad var izdalīt:

  • Application Containers: Galvenie konteineri, kas veic lietojumprogrammas biznesloģiku.
  • Init Containers: Konteineri, kas tiek izpildīti pirms galveno konteineru palaišanas Pod. Tiek izmantoti sagatavošanas uzdevumu veikšanai, piemēram, datu inicializācijai vai konfigurācijas iestatīšanai. Tiek izpildīti secīgi un jābeidzas ar panākumiem, pirms tiek palaisti galvenie konteineri.
  • Sidecar Containers: Konteineri, kas darbojas paralēli galvenajam konteineram un nodrošina papildu funkcijas, piemēram, žurnālu vākšanu, uzraudzību, tīkla trafika starpniecību u.c.

Piemērs YAML specifikācijai Pod ar init-konteineru un galveno konteineru:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  initContainers: # Sekcija init-konteineriem
  - name: init-myservice
    image: myregistry/init-service:1.0.0
    command: ["sh", "-c", "echo Initializing... && sleep 5"]
    # Šis konteineris tiks izpildīts pirmais un tam jābeidzas ar panākumiem
  containers: # Sekcija galveno konteineru
  - name: myapp-container
    image: myregistry/myapp:latest
    ports:
    - containerPort: 80
    # Šis konteineris tiks palaists pēc visiem init-konteineru veiksmīgas pabeigšanas