Khibradayada horumarinta darawalka CSI ee Kubernetes ee Yandex.Cloud

Khibradayada horumarinta darawalka CSI ee Kubernetes ee Yandex.Cloud

Waxaan ku faraxsanahay inaan ku dhawaaqno in Flant ay ballaarineyso wax ku biirinta agabka Isha Furan ee Kubernetes iyadoo la sii daayo nooca alfa ee darawalka CSI (Interface Kaydinta Konteenarada) ee Yandex.Cloud.

Laakiin ka hor intaadan u gudbin faahfaahinta hirgelinta, aan ka jawaabno su'aasha sababta tan loogu baahan yahay gabi ahaanba marka Yandex uu horey u lahaa adeeg Adeegga la maamulay ee Kubernetes.

Horudhac

Waa maxay sababta tani?

Shirkaddayada dhexdeeda, laga bilaabo bilawgii hore ee isticmaalka Kubernetes ee wax soo saarka (ie dhowr sano hadda), waxaanu horumarinaynay qalab noo gaar ah (deckhouse), kaas oo, habka, waxaan sidoo kale qorsheyneynaa inaan dhawaan ka dhigno mashruuc Isha Furan. . Caawimaadkeeda, waxaanu si isku mid ah u habaynaynaa oo aanu u habaynaynaa dhammaan rucubyadayada, waxaana hadda jira in ka badan 100 iyaga ka mid ah, oo ku saabsan qalabyo kala duwan oo kala duwan iyo dhammaan adeegyada daruuriga ah ee la heli karo.

Kooxaha isticmaala deckhouse waxay leeyihiin dhammaan qaybaha lagama maarmaanka u ah hawlgalka: dheelli-tireyaasha, la socodka jaantusyada habboon, cabbirada iyo digniinaha, xaqiijinta isticmaaleyaasha iyada oo loo marayo bixiyeyaasha dibadda si ay u helaan dhammaan dashboards, iyo wixii la mid ah. Ma jirto wax macno ah in lagu rakibo koox sidan oo kale ah "la soo tuuray" xalka la maareeyay, maadaama tani ay badanaa tahay mid aan macquul ahayn ama waxay horseedi doontaa baahida loo qabo in la joojiyo kala badh qaybaha.

NB: Tani waa waayo-aragnimadeena, waana arrin gaar ah. Sinaba uma soo jeedineyno in qof kastaa uu keligiis geeyo kutlada Kubernetes halkii ay isticmaali lahaayeen xalal diyaarsan. Jid ahaan, ma lihin khibrad dhab ah oo ku saabsan ka shaqeynta Kubernetes ee Yandex mana ku siin doono wax qiimeyn ah adeeggan qodobkan.

Waa maxay iyo cidda loogu talagalay?

Marka, waxaan horay uga hadalnay habka casriga ah ee kaydinta Kubernetes: sidee u shaqeysaa CSI? ΠΈ sida ay bulshadu ku timid habkan.

Hadda, qaar badan oo ka mid ah bixiyeyaasha adeegga daruuriga ayaa soo saaray darawallo u isticmaalaya saxannada daruurtooda sida Mugga Joogtada ah ee Kubernetes. Haddii alaab-qeybiyuhu aanu lahayn darawal noocaas ah, laakiin dhammaan hawlaha lagama maarmaanka ah waxaa lagu bixiyaa API-ga, markaa waxba kama horjoogsanayaan inaad adigu hirgeliso darawalka. Tani waa waxa ku dhacay Yandex.Cloud.

Waxaan u qaadanay aasaas u ah horumarka Darawalka CSI ee daruuraha DigitalOcean iyo dhowr fikradood oo ka yimid darawalada GCP, tan iyo markii la isdhexgalka API ee daruurahan (Google iyo Yandex) waxay leeyihiin tiro isku mid ah. Gaar ahaan, API iyo GCPiyo y Yandex soo celi shay Operation si loola socdo xaaladda hawlgallada muddada dheer socday (tusaale ahaan, abuurista disk cusub). Si aad ula falgasho Yandex.Cloud API, isticmaal Yandex.Cloud Go SDK.

Natiijada shaqada la qabtay lagu daabacay GitHub waxaana laga yaabaa inay faa'iido u leedahay kuwa, sabab qaar ka mid ah, u adeegsada rakibaadda Kubernetes iyaga u gaar ah ee mashiinnada farsamada ee Yandex.Cloud (laakiin aan ahayn koox la maamulay oo diyaarsan) oo jeclaan lahaa inay isticmaalaan (dalbashada) saxanadaha iyada oo loo marayo CSI.

РСализация

Astaamaha furaha ah

