Posts

  • Home -
  • news -
  • Kubernetes API тухай
research
  • 05/25
  • 2021

Kubernetes API тухай

Kubernetes API

Kubernetes-ийн контрол хэсгийн үндсэн бол API сервер юм. API сервер нь эцсийн хэрэглэгчид кластерын өөр хэсгүүд болон гадны бүрэлдэхүүн хэсгүүд хоорондоо харилцах боломжийг олгодог HTTP API-г ил болгодог.

Kubernetes API нь танд Kubernetes дахь API обьектууд (Pods, Namespaces, ConfigMaps, Events) ын төлөвийг асууж, удирдах боломжийг олгоно.

Ихэнх үйлдлүүдийг kubectl коммандын интерфейс эсвэл kubeadm гэх мэт коммандын хэрэгслүүдээр дамжуулан гүйцэтгэж болох бөгөөд ингэснээр API –ийг ашигладаг. Гэсэн хэдий ч та REST ашиглан API руу шууд нэвтрэх боломжтой.

Хэрэв та Kubernetes API ашиглан програм бичиж байгаа бол client libraries- дотороос аль нэгийг ашиглаж үзээрэй.

OpenAPI тодорхойлолт

Kubernetes API сервер нь /openapi/v2 endpoint-р дамжуулан OpenAPI spec үйлчилгээ үзүүлдэг.

Та request header ашиглан хариу форматыг дараах байдлаар авах боломжтой.

Header

Possible values

Notes

Accept-Encoding

gzip

энэ талбарыг хэрэглэхгүй байсан ч header зөвшөөрөгдөнө

Accept

application/com.github.proto-openapi.spec.v2@v1.0+protobuf

ихэвчлэн кластер доторх хэрэглээнд зориулагдсан

application/json

default

*

serves application/json

 

Кубернетес нь үндсэндээ кластер доторх харилцаанд зориулагдсан өөр хувилбарын Protobuf дээр суурилсан serialization форматыг хэрэгжүүлдэг. Энэхүү форматын талаар илүү их мэдээлэл авахыг хүсвэл Kubernetes Protobuf Serialization дизайны санал болон API обьектуудыг тодорхойлсон Go багцад байрлах схем тус бүрийн Interface Definition Language (IDL) файлуудыг судлана уу.

Persistence

Kubernetes объектуудын цуваа хэлбэрийг тэдгээрийг etcd гэж бичиж хадгалдаг.

API groups and versioning /API грүп ба хувилбарууд/

Талбаруудыг арилгах эсвэл нөөцийн төлөөллийг өөрчлөн байгуулахад хялбар болгохын тулд Kubernetes нь олон API хувилбаруудыг тус бүрдээ өөр API зам дээр дэмждэг. Жишээ нь /api/v1 эсвэл /apis/rbac.authorization.k8s.io/v1alpha1.

Versioning нь системийн нөөц, шинж чанарын талаар тогтмол харуулах, ашиглалтын хугацаа дууссан эсвэл туршилтын API-д хандах хандалтыг хянах боломжийг олгохын тулд нөөц эсвэл талбарын түвшинд биш харин API түвшинд хийгддэг.

Хөгжлийг хялбарчилж, API-г өргөжүүлэхийн тулд Kubernetes нь идэвхжүүлж эсвэл идэвхгүй болгож болох API грүпүүдийг хэрэгжүүлдэг.

API нь API грүпийг нөөцийн төрөл, namespace (namespace –ийн нөөц), ба нэрээр нь ялгаддаг. API сервер нь API хувилбаруудын хоорондох хөрвүүлэлт (бүх өөр өөр хувилбарууд нь яг ижил өгөгдлийн төлөөлөл юм)- ийг ил тод байдлаар зохицуулдаг. API сервер нь олон API хувилбаруудаар дамжуулан нэг ижил өгөгдөлөөр үйлчилж болно.

Жишээлбэл ижил нөөцийн хувьд v1 ба v1beta1 гэсэн хоёр API хувилбар байна гэж бодъё. Хэрэв та анх API-ийнхаа v1beta1 хувилбарыг ашиглан объект үүсэгсэн бол дараа нь v1beta1 эсвэл v1 API хувилбарыг ашиглан тухайн объектыг унших, шинэчлэх эсвэл устгах боломжтой.

API changes (API өөрчлөлтүүд)

Амжилттай яваа ямарч систем хэрэглээний шинэ кейс гарч ирэх эсвэл одоо байгаа хувилбаруудыг өөрчлөх мөн өсөж хөгжих шаардлагатай болдог. Тиймээс Kubernetes нь Kubernetes API-ийг тасралтгүй өөрчлөгдөж, өсч хөгжихөөр бүтээсэн. Kubernetes төсөл нь одоо байгаа үйлчлүүлэгчидтэйгээ нийцэх байдлаа таслахгүй байх, бусад төслүүдэд дасан зохицох боломж олгох үүднээс энэхүү нийцэх байдлыг удаан хугацаанд хадгалах зорилготой юм.

Ерөнхийдөө шинэ API нөөц, шинэ нөөцийн талбаруудыг байнга, ойр ойрхон нэмэх боломжтой. Нөөц эсвэл талбарыг арилгахын тулд API-ийн элэгдлийн бодлогыг (API deprecation policy)дагаж мөрдөх шаардлагатай.

Kubernetes нь албан ёсны Kubernetes API-ууд ерөнхийдөө API v1 хувилбар дээр ерөнхий хүртээмжид хүрсэний дараа нийцэх байдлыг хадгалах хатуу баримтлалтай. Нэмж дурьдахад Kubernetes нь боломжтой бүх тохиолдолд бета API хувилбаруудтай нийцэж байдаг. хэрэв та бета API нэвтрүүлсэн бол тухайн функц тогтвортой болсон ч гэсэн тухайн API ашиглан кластертайгаа үргэлжлүүлэн ажиллах боломжтой.

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

 

API Extension /api өргөтгөл/

Kubernetes API-ийг дараах хоёр аргын аль нэгээр өргөтгөж болно.

1. Custom resource нь API сервер таны сонгосон нөөц API-г хэрхэн хангах ёстойг декларативаар тодорхойлох боломжийг танд олгоно.

2. Aggregation давхаргыг хэрэгжүүлсэнээр Kubernetes API-ийг өргөжүүлэх боломжтой.

 

-o0o-