Sobes.tech
Junior

Kubernetesda qanday konteyner turlari mavjud?

sobes.tech AI

AIdan javob

Kubernetesda konteyner turlari texnologiyalarning turiga ko‘ra emas, balki standart konteynerlar (odatda Docker yoki containerd yoki CRI-O kabi mos keladigan dvigatellar asosida) hisoblanadi.

Kubernetesda konteynerlarni o‘z ichiga oladigan ob'ekt turlari quyidagilardan iborat:

  • Pod: Kubernetesda eng kichik bajariladigan birlik. Bir Pod bir yoki bir nechta konteynerlarni o‘z ichiga olishi mumkin, ular tarmoq maydonini, saqlashni bo‘lishadi va umumiy hayot tsikliga ega. Bu konteynerlarni ishga tushiradigan asosiy "turi" ob'ekt.
  • Deployment: Yuqori darajali ob'ekt bo‘lib, Podlar to‘plamini boshqaradi. Declarative yangilash va miqyoslashni ta'minlaydi. Deployment, o‘z navbatida, Podlarni boshqaradigan ReplicaSet yaratadi. Konteynerlar Deploymentga murojaat qiladigan Pod spetsifikatsiyasida aniqlanadi.
  • StatefulSet: Deploymentga o‘xshaydi, lekin holatli ilovalar uchun mo‘ljallangan. Podlar uchun barqaror tarmoq va saqlash nomlarini ta'minlaydi. Konteynerlar ham Pod spetsifikatsiyasida aniqlanadi.
  • DaemonSet: Klasterdagi barcha (yoki belgilangan) tugunlarda Podning ishlashini kafolatlaydi. Log yig‘uvchilar yoki monitoring agentlari kabi xizmat konteynerlarini ishga tushirish uchun ishlatiladi. Konteynerlar Pod spetsifikatsiyasida aniqlanadi.
  • Job: Bir yoki bir nechta Podlar yaratadi va ularning muvaffaqiyatli bajarilishini ta'minlaydi. Konteynerlar Pod spetsifikatsiyasida aniqlanadi.
  • CronJob: Jadval bo‘yicha Jobs yaratadi. Konteynerlar, Job bilan bog‘langan Pod spetsifikatsiyasida aniqlanadi.

Konteyner o‘zi Pod spetsifikatsiyasida aniqlanganligini tushunish muhim. Boshqaruv ob'ektlari (Deployment, StatefulSet va boshqalar) faqat bu Podlar (va ularning ichidagi konteynerlar) qanday joylashtirilishi, miqyoslash va boshqarilishi haqida belgilaydi.

Agar konteynerning texnologiyaga ko‘ra emas, balki bir Pod ichidagi turli xil konteyner turlari nazarda tutilayotgan bo‘lsa, quyidagicha ajratish mumkin:

  • Application Containers: Asosiy konteynerlar, ilovaning biznes logikasini bajaradi.
  • Init Containers: Poddagi asosiy konteynerlar ishga tushmasidan oldin ishlaydigan konteynerlar. Ular ma'lumotlarni tayyorlash yoki sozlash kabi tayyorgarlik vazifalarini bajaradi. Ular ketma-ket ishlaydi va muvaffaqiyatli tugashlari kerak, shundan so‘ng asosiy konteynerlar ishga tushadi.
  • Sidecar Containers: Asosiy konteyner bilan parallel ishlaydigan va yordamchi funksiyalarni ta'minlaydigan konteynerlar, masalan, loglarni yig‘ish, monitoring, tarmoq proksiysi va boshqalar.

YAML spetsifikatsiya misoli:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  initContainers: # Init konteynerlar uchun bo‘lim
  - name: init-myservice
    image: myregistry/init-service:1.0.0
    command: ["sh", "-c", "echo Initializing... && sleep 5"]
    # Bu konteyner birinchi bo‘lib ishga tushadi va muvaffaqiyatli tugashi kerak
  containers: # Asosiy konteynerlar uchun bo‘lim
  - name: myapp-container
    image: myregistry/myapp:latest
    ports:
    - containerPort: 80
    # Bu konteyner barcha init-konteynerlar muvaffaqiyatli tugagach ishga tushadi