Hadda darawalku wuxuu taageeraa hawlaha soo socda:

  • Dalbashada saxanadaha dhammaan aagagga kooxdu iyadoo loo eegayo topology-ga qanjidhada kooxda;
  • Ka saarida saxanadaha hore loo dalbaday;
  • Cabbirka khadka tooska ah ee disksyada (Yandex.Cloud ha taageerin kordhinta saxanadaha lagu rakibay mashiinka farsamada). Macluumaad ku saabsan sida darawalka wax looga beddelayo si uu u cabbiro mid aan xanuun lahayn intii suurtogal ah, hoos eeg.

Mustaqbalka, waxaan qorsheyneynaa inaan hirgelinno taageerada abuurista iyo tirtirida sawirada diskooga.

Dhibaatada ugu weyn iyo sida looga gudbi karo

La'aanta awoodda lagu kordhinayo saxanadaha waqtiga dhabta ah ee Yandex.Cloud API waa xaddidaad ku adkeyneysa hawlgalka cabbirka ee PV (mugga joogtada ah): kiiskan, waxaa lagama maarmaan ah in la joojiyo codsiga codsiga ee isticmaalaya diskka, tanina waxay sababi kartaa codsiyo waqti-dhimis ah.

Sida laga soo xigtay Tilmaamaha CSI, haddii kantaroolaha CSI uu soo sheego in uu cabbiri karo saxanadaha "offline" kaliya (VolumeExpansion.OFFLINE), ka dib habka kordhinta diskka waa inuu u socdaa sidan:

Haddii plugin uu leeyahay oo kaliya VolumeExpansion.OFFLINE Awooda balaadhinta iyo mugga hadda waa la daabacay ama laga heli karaa noodhka markaa ControllerExpandVolume Waa in la wacaa oo keliya ka dib:

  • Plugin ayaa leh kontaroole PUBLISH_UNPUBLISH_VOLUME karti iyo ControllerUnpublishVolume ayaa si guul leh loogu baaqay.

AMA KALE

  • Plugin-ku MA laha koontaroole PUBLISH_UNPUBLISH_VOLUME kartida, plugin wuxuu leeyahay noode STAGE_UNSTAGE_VOLUME karti, iyo NodeUnstageVolume si guul leh ayaa loo dhameeyay.

AMA KALE

  • Plugin-ku MA laha koontaroole PUBLISH_UNPUBLISH_VOLUME karti, mana node STAGE_UNSTAGE_VOLUME karti, iyo NodeUnpublishVolume si guul leh ayuu u soo dhamaaday.

Tani asal ahaan waxay ka dhigan tahay inaad u baahan tahay inaad ka saarto saxanka mashiinka farsamada ka hor intaadan ballaarin.

Si kastaba ha ahaatee, nasiib daro hirgelinta Tilmaamaha CSI-da ee loo maro gawaadhida dhinacyadu ma buuxinayso shuruudahan:

  • Ku jira weel dhinac-dhinac ah csi-attacher, kaas oo mas'uul ka ah joogitaanka farqiga loo baahan yahay ee u dhexeeya dhejiska, shaqadan si fudud looma hirgelin cabbirka khadka. Dood arrintan ku saabsan ayaa la bilaabay halkan.
  • Waa maxay dhab ahaan weelka baabuur-geeska ah ee macnaha guud? Plugin CSI lafteedu lama falgeliso Kubernetes API, laakiin waxay ka jawaabtaa kaliya wicitaanada gRPC ee ay u soo diraan weel-side. Ugu dambeeyay waa la horumarinayaa by beesha Kubernetes.

Xaaladeena (CSI plugin), hawlgalka kordhinta saxanka ayaa u eg sidan:

  1. Waxaan helnaa wicitaan gRPC ah ControllerExpandVolume;
  2. Waxaan isku dayeynaa inaan kordhino saxanka API-ga, laakiin waxaan helnaa qalad ku saabsan suurtogalnimada in la fuliyo hawlgalka sababtoo ah saxanka ayaa ku rakiban;
  3. Waxaan ku keydineynaa aqoonsiga diskka khariidad ay ku jiraan saxanadaha kuwaas oo loo baahan yahay in la sameeyo hawlgalka kordhinta. Hoosta, si kooban, waxaan ugu yeeri doonaa khariidaddan sida volumeResizeRequired;
  4. Gacanta ka saar boodhka isticmaalaya saxanka. Kubernetes ayaa dib u bilaabi doona Si uusan diskku u helin waqti uu ku rakibo (ControllerPublishVolume) ka hor inta aan la dhamaystirin hawlgalka korodhka marka la isku dayayo in la rakibo, waxaan hubin in disk la siiyey weli ku jira volumeResizeRequired oo soo celi qalad;
  5. Darawalka CSI wuxuu isku dayaa inuu dib u fuliyo hawlgalka cabbirka. Haddii qalliinku uu ahaa mid guul leh, ka dibna ka saar diskka volumeResizeRequired;
  6. Sababtoo ah Aqoonsiga diskka ayaa ka maqan volumeResizeRequired, ControllerPublishVolume si guul leh u dhaafo, saxanka ayaa lagu rakibay, boodhka ayaa bilaabmaya.

