Bosh sahifa Wiki Kubernetes

Kubernetes

Kubernetes — containerlashtirilgan dasturlarni joylashtirish, boshqarish, scale qilish va tiklash jarayonlarini avtomatlashtiradigan orchestration platformasi. U ko‘p serverdan iborat cluster ichida container workload’larini kerakli holatda ushlab turadi.

Kubernetes application kodini yaratmaydi va container image’ni build qilmaydi. U tayyor image’larni node’larga joylashtiradi, network va storage bilan bog‘laydi hamda ularning ishlash holatini kuzatadi.

Cluster tuzilishi

Kubernetes cluster ikki asosiy qismdan iborat:

Control plane cluster holatini boshqaradi. Worker node’lar application containerlarini ishga tushiradi.

Control plane

Control plane quyidagi vazifalarni bajaradi:

  • API requestlarni qabul qilish;
  • cluster holatini saqlash;
  • workload qaysi node’da ishlashini tanlash;
  • joriy holatni kerakli holatga yaqinlashtirish;
  • controllerlarni boshqarish.

Kubernetes declarative modelga tayanadi. Foydalanuvchi “uchta instance ishlasin” deb kerakli holatni yozadi. Tizim bu holatni saqlashga harakat qiladi.

API server

API server Kubernetes boshqaruvining markaziy kirish nuqtasi.

kubectl, controller, operator va boshqa clientlar API server bilan ishlaydi.

U:

jarayonlarini bajaradi.

Cluster holatini to‘g‘ridan-to‘g‘ri ichki database’ga yozish o‘rniga API server orqali boshqarish kerak.

Cluster holati

Kubernetes resource’lari va konfiguratsiyasi key-value ko‘rinishidagi barqaror storage’da saqlanadi.

Bu ma’lumot:

holatini o‘z ichiga oladi.

Cluster holatining backup va restore jarayoni disaster recovery uchun muhim.

Scheduler

Scheduler yangi Pod uchun mos node tanlaydi.

Qarorga quyidagilar ta’sir qiladi:

  • CPU va memory request;
  • node label;
  • affinity;
  • anti-affinity;
  • taint va toleration;
  • topology;
  • storage cheklovi;
  • priority.

Scheduler containerning o‘zini ishga tushirmaydi. U Podni node bilan bog‘laydi.

Controller

Controller joriy holatni kerakli holat bilan solishtiradi.

Masalan, Deployment uchta replica talab qiladi. Bitta Pod o‘chsa, controller yangi Pod yaratadi.

Bu reconciliation loop deb ataladi.

Kubernetes boshqaruvi bir martalik script emas, doimiy kuzatuv va tuzatish jarayonidir.

Node

Node application workload ishlaydigan server yoki virtual mashina.

Node tarkibida:

bo‘lishi mumkin.

Kubelet API serverdan Pod topshiriqlarini olib, local runtime orqali containerlarni boshqaradi.

Pod

Pod — Kubernetes’dagi eng kichik deploy qilinadigan birlik.

Pod bir yoki bir nechta containerdan iborat bo‘lishi mumkin.

Bir Pod ichidagi containerlar:

dan foydalanishi mumkin.

Odatda applicationning bitta asosiy containeri va kerak bo‘lsa sidecar containerlar bir Podga joylanadi.

Deployment

Deployment stateless application Podlarini boshqaradi.

U:

ni belgilaydi.

Yangi image deploy qilinganda rolling update orqali Podlar bosqichma-bosqich almashtiriladi.

StatefulSet

Stateful applicationlar uchun StatefulSet ishlatiladi.

U Podlarga:

  • barqaror nom;
  • tartibli yaratish;
  • tartibli o‘chirish;
  • persistent volume bilan bog‘lanish

beradi.

Database’ni StatefulSetga joylashtirish mumkin, ammo backup, replication va failure modeli alohida loyihalanadi.

DaemonSet

DaemonSet tanlangan har node’da bitta Pod ishlashini ta’minlaydi.

Qo‘llanishlar:

Node clusterga qo‘shilsa tegishli Pod avtomatik yaratiladi.

Service

Pod IP manzillari o‘zgarishi mumkin.

Service Podlar guruhiga barqaror network endpoint beradi.

U label selector orqali backend Podlarni topadi.

Service turlari ichki cluster access, node port yoki tashqi load balancer bilan ishlashi mumkin.

Ingress

Ingress HTTP va HTTPS trafficni host yoki path bo‘yicha Service’larga yo‘naltirish qoidalarini ifodalaydi.

Qoidalarni amalda bajarish uchun ingress controller kerak.

Ingress:

  • TLS termination;
  • virtual host;
  • path routing;
  • redirect

kabi vazifalarni bajarishi mumkin.

ConfigMap va Secret

ConfigMap maxfiy bo‘lmagan configurationni saqlaydi.

Secret credential va token kabi ma’lumotlar uchun mo‘ljallangan.

Secretning oddiy encodingi encryption degani emas. Cluster storage encryption, RBAC va secret manager integratsiyasi talab qilinishi mumkin.

Resource request va limit

Container uchun CPU va memory request schedulerga minimal ehtiyojni bildiradi.

Limit maksimal foydalanishni cheklaydi.

Memory limitdan oshsa container tugatilishi mumkin. CPU limit esa throttlingga olib kelishi mumkin.

Noto‘g‘ri qiymatlar cluster resource’idan samarasiz foydalanishga sabab bo‘ladi.

Health check

Kubernetes probe’lari:

  • startup probe — application boshlanishi;
  • readiness probe — traffic qabul qilishga tayyorlik;
  • liveness probe — processni qayta boshlash zarurligi

uchun ishlatiladi.

Liveness noto‘g‘ri sozlansa sekin application doimiy restart loopga tushishi mumkin.

Namespace

Namespace resource’larni mantiqiy ajratadi.

U:

uchun ishlatiladi.

Namespace alohida cluster yoki to‘liq security boundary emas.

Autoscaling

Kubernetes workload’ni metric asosida scale qilishi mumkin.

Scale turlari:

Scale downstream database va tashqi service limitlari bilan mos bo‘lishi kerak.

Network policy

NetworkPolicy Podlar orasidagi ruxsat etilgan trafficni belgilaydi. Policy ishlashi cluster network plugin qo‘lloviga bog‘liq. Default deny siyosati bilan faqat kerakli ingress va egress yo‘llari ochiladi.

Persistent volume

PersistentVolume va PersistentVolumeClaim storage lifecycle’ini Pod lifecycle’idan ajratadi. Access mode, storage class, reclaim policy va zone cheklovi schedulingga ta’sir qiladi.

Bog‘liq tushunchalar

Container orchestration, Cluster, Control plane, Node, Pod, Deployment, StatefulSet, Service, Ingress, ConfigMap, Secret, Autoscaling