{"id":40721,"date":"2020-02-03T14:41:59","date_gmt":"2020-02-03T11:41:59","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/nash-opyt-razrabotki-csi-drajvera-v-kubernetes-dlya-yandeks-oblaka"},"modified":"2020-02-03T14:41:59","modified_gmt":"2020-02-03T11:41:59","slug":"nash-opyt-razrabotki-csi-drajvera-v-kubernetes-dlya-yandeks-oblaka","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/nash-opyt-razrabotki-csi-drajvera-v-kubernetes-dlya-yandeks-oblaka","title":{"rendered":"Eksperienca jon\u00eb n\u00eb zhvillimin e drejtuesit t\u00eb CSI n\u00eb Kubernetes p\u00ebr Yandex.Cloud","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Eksperienca jon\u00eb n\u00eb zhvillimin e drejtuesit t\u00eb CSI n\u00eb Kubernetes p\u00ebr Yandex.Cloud\" src=\"\/wp-content\/uploads\/2020\/02\/86adf77b2ee08c426bf79c5b9b2d3d1e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJemi t\u00eb lumtur t\u00eb njoftojm\u00eb se kompania \u00abFlant\u00bb po kontribuon m\u00eb tej n\u00eb mjetet Open Source p\u00ebr Kubernetes duke l\u00ebshuar <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/yandex-csi-driver\">versionin alfa t\u00eb ndihm\u00ebsit CSI<\/a><\/noindex> (Container Storage Interface) p\u00ebr Yandex.Cloud.<\/p>\n<p>Por para se t\u00eb kalojm\u00eb n\u00eb detajet e zbatimit, le t\u00eb p\u00ebrgjigjemi n\u00eb pyetjen: p\u00ebrse \u00ebsht\u00eb kjo e nevojshme, kur Yandex tashm\u00eb ka sh\u00ebrbimin <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/managed-kubernetes\/\">Sh\u00ebrbimi Menaxhuar p\u00ebr Kubernetes<\/a><\/noindex>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Hyrje<\/h2>\n<p><\/p>\n<h3>Pse kjo?<\/h3>\n<p>\nQ\u00eb nga fillimi i p\u00ebrdorimit t\u00eb Kubernetes n\u00eb prodhim (n\u00eb fakt, prej disa vitesh), brenda kompanis\u00eb ton\u00eb \u00ebsht\u00eb zhvilluar nj\u00eb mjet i ve\u00e7ant\u00eb (deckhouse), i cili, p\u00ebr ta th\u00ebn\u00eb me t\u00eb v\u00ebrtet\u00eb, ne gjithashtu planifikojm\u00eb ta b\u00ebjm\u00eb n\u00eb dispozicion si nj\u00eb projekt Open Source s\u00eb shpejti. Me k\u00ebt\u00eb mjet ne konfigurojm\u00eb dhe rregullojm\u00eb nj\u00eblloj t\u00eb gjith\u00eb klaster\u00ebt tan\u00eb, dhe aktualisht kemi m\u00eb shum\u00eb se 100, n\u00eb konfigurime t\u00eb ndryshme hardueri dhe n\u00eb t\u00eb gjitha sh\u00ebrbimet e disponueshme n\u00eb cloud.<\/p>\n<p>Klaster\u00ebt q\u00eb p\u00ebrdorin deckhouse kan\u00eb t\u00eb gjith\u00eb komponent\u00ebt e nevojsh\u00ebm p\u00ebr funksionimin: balancues, monitorim me grafik\u00eb t\u00eb rehatshme, metrika dhe alerte, autentifikimin e p\u00ebrdoruesve p\u00ebrmes ofruesve t\u00eb jasht\u00ebm p\u00ebr qasje n\u00eb t\u00eb gjith\u00eb dashboard-et dhe k\u00ebshtu me radh\u00eb. Nj\u00eb klaster i till\u00eb \"i fuqizuar\" nuk ka kuptim t\u00eb vendoset n\u00eb nj\u00eb zgjidhje t\u00eb menaxhuar, sepse shpesh kjo \u00ebsht\u00eb e pamundur ose do t\u00eb k\u00ebrkoj\u00eb \u00e7aktivizimin e gjysm\u00ebs s\u00eb komponent\u00ebve.<\/p>\n<p><i><b>NB<\/b>: Ky \u00ebsht\u00eb p\u00ebrvoja jon\u00eb dhe ajo \u00ebsht\u00eb mjaft specifike. Ne asnj\u00ebher\u00eb nuk pretendojm\u00eb se t\u00eb gjith\u00eb duhet t\u00eb merren me vendosjen e klaster\u00ebve Kubernetes n\u00eb vend t\u00eb p\u00ebrdorimit t\u00eb zgjidhjeve t\u00eb gatshme. Po ashtu, ne nuk kemi p\u00ebrvoj\u00eb t\u00eb v\u00ebrtet\u00eb n\u00eb p\u00ebrdorimin e Kubernetes nga Yandex dhe nuk do t\u00eb japim ndonj\u00eb vler\u00ebsim p\u00ebr k\u00ebt\u00eb sh\u00ebrbim n\u00eb k\u00ebt\u00eb artikull.<\/i><\/p>\n<h3>\u00c7far\u00eb \u00ebsht\u00eb kjo dhe p\u00ebr k\u00eb?<\/h3>\n<p>\nK\u00ebshtu, ne tashm\u00eb kemi folur p\u00ebr qasjen moderne ndaj ruajtjes n\u00eb Kubernetes: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/424211\/\">si \u00ebsht\u00eb nd\u00ebrtuar CSI<\/a><\/noindex> dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465417\/\">si arriti komuniteti<\/a><\/noindex> n\u00eb k\u00ebt\u00eb qasje.<\/p>\n<p>Aktualisht, shum\u00eb ofrues t\u00eb m\u00ebdhenj t\u00eb sh\u00ebrbimeve cloud kan\u00eb zhvilluar ndihm\u00ebs p\u00ebr t\u00eb p\u00ebrdorur disk\u00ebt e tyre \"cloud\" si Volume t\u00eb Eshte zgjatur n\u00eb Kubernetes. N\u00ebse nj\u00eb ndihm\u00ebs i till\u00eb nuk ekziston te ofruesi, por t\u00eb gjitha funksionet e nevojshme jan\u00eb n\u00eb dispozicion p\u00ebrmes API, at\u00ebher\u00eb askush nuk e pengon at\u00ebher\u00eb t\u00eb implementoj\u00eb ndihm\u00ebsin me forcat e tij. Kjo ndodhi me ne me Yandex.Cloud.<\/p>\n<p>Ne mor\u00ebm si baz\u00eb p\u00ebr zhvillim <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/digitalocean\/csi-digitalocean\">ndihm\u00ebsin CSI p\u00ebr cloud-in DigitalOcean<\/a><\/noindex> dhe disa ide nga <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/gcp-compute-persistent-disk-csi-driver\">ndihm\u00ebsi p\u00ebr GCP<\/a><\/noindex>, pasi nd\u00ebrveprimi me API-n\u00eb e k\u00ebtyre cloud-eve (Google dhe Yandex) ka disa ngjashm\u00ebri. N\u00eb ve\u00e7anti, API ka <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/docs\/api\/how-tos\/api-requests-responses#handling_api_responses\">GCP<\/a><\/noindex>, dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/api-design-guide\/concepts\/about-async\">Yandex<\/a><\/noindex> kthen objekti <code>Operacioni<\/code> p\u00ebr t\u00eb ndjekur statusin e operacioneve t\u00eb gjata (p.sh., krijimi i nj\u00eb disku t\u00eb ri). P\u00ebr t\u00eb nd\u00ebrvepruar me API-n\u00eb e Yandex.Cloud p\u00ebrdoret <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yandex-cloud\/go-sdk\">Yandex.Cloud Go SDK<\/a><\/noindex>.<\/p>\n<p>Rezultati i pun\u00ebs s\u00eb kryer <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/yandex-csi-driver\">\u00ebsht\u00eb publikuar n\u00eb GitHub<\/a><\/noindex> dhe mund t\u00eb jet\u00eb i dobish\u00ebm p\u00ebr ata q\u00eb p\u00ebr nj\u00eb arsye apo tjet\u00ebr p\u00ebrdorin instalimin e tyre t\u00eb Kubernetes n\u00eb makinat virtuale t\u00eb Yandex.Cloud (por jo nj\u00eb klastri t\u00eb menaxhuar) dhe do t\u00eb donin t\u00eb p\u00ebrdorin (t\u00eb porositin) disqet p\u00ebrmes CSI.<\/p>\n<h2>Realizimi<\/h2>\n<p><\/p>\n<h3>P\u00ebrgjegj\u00ebsi kryesore<\/h3>\n<p>\nAktualisht, drejtori mb\u00ebshtet funksionet e m\u00ebposhtme:<\/p>\n<ul>\n<li> Porosit\u00eb e disqeve n\u00eb t\u00eb gjitha zonat e klastri sipas topologjis\u00eb s\u00eb nyjeve t\u00eb disponueshme n\u00eb klas\u00ebr;<\/li>\n<li> Fshirja e disqeve t\u00eb porositura m\u00eb par\u00eb;<\/li>\n<li> Resize offline p\u00ebr disqet (Yandex.Cloud <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/compute\/operations\/disk-control\/update#change-disk-size\">nuk mb\u00ebshtet<\/a><\/noindex> rritja e disqeve q\u00eb jan\u00eb t\u00eb montuara n\u00eb makinat virtuale). P\u00ebr m\u00ebnyr\u00ebn se si u desh t\u00eb rregullohej drejtori p\u00ebr t\u00eb kryer resize n\u00eb m\u00ebnyr\u00eb sa m\u00eb pa dhimbje, shiko m\u00eb posht\u00eb.<\/li>\n<\/ul>\n<p>\nN\u00eb t\u00eb ardhmen, \u00ebsht\u00eb parashikuar t\u00eb realizohet mb\u00ebshtetje p\u00ebr krijimin dhe fshirjen e snapshoteve t\u00eb disqeve.<\/p>\n<h3>V\u00ebshtir\u00ebsia kryesore dhe tejkalimi i saj<\/h3>\n<p>\nMungesa n\u00eb API-n\u00eb e Yandex.Cloud e mund\u00ebsis\u00eb p\u00ebr t\u00eb rritur disqet n\u00eb koh\u00eb reale - nj\u00eb kufizim q\u00eb e komplikon operacionin e resize p\u00ebr PV (Volume t\u00eb P\u00ebrshtatsh\u00ebm): pasi n\u00eb k\u00ebt\u00eb rast \u00ebsht\u00eb e nevojshme q\u00eb pod-i i aplikacionit q\u00eb p\u00ebrdor disku t\u00eb ndalet, dhe kjo mund t\u00eb shkaktoj\u00eb ndalim t\u00eb aplikacionit.<\/p>\n<p>Sipas <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/container-storage-interface\/spec\">specifikacioni CSI<\/a><\/noindex>, n\u00ebse CSI-kontrolleri raporton se di t\u00eb b\u00ebj\u00eb resize disqesh vet\u00ebm \u201cn\u00eb offline\u201d (<code>VolumeExpansion.OFFLINE<\/code>), at\u00ebher\u00eb procesi i rritjes s\u00eb diskut duhet t\u00eb kaloj\u00eb k\u00ebshtu:<\/p>\n<blockquote><p>N\u00ebse plugu i ka vet\u00ebm <code>VolumeExpansion.OFFLINE<\/code> kapacitetin e zgjerimit dhe volumi aktualisht \u00ebsht\u00eb publikuar ose n\u00eb dispozit\u00eb n\u00eb nj\u00eb nyje, at\u00ebher\u00eb <code>ControllerExpandVolume<\/code> DUHET t\u00eb thirret VET\u00cbM pas ose:<\/p>\n<ul>\n<li> Pluga ka <code>PUBLISH_UNPUBLISH_VOLUME<\/code> kapacitetin dhe <code>ControllerUnpublishVolume<\/code> \u00ebsht\u00eb thirrur me sukses.<\/li>\n<\/ul>\n<p>\nOSE NJ\u00cbTJET\u00cbR<\/p>\n<ul>\n<li> Pluga NUK ka kapacitetin e kontrollit, pluga ka nyj\u00eb <code>PUBLISH_UNPUBLISH_VOLUME<\/code> STAGE_UNSTAGE_VOLUME <code>kapacitetin, dhe<\/code> NodeUnstageVolume <code>\u00ebsht\u00eb p\u00ebrfunduar me sukses.<\/code> kapaciteti, as nyja<\/li>\n<\/ul>\n<p>\nOSE NJ\u00cbTJET\u00cbR<\/p>\n<ul>\n<li>Pluga NUK ka kapacitetin e kontrollit, pluga ka nyj\u00eb <code>PUBLISH_UNPUBLISH_VOLUME<\/code> NodeUnpublishVolume <code>kapacitetin, dhe<\/code> NodeUnstageVolume <code>nuk \u00ebsht\u00eb p\u00ebrfunduar me sukses.<\/code> ka p\u00ebrfunduar me sukses.<\/li>\n<\/ul>\n<\/blockquote>\n<p>\nN\u00eb thelb, kjo do t\u00eb thot\u00eb se \u00ebsht\u00eb e nevojshme t\u00eb shk\u00ebputet disku nga makinat virtuale p\u00ebrpara se t\u00eb rritet.<\/p>\n<p>Megjithat\u00eb, fatkeq\u00ebsisht, <b>implementimi<\/b> specifikimet e CSI p\u00ebrmes sidecar-\u00ebve nuk i p\u00ebrmbushin k\u00ebto k\u00ebrkesa:<\/p>\n<ul>\n<li> N\u00eb kontejnerin sidecar <code>csi-attacher<\/code>, i cili duhet t\u00eb p\u00ebrgjigjet p\u00ebr t\u00eb siguruar intervalin e nevojsh\u00ebm midis montimeve, gjat\u00eb offline-resize nuk \u00ebsht\u00eb realizuar ky funksionalitet. Diskutimi p\u00ebr k\u00ebt\u00eb e iniciuan <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-csi\/external-attacher\/issues\/207\">k\u00ebtu<\/a><\/noindex>.<\/li>\n<li> \u00c7far\u00eb \u00ebsht\u00eb nj\u00eb kontenier sidecar n\u00eb k\u00ebt\u00eb kontekst? Plugins-i CSI nuk merret me nd\u00ebrveprimin me API-n\u00eb Kubernetes, ai vet\u00ebm reagon n\u00eb thirrjet gRPC, t\u00eb cilat i d\u00ebrgojn\u00eb kontenier\u00ebt sidecar. K\u00ebta t\u00eb fundit <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes-csi.github.io\/docs\/sidecar-containers.html\">zhvillohet<\/a><\/noindex> nga komuniteti Kubernetes.<\/li>\n<\/ul>\n<p>\nN\u00eb rastin ton\u00eb (plugin-i CSI) operacioni i zgjerimit t\u00eb diskut duket k\u00ebshtu:<\/p>\n<ol>\n<li> Marrim thirrjen gRPC <code>ControllerExpandVolume<\/code>;<\/li>\n<li> P\u00ebrpiqemi t\u00eb zgjedhim diskun n\u00eb API, por marrim nj\u00eb gabim p\u00ebr pamund\u00ebsin\u00eb e realizimit t\u00eb operacionit, sepse disku \u00ebsht\u00eb i montuar;<\/li>\n<li> Ruajm\u00eb identifikuesin e diskut n\u00eb nj\u00eb hart\u00eb, q\u00eb p\u00ebrmban disqet, p\u00ebr t\u00eb cilat duhet t\u00eb kryhet operacioni i zgjerimit. M\u00eb von\u00eb, p\u00ebr shkak t\u00eb shkurt\u00ebsis\u00eb, do ta quajm\u00eb k\u00ebt\u00eb hart\u00eb si <code>volumeResizeRequired<\/code>;<\/li>\n<li> Manualisht heqim pod-in, i cili p\u00ebrdor diskun. Kubernetes do ta rindez\u00eb at\u00eb. N\u00eb m\u00ebnyr\u00eb q\u00eb disku t\u00eb mos montohen<code>ControllerPublishVolume<\/code>para p\u00ebrfundimit t\u00eb operacionit t\u00eb zgjerimit gjat\u00eb p\u00ebrpjekjes p\u00ebr montim, kontrollojm\u00eb q\u00eb ky disk t\u00eb jet\u00eb ende n\u00eb <code>volumeResizeRequired<\/code> dhe kthejm\u00eb nj\u00eb gabim;<\/li>\n<li> Shoferi CSI p\u00ebrpiqet ta kryej\u00eb p\u00ebrs\u00ebri operacionin e zgjerimit. N\u00ebse operacioni kalon me sukses, at\u00ebher\u00eb heqim diskun nga <code>volumeResizeRequired<\/code>;<\/li>\n<li> N\u00ebse identifikuesi i diskut nuk \u00ebsht\u00eb i pranish\u00ebm n\u00eb <code>volumeResizeRequired<\/code>, <code>ControllerPublishVolume<\/code> kalon me sukses, disku montohen, pod-i aktivizohet.<\/li>\n<\/ol>\n<p>\nE gjith\u00eb kjo duket mjaft e thjesht\u00eb, por si\u00e7 ndodh gjithmon\u00eb, ka disa pengesa. Zgjerimin e disqeve e menaxhon <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes-csi.github.io\/docs\/external-resizer.html\">external-resizer<\/a><\/noindex>, i cili n\u00eb rast gabimi gjat\u00eb realizimit t\u00eb operacionit <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-csi\/external-resizer\/blob\/master\/vendor\/k8s.io\/client-go\/util\/workqueue\/default_rate_limiters.go#L41\">p\u00ebrdor nj\u00eb radh\u00eb<\/a><\/noindex> me rritje eksponenciale t\u00eb koh\u00ebs s\u00eb skadimit deri n\u00eb 1000 sekonda:<\/p>\n<pre><code class=\"go\">func DefaultControllerRateLimiter() RateLimiter {\n  return NewMaxOfRateLimiter(\n  NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second),\n  \\\/\\\/ 10 qps, 100 bucket size. Kjo \u00ebsht\u00eb vet\u00ebm p\u00ebr shpejt\u00ebsin\u00eb e riprovimit dhe \u00ebsht\u00eb vet\u00ebm faktori i p\u00ebrgjithsh\u00ebm (jo p\u00ebr \u00e7do artikull)\n  &amp;BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(10), 100)},\n  )\n}<\/code><\/pre>\n<p>\nKjo mund t\u00eb \u00e7oj\u00eb p\u00ebrher\u00eb n\u00eb rritjen e operacionit t\u00eb zgjerimit t\u00eb diskut p\u00ebr 15+ minuta dhe, k\u00ebshtu, n\u00eb munges\u00ebn e p\u00ebrkat\u00ebs t\u00eb pod-it.<\/p>\n<p>E vetmja mund\u00ebsi, e cila na lejoj\u00eb t\u00eb reduktojm\u00eb koh\u00ebn e mundshme t\u00eb papun\u00ebsis\u00eb leht\u00ebsisht dhe pa dhimbje, ishte p\u00ebrdorimi i versionit ton\u00eb t\u00eb external-resizer me maximin e koh\u00ebs s\u00eb skadimit <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/external-resizer\/blob\/faster-workqueue\/pkg\/controller\/controller.go#L81\">n\u00eb 5 sekonda<\/a><\/noindex>:<\/p>\n<pre><code class=\"go\">workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 5*time.Second)<\/code><\/pre>\n<p>\nNuk arrit\u00ebm t\u00eb diskutojm\u00eb me urgjenc\u00eb dhe t\u00eb patch-ojm\u00eb external-resizer, sepse rritja offline e disqeve \u00ebsht\u00eb nj\u00eb relikt, i cili s\u00eb shpejti do t\u00eb zhduket nga t\u00eb gjith\u00eb ofruesit e reja cloud.<\/p>\n<h2>Si t\u00eb filloni ta p\u00ebrdorni?<\/h2>\n<p>\nShoferi mb\u00ebshtetet n\u00eb Kubernetes versionin 1.15 dhe m\u00eb t\u00eb lart\u00eb. P\u00ebr t\u00eb punuar shoferi duhet t\u00eb plot\u00ebsojn\u00eb k\u00ebrkesat e m\u00ebposhtme:<\/p>\n<ul>\n<li> Flamuri <code>--allow-privileged<\/code> caktuar n\u00eb vler\u00eb <code>e v\u00ebrtet\u00eb<\/code> p\u00ebr serverin API dhe kubelet;<\/li>\n<li> Aktivizuar <code>--feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true<\/code> p\u00ebr serverin API dhe kubelet;<\/li>\n<li> Propagimi i montimit (<noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/volumes\/#mount-propagation\">mount propagation<\/a><\/noindex>) duhet t\u00eb jet\u00eb i aktivizuar n\u00eb klaster. Kur p\u00ebrdoret Docker, demon duhet t\u00eb jet\u00eb i konfiguruar n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb lejoj\u00eb objektet e ndara t\u00eb montimit (shared mounts).<\/li>\n<\/ul>\n<p>\nT\u00eb gjitha hapat e nevojsh\u00ebm p\u00ebr instalimin e vet\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/yandex-csi-driver#installing-driver\">jan\u00eb t\u00eb p\u00ebrshkruara n\u00eb README<\/a><\/noindex>. Instalimi p\u00ebrfshin krijimin e objekteve n\u00eb Kubernetes nga manifestet.<\/p>\n<p>P\u00ebr t\u00eb punuar me driverin do t'ju nevojitet ajo q\u00eb vijon:<\/p>\n<ul>\n<li> T\u00eb specifikoni n\u00eb manifest identifikuesin e katalogut (<code>folder-id<\/code>) t\u00eb Yandex.Cloud (<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/resource-manager\/operations\/folder\/get-id\">shihni dokumentacionin<\/a><\/noindex>);<\/li>\n<li> P\u00ebr t\u00eb komunikuar me API-n\u00eb e Yandex.Cloud n\u00eb driverin CSI p\u00ebrdoret nj\u00eb llogari sh\u00ebrbyese. N\u00eb manifestin Secret nevojitet t\u00eb kaloni <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.com\/docs\/iam\/concepts\/authorization\/key\">\u00e7el\u00ebsat e autorizuar<\/a><\/noindex> nga llogaria e sh\u00ebrbimit. N\u00eb dokumentacionin <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/iam\/quickstart-sa\">jan\u00eb p\u00ebrshkruar<\/a><\/noindex>, si t\u00eb krijoni nj\u00eb llogari sh\u00ebrbimi dhe t\u00eb merrni \u00e7el\u00ebsat.<\/li>\n<\/ul>\n<p>\nN\u00eb p\u00ebrgjith\u00ebsi \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/yandex-csi-driver\">provojeni<\/a><\/noindex>, dhe ne do t\u00eb ishim t\u00eb lumtur p\u00ebr \u00e7do feedback dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/yandex-csi-driver\/issues\">probleme t\u00eb reja<\/a><\/noindex>, n\u00ebse hasni ndonj\u00eb problem!<\/p>\n<h2>Mb\u00ebshtetje e m\u00ebtejshme<\/h2>\n<p>\nN\u00eb p\u00ebrfundim, do t\u00eb donim t\u00eb theksonim se ky driver CSI \u00ebsht\u00eb realizuar jo p\u00ebr nj\u00eb d\u00ebshir\u00eb t\u00eb madhe p\u00ebr t\u00eb ndihmuar me shkruar aplikacione n\u00eb Go, por p\u00ebr shkak t\u00eb nj\u00eb nevoje t\u00eb ngutshme brenda kompanis\u00eb. T\u00eb mbash nj\u00eb implementim t\u00ebndin nuk na duket praktik, prandaj, n\u00ebse Yandex tregon interes dhe vendos t\u00eb vazhdoj\u00eb mb\u00ebshtetje e driverit, do ta kalojm\u00eb repo-n me k\u00ebnaq\u00ebsi n\u00eb duar e tyre.<\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, ndoshta Yandex ka nj\u00eb implementim t\u00eb vetin t\u00eb driverit CSI n\u00eb klasterin e menaxhuar Kubernetes, q\u00eb mund t\u00eb l\u00ebshohet n\u00eb Open Source. Nj\u00eb zhvillim i till\u00eb na duket gjithashtu favorizues \u2014 komuniteti mund t\u00eb p\u00ebrfitoj\u00eb nga nj\u00eb driver i provuar nga ofruesi i sh\u00ebrbimeve, e jo nga nj\u00eb kompani e jashtme.<\/p>\n<h2>P.S.<\/h2>\n<p>\nLexoni gjithashtu n\u00eb blogun ton\u00eb:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465417\/\">Plugins p\u00ebr volumet e ruajtjes n\u00eb Kubernetes: nga Flexvolume n\u00eb CSI<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/424211\/\">Kuptojm\u00eb Container Storage Interface (n\u00eb Kubernetes dhe jo vet\u00ebm)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">A \u00ebsht\u00eb e leht\u00eb dhe e rehatshme t\u00eb p\u00ebrgatis\u00ebsh nj\u00eb klaster Kubernetes? Njoftojm\u00eb addon-operatorin<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">Zgjerimi dhe plot\u00ebsimi i Kubernetes (p\u00ebrmbledhje dhe video e referatit)<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/486190\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0420\u0430\u0434\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u00ab\u0424\u043b\u0430\u043d\u0442\u00bb \u043f\u043e\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u0432\u043e\u0439 \u0432\u043a\u043b\u0430\u0434 \u0432 Open Source-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f Kubernetes, \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0432 \u0430\u043b\u044c\u0444\u0430-\u0432\u0435\u0440\u0441\u0438\u044e \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 CSI (Container Storage Interface) \u0434\u043b\u044f \u042f\u043d\u0434\u0435\u043a\u0441.\u041e\u0431\u043b\u0430\u043a\u0430. \u041d\u043e \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0434\u0435\u0442\u0430\u043b\u044f\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u043e\u0442\u0432\u0435\u0442\u0438\u043c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441, \u0437\u0430\u0447\u0435\u043c \u044d\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u0443 \u042f\u043d\u0434\u0435\u043a\u0441\u0430 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0443\u0441\u043b\u0443\u0433\u0430 Managed Service for Kubernetes. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0417\u0430\u0447\u0435\u043c \u044d\u0442\u043e? \u0412\u043d\u0443\u0442\u0440\u0438 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0435\u0449\u0451 \u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":40722,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-40721","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0420\u0430\u0434\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/nash-opyt-razrabotki-csi-drajvera-v-kubernetes-dlya-yandeks-oblaka\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u0430\u0448 \u043e\u043f\u044b\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 CSI-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0432 Kubernetes \u0434\u043b\u044f \u042f\u043d\u0434\u0435\u043a\u0441.\u041e\u0431\u043b\u0430\u043a\u0430 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0420\u0430\u0434\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/nash-opyt-razrabotki-csi-drajvera-v-kubernetes-dlya-yandeks-oblaka\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-03T11:41:59+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-03T11:41:59+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Eksperienca jon\u00eb n\u00eb zhvillimin e driverit CSI n\u00eb Kubernetes p\u00ebr Yandex.Cloud | ProHoster","description":"Jemi t\u00eb lumtur t\u00eb shpallim se kompania.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/nash-opyt-razrabotki-csi-drajvera-v-kubernetes-dlya-yandeks-oblaka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u0430\u0448 \u043e\u043f\u044b\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 CSI-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 \u0432 Kubernetes \u0434\u043b\u044f \u042f\u043d\u0434\u0435\u043a\u0441.\u041e\u0431\u043b\u0430\u043a\u0430 | ProHoster","og:description":"\u0420\u0430\u0434\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f.","og:url":"https:\/\/prohoster.info\/sq\/blog\/nash-opyt-razrabotki-csi-drajvera-v-kubernetes-dlya-yandeks-oblaka","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-03T11:41:59+00:00","article:modified_time":"2020-02-03T11:41:59+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"40721","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:32:40","updated":"2022-09-30 15:42:14","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/40721","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=40721"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/40721\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/40722"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=40721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=40721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=40721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}