Күбернетес түүхээс

2014 оны дунд үеэс Google-н Borg систем дээрээс суурь тавигдаж тухайн үедээ уг тѳсѳл дээр ажиллаж байсан хѳгжүүлэгч нар нэгдэн цааш хѳгжүүлэлт хийсэн байна. Google дэх уг тѳслийн анхдагч нэр Project 7 буюу Star Trek кинон дээрх зохиол дүрүүдийн хэсгээс нэр, логон санаа гарсан юм байна. Күбернетес цааш жѳгжүүлэлтийн явцад C++ хэлээс Go хэл рүү шилжин Kubernetes “v1” 2015 оны 7-р сард 10-нд release-ээ анх гарчээ.

Күбернетес гэж юу вэ?

Товчоор Күбернетес нь контейнеруудыг удирдан зохион байгуулж кластер(ууд) доторх апплкэйшнг өргөтгөл хийх автоматжуулалт. Продакшн орчинг дагаад Хѳгжүүлэлтийн орчин автомэйшн хийгдэнэ (Travis, Github Actions, Jenkins гэх мэт нэмэлт CI хэрэглэх байх).

Сурвалж: Kubernetes documentation

Master Node (aka: Control Plane)

CLI, клинентаас илгээгдэж байгаа ѳгѳгдлүүд API - гаар дамжин Мастер node -д ирэн шийдвэрлэгдэнэ. Мастер Node -г ажиллагааг дэлгэрүүлбэл:

  • kube-apiserver
  • etcd
  • kube-controller-manager
  • kube-scheduler

Бүтцийн дагуу задлан авч үзвэл:

  • kube-apiserver: Күбернетес кластер доторх хүсэлтийг зохицуулан шийдвэрлэнэ. Жишээ нь под, репликас тохируулга, ѳргѳтгѳлүүд kube-scheduler, kube-controller-manager ирсэн хүсэлтүүд Күбернетес API серверээр дамжин кластер дах шинэчлэл ѳѳрчлѳлтийг хийж гүйцэтгэнэ.
  • etcd: Key Value Store нь kubernetes - тэй хоршиж ажиллахдаа кластер(ууд)-т ѳгѳгдлийг хадаглах backend ажиллагааг хангана.

Доорх жишээнд мастер node дотор ectd -г под хэлбэрээр хоршин ажиллаж байна.

Сурвалж: Kubernetes documentation

Доорх жишээнд ectd -г экстернал кластер болгон мастер node - тэй хоршин ажиллаж байна. Ингэснээр хамгаалалт болон ѳргѳтгѳл хийхэд гэх мэт илүү уян хатан тѳлѳвтэй болно.

Сурвалж: Kubernetes documentation

Под үүсгэж буй ажиллагааг харуулсан зураг. Etcd - ажиллагааг ойлгоход хялбар зураг

Сурвалж: blog.heptio.com

  • kube-controller-manager: Системийн хэвийн ажиллаж байгаа эсэхийг давтамжтайгаар шалгах процесс.
  • kube-scheduler: Күбернетес хуваарилагч нь аль под аль node руу хуваарилагдан очих ёстойг тодорхойлно. Хуваарилагчаас тодорхойлсон бүтцийн дагуу kubelet цааш хариуцан зѳѳвѳрлѳх үйлдийг хийнэ.

Worker Node

  • kubelet
  • kube-proxy
  • Container runtime

kubelet: Подтой холбогдон контейнер(ууд) хэвийн ажиллаж байгааг хянах, ажилууллах үйлдлийг API серверээр дамжуулан мастер node-тэй холбож ѳгдѳг. Ѳѳрѳѳр хэлбэл worker node-ыг мастер node-тэй холбох зуучлагч юм.

kube-proxy: Сервис дээр worker node тус бүр дээр load balancer (ачаалал тэнцвэржүүлэгч) хийж IP хаяг болон сүлжээний урсгалыг зохицуулдаг.

Container runtime: Контейнерын lifecycle-г тодорхойлж байдаг. Күбернетэс CRI нэвтрүүлж контейнерийн runtime-уудыг дэмжин ажиллана. Үүнд Docker, containerd, CRI-O гэх мэт.

Под: Кластер дотор нэг эсхүл олон контейнеруудаас бүрдэн ажиллаж байгаа системийн илэрхийлэл бол под юм.

  • Нэг подод нэг контейнер
  • Олон подод олон контейнерууд

Под доторх контейнер(ууд) ѳѳрийн нѳѳц, нетворкийг хуваалцан ашиглана. Ѳѳрѳѳр хэлбэл нэг эсхүл олон контейнеруудыг холбон нэг подод оруулан (контейнерууд) хоорондоо холбогдон үйлдэл хийх боломжтой тусгаарлагдсан орчин үүсгэнэ.

Сурвалжууд & Bookmarks