Posts

  • Home -
  • news -
  • Kubernetes бүрэлдэхүүнд юу юу багтдаг вэ?
research
  • 05/14
  • 2021

Kubernetes бүрэлдэхүүнд юу юу багтдаг вэ?

Kubernetes – ийн бүрэлдэхүүнүүд

Kubernetes  - ийг байршуулахдаа та кластер ажилуулна.

Kubernetes – ийн кластер нь котейнержуулсан програм-ийг ажлуулж буй “node” гэж нэрлэгддэг машинуудын багцаас бүрддэг. Кластер бүрт дор хаяж нэг node ажилладаг. Node нь програмын ажиллах бүрэлдэхүүн хэсэгүүд болох “Pod” ийг байрлуулдаг. Контроллерхэсэг /control plane/ нь кластер дахь Pod  болон node-ийг удирддаг. Продакшин орчинд Контроллерхэсэг ихэвчлэн олон компьютер дээр ажилладаг ба кластер ихэвчлэн олон node –ийг ажлуулдаг. Энэ нь алдаанд тэсвэртэй байр чадвар болон хүртээмжтэй байх өндөр боломжоор хангадаг.

Энэ документээр Kubernetes кластер ажлуулахад шаардлагатай яанз бүрийн бүрэлдэхүүн хэсгүүдийг тоймлон харууллаа.


Kubernetes  кластерийн бүх бүрэлдэхүүн хэсгүүдийг хооронд нь холбосон зургийг доор харуулж байна.

Контрол хэсгийн бүрэлдэхүүнүүд /control plane/

Контрол хэсгийн бүрэлдэхүүнүүд нь кластерийн тухай (ажиллах хуваарь гаргах гэх мэт) түүнчлэн кластер event(жишээ нь байршуулалтын хуулбарын талбар хангалтгүй байх үед шинэ pod асааж ажлуулах)-ийг илрүүлэх, хариулах зэрэг глобал шийдвэр гаргадаг.

Контрол хэсгийн бүрэлдэхүүнүүдийг кластерийн аль ч машин дээр ажилуулж болно. Гэсэн хэдий ч хялбар байх үүднээс скрипт тохируулахдаа контрол хэсгийн бүх бүрэлдэхүүн хэсгүүдийг ижил машин дээр ажлуулж эхлүүлдэг бөгөөд хэрэглэгчийн контейнеруудыг энэ машин дээр ажиллуулдаггүй.

Kube-apiserver

API сервер нь Kubernetes API –ийг илрүүлдэг контрол хэсгийн нэгэн бүрэлдэхүүн юм. API сервер нь Kubernetes ---ийн контрол хэсгийн урд тал юм.

Kubernetes API серверийн гол хэрэгжилт бол kube-apiserver юм. kube-apiserver нь horizontal байхаар бүтээгдсэн бөгөөд энэ нь илүү олон инстенсийг байрлуулж хэмждэг. Та kube-apiserver -ийн хэд хэдэн инстенсийг ажиллуулж, эдгээр инстенсийн хоорондох урсгалыг тэнцвэржүүлж болно.

etcd

Тогтмол, өндөр хүртээмжтэй түлхүүрийн утга хадгалалт нь бүх кластерийн өгөгдлийн хувьд Kubernetes- ийн нөөц хадгалалт болж ашиглагддаг. Хэрэв таны Kubernetes кластер нь etcd-ийг нөөц хадгалалт болгон ашигладаг бол эдгээр өгөгдлийг нөөцлөх төлөвлөгөөтэй эсэхээ шалгаарай. Мөн та албан ёсны документээс etcd-ийн талаарх гүнзгий мэдээллийг олж авах боломжтой.

 

kube-scheduler

Шинээр үүсгэгдсэн зангилаа байхгүй Pod-уудыг харж, ажиллуулах зангилааг сонгодог хавтгай хэсгийг хянах.

Контрол хэсгийн бүрэлдэхүүнүүд шинээр үүссэн node хуваарьлагдаагүй pod-ийг харж мөн тэдэнд ажлуулах node –ийг сонгож өгдөг.

Шийдвэр гаргах, schedule хийхэд анхаарах хүчин зүйлүүдэд дараах зүйлс орно: хувь хүний ​​болон хамтын нөөцийн шаардлага, техник хангамж / програм хангамж / бодлогын хязгаарлалт, ижил төстэй байдал ба эсрэг хамаарлын тодорхойлолт, өгөгдөл байршил, ажлын ачааллын хөндлөнгийн оролцоо, эцсийн хугацаа.

kube-controller-manager

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

  Логикийн хувьд контроллер бүр нь тусдаа процесс боловч төвөгтэй байдалыг багасгахын тулд тэдгээрийг нэг binary болгож нэг процесст ажлуулдаг.

Эдгээр контроллеруудын зарим төрлууд нь:

  • Node controller: Node-үүд унах үед анзаарч хариу өгөх үүрэгтэй.
  • Job controller: нэг удаагийн таскуудыг төлөөлөх Job objects-ийг харж дараа нь эдгээр таскуудыг бүрэн гүйцэтгэхийн тулд pod үүсгэдэг
  • Endpoints controller: Төгсгөлийн цэгийн объектыг байрлуулдаг (энэ нь Services & Pods-т нэгддэг).
  • Service Account & Token controllers:  Шинэ namespace-т зориулж анхдагч аккаунт болон API хандалтын токен үүсгэдэг.

cloud-controller-manager