Wax walba waxay u muuqdaan kuwo fudud oo ku filan, laakiin sida had iyo jeer waxaa jira dabinno. Way weynaysaa saxanka dib u habeyn, kaas oo haddii ay dhacdo qalad inta lagu jiro hawlgalka saf ayuu isticmaalaa oo leh koror jibbaaran wakhtiga kama-dambaysta ah ilaa 1000 ilbiriqsi:

func DefaultControllerRateLimiter() RateLimiter {
  return NewMaxOfRateLimiter(
  NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second),
  // 10 qps, 100 bucket size.  This is only for retry speed and its only the overall factor (not per item)
  &BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(10), 100)},
  )
}

Tani waxay xilliyo kala duwan ka dhalan kartaa in hawlgalka balaadhinta saxanka la kordhiyo 15+ daqiiqo, sidaas awgeed, boodhka u dhigma lama heli karo.

Xulashada kaliya ee si fudud oo aan xanuun lahayn noo ogolaatay inaan hoos u dhigno wakhtiga hoos u dhaca ee suurtogalka ah waxay ahayd isticmaalka noocayaga dib-u-habaynta dibadda oo leh xadka ugu badan ee wakhtiga. 5 ilbiriqsi gudahood:

workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 5*time.Second)

Umaanaan qaadan inay lama huraan tahay in si degdeg ah loo bilaabo wada hadal oo lagu dhejiyo dib-u-habaynta dibadda, sababtoo ah cabbirka khadka tooska ah ee saxanka waa dib u dhac kaas oo dhawaan ka lumi doona dhammaan bixiyeyaasha daruuraha.

Sidee loo bilaabo isticmaalka?

Darawalka waxaa lagu taageeraa nooca Kubernetes 1.15 iyo wixii ka sareeya. Si darawalku u shaqeeyo, shuruudaha soo socda waa in la buuxiyaa:

  • Calanka --allow-privileged qiimeeyay true server API iyo kubelet;
  • Waxaa ka mid ah --feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true server API iyo kubelet;
  • Faafinta Buurta (buur faafinta) waa in lagu dhaqaajiyaa kutlada. Markaad isticmaalayso Docker, daemon waa in la habeeyaa si loo oggolaado fuulitaanka la wadaago.

Dhammaan tallaabooyinka lagama maarmaanka u ah rakibidda lafteeda lagu sharaxay README. Rakibaadda waxay ku lug leedahay abuurista walxaha Kubernetes ee muujinta.

Si darawalku u shaqeeyo waxaad u baahan doontaa waxyaabaha soo socda:

  • Ku caddee tilmaamaha hagaha tusmada (folder-idYandex.Cloud (eeg dukumentiyada);
  • Si loola macaamilo Yandex.Cloud API, darawalka CSI wuxuu isticmaalaa akoon adeeg. Muujinta, sirta waa in la gudbiyaa furayaasha idman laga bilaabo xisaabta adeegga. Dukumentiyada lagu tilmaamay, sida loo sameeyo akoon adeeg oo loo helo furayaasha.

Dhammaantood - isku day, waana ku farxi doonaa inaan helno jawaab celin iyo arimo cusubhaddii aad la kulanto wax dhibaato ah!

Taageero dheeraad ah

Natiijo ahaan, waxaan jeclaan lahayn inaan ogaano inaan hirgalinay darawalka CSI ma ahan rabitaan weyn oo ah inaan ku raaxaysto qoritaanka codsiyada gudaha Go, laakiin baahida degdega ah ee shirkada dhexdeeda. Uma muuqato mid wax ku ool ah anaga si aan u ilaalino hirgalintayada gaarka ah, markaa haddii Yandex ay muujiso xiisaha oo ay go'aansato inay sii wado taageerada darawalka, waxaan ku farxi doonaa inaan u wareejino kaydka iyaga.

Intaa waxaa dheer, Yandex waxay u badan tahay inay leedahay hirgelinteeda darawalka CSI ee kutlada Kubernetes ee ay maamusho, kaas oo lagu sii deyn karo Isha Furan. Waxaan sidoo kale u aragnaa doorashadan horumarinta mid wanaagsan - bulshadu waxay awood u yeelan doontaa inay isticmaasho darawal la xaqiijiyay oo ka socda adeeg bixiyaha, ee maaha inay isticmaalaan shirkad dhinac saddexaad ah.

PS

Sidoo kale ka akhri boggayaga:

Source: www.habr.com

Add a comment