Sobes.tech
Junior

Kubernetesте кандай контейнерлер бар?

sobes.tech AI

AIден жооп

Кубернетеске "түптөр" катары контейнерлердин түрлөрү жок, технологиялардын ар түрдүүлүгүндө. Бардык Кубернетеске иштетилген контейнерлер стандарттык контейнерлер (адатта Docker же шайкеш кыймылдаткычтарга негизделген, мисалы containerd же CRI-O).

Кубернетесте контейнерлерди камтыган объекттердин түрлөрү төмөнкүлөр:

  • Pod: Кубернетестеги эң кичинекей ишке ашыруу бирдиги. Бир Pod бир же бир нече контейнерлерди камтышы мүмкүн, алар биргелешип тармактык кеңейтүү, сактоо жана жалпы жашоо циклине ээ. Бул контейнерлерди иштеткен негизги "тип".
  • Deployment: Жогорку деңгээлдеги объект, ал Podтердин топтомун башкаруу үчүн. Декларативдүү жаңыртуу жана масштабдоо камсыз кылат. Deployment ReplicaSet түзөт, ал Podтерди башкарат. Контейнерлер Deployment тарабынан шилтеме кылынган Pod спецификациясында аныкталган.
  • StatefulSet: Deploymentке окшош, бирок абалдуу тиркемелер үчүн. Туруктуу желе аттары жана сактоо жайлары менен Podтер үчүн камсыз кылат. Контейнерлер да Pod спецификациясында аныкталган.
  • DaemonSet: Көпчүлүк (же белгиленген) түйүндөрдө Pod иштешин камсыздайт. Лог чогултуучу же мониторинг агенттери сыяктуу кызматтык контейнерлерди иштетүү үчүн колдонулат. Контейнерлер Pod спецификациясында аныкталган.
  • Job: Бир же бир нече Pod түзөт жана алардын ийгиликтүү аяктоосун камсыздайт. Контейнерлер Pod спецификациясында аныкталган.
  • CronJob: Жобо боюнча иштетүү үчүн иштетет. Контейнерлер Job менен байланышкан Pod спецификациясында аныкталган.

Контейнер өзү Pod спецификациясында аныкталганын түшүнүү маанилүү. Башкаруу объекттери (Deployment, StatefulSet ж.б.) бул Podторду (жана алардын ичинде турган контейнерлерди) кандай жайгаштыруу, масштабдоо жана башкаруу керектигин гана аныктайт.

Эгер сиз "түп" катары эмес, бир Pod ичинде ар түрдүү контейнерлерди түшүндүрүп жатсаңыз, анда:

  • Application Containers: Бизнес логиканы иштеткен негизги контейнерлер.
  • Init Containers: Башкы контейнерлерди иштетүүдөн мурда иштетилүүчү контейнерлер. Даярдоо иштерин жүргүзүү үчүн колдонулат, мисалы, маалыматтарды баштоо же конфигурацияны орнотуу. Алар кезек-кезек иштейт жана бардык init контейнерлер ийгиликтүү аяктагандан кийин гана башталат.
  • Sidecar Containers: Башкы контейнер менен бирге иштеген жана лог чогултуу, мониторинг, тармактык трафикти прокси кылуу сыяктуу жардамчы функцияларды камсыздаган контейнерлер.

Pod үчүн init-контейнер жана негизги контейнер менен YAML мисалы:

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
spec:
  initContainers: # Init-контейнерлер бөлүмү
  - name: init-myservice
    image: myregistry/init-service:1.0.0
    command: ["sh", "-c", "echo Initializing... && sleep 5"]
    # Бул контейнер биринчи иштейт жана ийгиликтүү аяктоо керек
  containers: # Негизги контейнерлер бөлүмү
  - name: myapp-container
    image: myregistry/myapp:latest
    ports:
    - containerPort: 80
    # Бул контейнер бардык init-контейнерлер ийгиликтүү аяктагандан кийин иштетилет