Kubernetes контрол хэсгийн бүрэлдэхүүн бөгөөд клаудад зориулсан логик контролыг агуулдаг. cloud-controller-manager нь кластераа клауд үйлчилгээ үзүүлэгчийн API-тай холбох боломжийг олгодог бөгөөд клауд платформтой харьцдаг бүрэлдэхүүн хэсгүүдийг зөвхөн таны кластертай харьцдаг бүрэлдэхүүн хэсгүүдээс тусгаарладаг. Cloud-controller-manager нь зөвхөн таны  клауд үйлчилгээ үзүүлэгчид тохирсон контроллеруудыг ажлуулдаг. Хэрэв та Kubernetes-ийг өөрийн байранд эсвэл сургалтын орчинд компьютер дээрээ ажиллуулж байгаа бол тухайн кластерт Cloud-controller-manager байхгүй.

kube-controller-manager –ийн нэгэн адил cloud-controller-manager нь хэд хэдэн логик тусдаа удирдлагыг нэг процесс болгон ажлуулж буй дан binarty-д нэгтгэдэг. Гүйцэтгэлийг сайжруулах эсвэл алдаанд тэсвэртэй байх зорилгоор horizontal байдлаар нэгээс олон хувийг ажиллуулж болно.

Дараах контроллерууд клауд үйлчилгээ үзүүлэгчээс хамааралтай байж болно:

  • Node controller: Хариу өгөхөө больсоны дараа клауд дээрх node устсан эсэхийг тодорхойлохын тулд клауд үйлчилгээ үзүүлэгчийг шалгахад зориулагдсан.
  • Route controller: суурь клауд дэд бүтэц дээр замчлал тохируулахад зориулагдсан.
  • Service controller: клауд үйлчилгээ үзүүлэгчийн ачааллыг тэнцвэруүүлэгчийг үүсгэх, шинэчлэх, устгахад зориулагдсан.

Node бүрэлдэхүүнүүд

Node бүрэлдэхүүнүүд нь node тус бүр дээр ажилладаг бөгөөд ажиллаж байгаа pod-уудийг хадгалж Kubernetes-ийн ажиллах орчныг бүрдүүлдэг.

 

Kubelet

Кластерийн node бүр дээр ажилладаг agent. Энэ нь контейнеруудыг Pod дотор ажиллуулж байгаа эсэхийг баталгаажуулдаг. Kubelet нь янз бүрийн механизмуудаар хангагдсан PodSpecs багцыг авч тэдгээр PodSpec-үүд дээр тодорхойлсон контейнеруудын асуудалгүй ажиллах нөхцлийг бүрдүүлдэг. Kubelet нь Kubernetes –ийн үүсгээгүй контейнерийг удирддаггүй.

Kube-proxy

Kube-proxy бол кластерийн node бүр дээр ажилладаг сүлжээний прокси бөгөөд Kubernetes үйлчилгээний хэсэгийг хэрэгжүүлдэг.

kube-прокси нь node-үүд дээр сүлжээний дүрмийг хэрэгжүүлж зохицуулдаг. Эдгээр сүлжээний дүрмүүд нь таны кластер дотор эсвэл гаднах сүлжээний session-үүдээс таны Pod-уудтай сүлжээний холболт хийхийг зөвшөөрдөг.

Kube-proxy нь үйлдлийн системийн пакет филтер түвшинг ашигладаг.Хэрэв пакет филтер түвшинг ашиглах боломжтой бол ашиглана. Ашиглах боломжгүй бол kube-proxy урсгалыг өөрөө дамжуулдаг.

Container runtime

Container runtime бол контейнерүүдийг ажлуулдаг програм хангамж юм.

Kubernetes нь хэд хэдэн container runtime –ийг дэмждэг (Docker, containerd, CRI-O гэх мэт).

Addons

Addons нь кластер шинж чанарыг хэрэгжүүлэхийн тулд Kubernetes нөөцүүд (DaemonSet, Deployment)-ийг ашигладаг. Эдгээр нь кластерын түвшний онцлог шинж чанаруудыг хангаж байгаа тул addons нь kune-system хэмээх namespace-д хамаардаг.

DNS

Бусад addons-ийг хатуу шаарддаггүй ч бүх kubernetes кластерууд заавал кластер DNS-тэй байх ёстой.

Кластер DNS бол таны орчин дахь бусад DNS сервер (үүд) -ээс гадна тусдаа DNS сервер бөгөөд Kubernetes үйлчилгээнд зориулагдсан DNS бүртгэлийг хэрэгжүүлдэг.

Kubernetes- ийн асаасан контейнерүүд энэ DNS серверийг DNS хайлтандаа автоматаар оруулдаг.

Web UI (Dashboard) /веб хянах самбар/

Dashboard нь Kubernetes кластеруудад зориулсан ерөнхий зориулалттай, вэбэд суурилсан UI юм. Энэ нь хэрэглэгчид кластер дээр ажиллаж байгаа програмууд болон кластеруудыг өөрөө удирдах, алдааг олж засварлах боломжийг олгодог.

Container Resource Monitoring/контейнер нөөцүүдийн хяналт/

Container Resource Monitoring нь төв өгөгдлийн сан дахь контейнеруудын талаарх хэмжигдэхүүнүүдийг цаг хугацааны дарааллаар бүртгэж тухайн өгөгдлийг үзэх UI- ээр хангадаг.

Cluster-level Logging /кластерийн түвшний лог/

Cluster-level logging механизм нь контейнерийн логийг төвлөрсөн лог хадгалаглт дээр хайсан болон үзсэн интерфейстэй нь хадгалах үүрэг гүйцэтгэдэг.

 

-o0o-