{"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\/hu\/blog\/nash-opyt-razrabotki-csi-drajvera-v-kubernetes-dlya-yandeks-oblaka","title":{"rendered":"A CSI-meghajt\u00f3 fejleszt\u00e9s\u00e9nek tapasztalata Kubernetesben a Yandex.Cloud sz\u00e1m\u00e1ra","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"A CSI-meghajt\u00f3 fejleszt\u00e9s\u00e9nek tapasztalata Kubernetesben a Yandex.Cloud sz\u00e1m\u00e1ra\" src=\"\/wp-content\/uploads\/2020\/02\/86adf77b2ee08c426bf79c5b9b2d3d1e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00d6r\u00f6mmel jelentj\u00fck be, hogy a Flant c\u00e9g hozz\u00e1j\u00e1rul\u00e1sa a Kubernetes Open Source eszk\u00f6zeihez b\u0151v\u00fcl, kiadva <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/yandex-csi-driver\">a CSI illeszt\u0151program alfa verzi\u00f3j\u00e1t<\/a><\/noindex> (Container Storage Interface) a Yandex Felh\u0151h\u00f6z.<\/p>\n<p>De miel\u0151tt r\u00e1t\u00e9rn\u00e9nk a megval\u00f3s\u00edt\u00e1s r\u00e9szleteire, v\u00e1laszoljunk arra a k\u00e9rd\u00e9sre, hogy mi\u00e9rt van erre egy\u00e1ltal\u00e1n sz\u00fcks\u00e9g, amikor a Yandex m\u00e1r k\u00edn\u00e1lja a <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/managed-kubernetes\/\">Managed Service for Kubernetes-t.<\/a><\/noindex>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Bevezet\u00e9s<\/h2>\n<p><\/p>\n<h3>Mi\u00e9rt?<\/h3>\n<p>\nC\u00e9g\u00fcnk bels\u0151 m\u0171k\u00f6d\u00e9s\u00e9ben, a Kubernetes \u00e9les \u00fczemeltet\u00e9s\u00e9nek megkezd\u00e9se \u00f3ta (azaz m\u00e1r t\u00f6bb \u00e9ve) folyamatosan fejl\u0151dik egy saj\u00e1t eszk\u00f6z\u00fcnk (deckhouse), amelyet szint\u00e9n tervezz\u00fck hamarosan Open Source projektk\u00e9nt el\u00e9rhet\u0151v\u00e9 tenni. Ennek seg\u00edts\u00e9g\u00e9vel egys\u00e9gesen konfigur\u00e1ljuk \u00e9s \u00e1ll\u00edtjuk be az \u00f6sszes klasztert, \u00e9s jelenleg m\u00e1r t\u00f6bb mint 100 klaszter\u00fcnk van, k\u00fcl\u00f6nb\u00f6z\u0151 hardverkonfigur\u00e1ci\u00f3kon \u00e9s minden el\u00e9rhet\u0151 felh\u0151szolg\u00e1ltat\u00e1son.<\/p>\n<p>A deckhouse-t haszn\u00e1l\u00f3 klaszterek minden sz\u00fcks\u00e9ges komponenst tartalmaznak: terhel\u00e9seloszt\u00f3k, monitoring k\u00e9nyelmes grafikonokkal, metrik\u00e1kkal \u00e9s riaszt\u00e1sokkal, felhaszn\u00e1l\u00f3i autentik\u00e1ci\u00f3 k\u00fcls\u0151 szolg\u00e1ltat\u00f3k \u00e1ltal a dashboardok el\u00e9r\u00e9s\u00e9hez \u00e9s \u00edgy tov\u00e1bb. Egy ilyen \u201efeljav\u00edtott\u201d klasztert nincs \u00e9rtelme menedzselt megold\u00e1sk\u00e9nt telep\u00edteni, mert gyakran ez lehetetlen, vagy f\u00e9lkomponens letilt\u00e1s\u00e1hoz vezet.<\/p>\n<p><i><b>NB<\/b>: Ez a tapasztalatunk, \u00e9s el\u00e9g speci\u00e1lis. Semmik\u00e9ppen sem \u00e1ll\u00edtjuk, hogy mindenkinek \u00f6n\u00e1ll\u00f3an kellene a Kubernetes klaszterek telep\u00edt\u00e9s\u00e9vel foglalkoznia ahelyett, hogy k\u00e9sz megold\u00e1sokat haszn\u00e1ln\u00e1nak. \u00c9rdemes megjegyezni, hogy a Yandex-t\u0151l nincs val\u00f3s Kubernetes \u00fczemeltet\u00e9si tapasztalatunk, ez\u00e9rt a szolg\u00e1ltat\u00e1s \u00e9rt\u00e9kel\u00e9s\u00e9vel kapcsolatban semmif\u00e9le nyilatkozatot nem tesz\u00fcnk a jelen cikkben.<\/i><\/p>\n<h3>Mi ez \u00e9s kinek sz\u00f3l?<\/h3>\n<p>\nTeh\u00e1t m\u00e1r besz\u00e9lt\u00fcnk a Kubernetes t\u00e1rol\u00f3kkal kapcsolatos modern megk\u00f6zel\u00edt\u00e9sekr\u0151l: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/424211\/\">hogyan m\u0171k\u00f6dik a CSI<\/a><\/noindex> \u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465417\/\">hogyan jutott a k\u00f6z\u00f6ss\u00e9g<\/a><\/noindex> ehhez a megk\u00f6zel\u00edt\u00e9shez.<\/p>\n<p>Jelenleg sok nagy felh\u0151szolg\u00e1ltat\u00f3 kifejlesztett illeszt\u0151programokat a saj\u00e1t \u201efelh\u0151s\u201d lemezeik Kubernetes Persistent Volume-k\u00e9nt val\u00f3 haszn\u00e1lat\u00e1hoz. Ha pedig a szolg\u00e1ltat\u00f3nak nincs ilyen illeszt\u0151programja, de minden sz\u00fcks\u00e9ges funkci\u00f3 API-n kereszt\u00fcl rendelkez\u00e9sre \u00e1ll, akkor semmi sem akad\u00e1lyozza meg, hogy saj\u00e1t er\u0151b\u0151l implement\u00e1lj egy illeszt\u0151programot. Mi is \u00edgy j\u00e1rtunk a Yandex Felh\u0151 eset\u00e9ben.<\/p>\n<p>A fejleszt\u00e9s alapj\u00e1ul a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/digitalocean\/csi-digitalocean\">DigitalOcean felh\u0151h\u00f6z k\u00e9sz\u00fclt CSI-illeszt\u0151programot vett\u00fck<\/a><\/noindex> \u00e9s n\u00e9h\u00e1ny \u00f6tletet a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/gcp-compute-persistent-disk-csi-driver\">GCP illeszt\u0151programb\u00f3l<\/a><\/noindex>, mivel ezen felh\u0151k (Google \u00e9s Yandex) API-ja k\u00f6z\u00f6tt sz\u00e1mos hasonl\u00f3s\u00e1g van. K\u00fcl\u00f6n\u00f6sen az API mindkett\u0151n\u00e9l, \u00e9s a <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.google.com\/compute\/docs\/api\/how-tos\/api-requests-responses#handling_api_responses\">GCP<\/a><\/noindex>Yandex <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/api-design-guide\/concepts\/about-async\">is.<\/a><\/noindex> visszat\u00e9r egy objektumot <code>M\u0171velet<\/code> a hossz\u00fa t\u00e1v\u00fa m\u0171veletek \u00e1llapot\u00e1nak nyomon k\u00f6vet\u00e9s\u00e9re (p\u00e9ld\u00e1ul \u00faj lemez l\u00e9trehoz\u00e1sa). Az API-val val\u00f3 interakci\u00f3hoz a Yandex.Cloud-ot haszn\u00e1lj\u00e1k <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yandex-cloud\/go-sdk\">Yandex.Cloud Go SDK<\/a><\/noindex>.<\/p>\n<p>A v\u00e9grehajtott munka eredm\u00e9nye <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/yandex-csi-driver\">k\u00f6zz\u00e9t\u00e9ve a GitHub-on<\/a><\/noindex> \u00e9s hasznos lehet azok sz\u00e1m\u00e1ra, akik valamilyen okb\u00f3l saj\u00e1t Kubernetes telep\u00edt\u00e9st haszn\u00e1lnak a Yandex.Cloud virtu\u00e1lis g\u00e9pein (de nem k\u00e9sz, kezelt klaszter) \u00e9s szeretn\u00e9k haszn\u00e1lni (rendelni) a lemezeket a CSI-n kereszt\u00fcl.<\/p>\n<h2>Megval\u00f3s\u00edt\u00e1s<\/h2>\n<p><\/p>\n<h3>F\u0151bb lehet\u0151s\u00e9gek<\/h3>\n<p>\nJelenleg a meghajt\u00f3 a k\u00f6vetkez\u0151 funkci\u00f3kat t\u00e1mogatja:<\/p>\n<ul>\n<li> Lemezek rendel\u00e9se a klaszter \u00f6sszes z\u00f3n\u00e1j\u00e1ban a klaszterben l\u00e9v\u0151 csom\u00f3pontok topol\u00f3gi\u00e1ja szerint;<\/li>\n<li> Kor\u00e1bban rendelhet\u0151 lemezek elt\u00e1vol\u00edt\u00e1sa;<\/li>\n<li> Offline m\u00e9retez\u00e9s a lemezekhez (Yandex.Cloud <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/compute\/operations\/disk-control\/update#change-disk-size\">nem t\u00e1mogatja<\/a><\/noindex> n\u00f6vel\u00e9s lemezek, amelyek csatlakoztatva vannak a virtu\u00e1lis g\u00e9phez). Arr\u00f3l, hogy hogyan kellett m\u00f3dos\u00edtani a meghajt\u00f3t, hogy a lehet\u0151 legkisebb f\u00e1jdalommal v\u00e9grehajthassuk a m\u00e9retez\u00e9st, l\u00e1sd al\u00e1bb.<\/li>\n<\/ul>\n<p>\nA j\u00f6v\u0151ben tervezik a lemezk\u00e9pek l\u00e9trehoz\u00e1s\u00e1nak \u00e9s t\u00f6rl\u00e9s\u00e9nek t\u00e1mogat\u00e1s\u00e1t.<\/p>\n<h3>A f\u0151 neh\u00e9zs\u00e9g \u00e9s annak lek\u00fczd\u00e9se<\/h3>\n<p>\nAz, hogy az API Yandex.Cloud-ban nincs lehet\u0151s\u00e9g a lemezek val\u00f3s idej\u0171 n\u00f6vel\u00e9s\u00e9re \u2014 korl\u00e1toz\u00e1s, amely megnehez\u00edti a PV (Persistent Volume) m\u00e9retez\u00e9si m\u0171veletet: hiszen ilyenkor a pod alkalmaz\u00e1s, amely a lemezt haszn\u00e1lja, le\u00e1ll\u00edt\u00e1sa sz\u00fcks\u00e9ges, ami le\u00e1ll\u00e1st okozhat az alkalmaz\u00e1sban.<\/p>\n<p>A k\u00f6vetkez\u0151 szerint <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/container-storage-interface\/spec\">a CSI specifik\u00e1ci\u00f3ban<\/a><\/noindex>, ha a CSI-vez\u00e9rl\u0151 arr\u00f3l t\u00e1j\u00e9koztat, hogy a lemezek m\u00e9retez\u00e9s\u00e9t csak \u00aboffline\u00bb tudja v\u00e9gezni (<code>VolumeExpansion.OFFLINE<\/code>), akkor a lemez n\u00f6vel\u00e9si folyamat\u00e1nak \u00edgy kell zajlania:<\/p>\n<blockquote><p>Ha a plugin csak <code>VolumeExpansion.OFFLINE<\/code> kiterjeszt\u00e9si k\u00e9pess\u00e9ggel rendelkezik \u00e9s a Volume jelenleg ki van adva vagy el\u00e9rhet\u0151 egy csom\u00f3ponton, akkor <code>A ControllerExpandVolume-ot<\/code> CSAK akkor kell h\u00edvni, miut\u00e1n:<\/p>\n<ul>\n<li> A plugin rendelkezik controller <code>PUBLISH_UNPUBLISH_VOLUME<\/code> k\u00e9pess\u00e9ggel \u00e9s <code>A ControllerUnpublishVolume-t<\/code> sikeresen h\u00edvt\u00e1k.<\/li>\n<\/ul>\n<p>\nVAGY HA<\/p>\n<ul>\n<li> A plugin NEM rendelkezik vez\u00e9rl\u0151 <code>PUBLISH_UNPUBLISH_VOLUME<\/code> k\u00e9pess\u00e9ggel,  a plugin rendelkezik csom\u00f3pont <code>STAGE_UNSTAGE_VOLUME<\/code> k\u00e9pess\u00e9ggel, \u00e9s <code>A NodeUnstageVolume<\/code> sikeresen befejez\u0151d\u00f6tt.<\/li>\n<\/ul>\n<p>\nVAGY HA<\/p>\n<ul>\n<li>A plugin NEM rendelkezik vez\u00e9rl\u0151 <code>PUBLISH_UNPUBLISH_VOLUME<\/code> sem csom\u00f3pont <code>STAGE_UNSTAGE_VOLUME<\/code> k\u00e9pess\u00e9ggel, \u00e9s <code>A NodeUnpublishVolume<\/code> sikeresen befejez\u0151d\u00f6tt.<\/li>\n<\/ul>\n<\/blockquote>\n<p>\nL\u00e9nyeg\u00e9ben ez azt jelenti, hogy a lemezt le kell csatlakoztatni a virtu\u00e1lis g\u00e9pr\u0151l, miel\u0151tt n\u00f6velni lehet.<\/p>\n<p>Sajn\u00e1latos m\u00f3don % <b>implement\u00e1ci\u00f3ja,<\/b> a CSI specifik\u00e1ci\u00f3k k\u00f6z\u00f6tti sidecar-ok nem felelnek meg ezeknek a k\u00f6vetelm\u00e9nyeknek:<\/p>\n<ul>\n<li> A sidecar kont\u00e9nerben <code>csi-attacher<\/code>, amelynek biztos\u00edtania kell a sz\u00fcks\u00e9ges sz\u00fcnetet a csatlakoztat\u00e1sok k\u00f6z\u00f6tt, offline m\u00e9retez\u00e9s eset\u00e9n egyszer\u0171en nem val\u00f3sult meg ez a funkci\u00f3. Err\u0151l a vit\u00e1t kezdem\u00e9nyeztek. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-csi\/external-attacher\/issues\/207\">itt<\/a><\/noindex>.<\/li>\n<li> Mi is az a sidecar kont\u00e9ner ebben a kontextusban? Maga a CSI plugin nem foglalkozik a Kubernetes API-val val\u00f3 interakci\u00f3val, csak reag\u00e1l azokra a gRPC h\u00edv\u00e1sokra, amelyeket a sidecar kont\u00e9nerek k\u00fcldenek. Az ut\u00f3bbiak <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes-csi.github.io\/docs\/sidecar-containers.html\">fejleszt\u00e9s alatt \u00e1llnak<\/a><\/noindex> a Kubernetes k\u00f6z\u00f6ss\u00e9gr\u0151l.<\/li>\n<\/ul>\n<p>\nA mi eset\u00fcnkben (CSI plugin) a lemez b\u0151v\u00edt\u00e9si m\u0171velete a k\u00f6vetkez\u0151k\u00e9ppen n\u00e9z ki:<\/p>\n<ol>\n<li> Megkapjuk a gRPC h\u00edv\u00e1st <code>A ControllerExpandVolume-ot<\/code>;<\/li>\n<li> Megpr\u00f3b\u00e1ljuk b\u0151v\u00edteni a lemezt az API-ban, de hib\u00e1t kapunk, amely arra figyelmeztet, hogy a m\u0171velet nem hajthat\u00f3 v\u00e9gre, mivel a lemez csatlakoztatva van;<\/li>\n<li> Mentj\u00fck a lemez azonos\u00edt\u00f3j\u00e1t egy t\u00e9rk\u00e9pre, amely a lemezeket tartalmazza, amelyek eset\u00e9ben b\u0151v\u00edt\u00e9si m\u0171veletet kell v\u00e9gezni. A tov\u00e1bbiakban a t\u00e9k\u00e9r\u0151l a k\u00f6vetkez\u0151k\u00e9ppen fogunk hivatkozni: <code>volumeResizeRequired<\/code>;<\/li>\n<li> K\u00e9zzel elt\u00e1vol\u00edtjuk a podot, amely a lemezt haszn\u00e1lja. A Kubernetes \u00fajraind\u00edtja azt. Annak \u00e9rdek\u00e9ben, hogy a lemez ne csatlakozzon (<code>ControllerPublishVolume<\/code>) a b\u0151v\u00edt\u00e9si m\u0171velet befejez\u00e9se el\u0151tt, az \u00f6sszekapcsol\u00e1s pr\u00f3b\u00e1lkoz\u00e1sakor ellen\u0151rizz\u00fck, hogy a lemez tov\u00e1bbra is <code>volumeResizeRequired<\/code> \u00e9s hib\u00e1t adunk vissza;<\/li>\n<li> A CSI driver megpr\u00f3b\u00e1lja \u00fajra elv\u00e9gezni a b\u0151v\u00edt\u00e9si m\u0171veletet. Ha a m\u0171velet sikeres, a lemezt elt\u00e1vol\u00edtjuk a <code>volumeResizeRequired<\/code>;<\/li>\n<li> Mivel a lemez azonos\u00edt\u00f3ja hi\u00e1nyzik a <code>volumeResizeRequired<\/code>, <code>ControllerPublishVolume<\/code> sikeresen v\u00e9gbemegy, a lemez csatlakozik, a pod elindul.<\/li>\n<\/ol>\n<p>\nMindez el\u00e9g egyszer\u0171en hangzik, de mint mindig, itt is vannak buktat\u00f3k. A lemezek b\u0151v\u00edt\u00e9s\u00e9vel foglalkozik <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes-csi.github.io\/docs\/external-resizer.html\">external-resizer<\/a><\/noindex>, amely hiba eset\u00e9n a m\u0171velet v\u00e9grehajt\u00e1sa sor\u00e1n <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\">haszn\u00e1lja a sorqueue-t<\/a><\/noindex> exponenci\u00e1lis id\u0151z\u00edt\u00e9s\u0171 id\u0151t\u00fall\u00e9p\u00e9ssel, amely 1000 m\u00e1sodpercig terjed:<\/p>\n<pre><code class=\"go\">func DefaultControllerRateLimiter() RateLimiter {\n  return NewMaxOfRateLimiter(\n  NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second),\n  \/\/ 10 qps, 100 v\u00f6dr\u00f6s m\u00e9ret. Ez csak a pr\u00f3b\u00e1lkoz\u00e1s sebess\u00e9g\u00e9re vonatkozik, \u00e9s ez csak az \u00e1ltal\u00e1nos t\u00e9nyez\u0151 (nem elemenk\u00e9nt)\n  &amp;BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(10), 100)},\n  )\n}<\/code><\/pre>\n<p>\nEz id\u0151nk\u00e9nt ahhoz vezethet, hogy a lemez b\u0151v\u00edt\u00e9si m\u0171velete 15+ percig elh\u00faz\u00f3dik, \u00edgy a megfelel\u0151 pod el\u00e9rhetetlen.<\/p>\n<p>Az egyetlen lehet\u0151s\u00e9g, amely viszonylag k\u00f6nnyen \u00e9s f\u00e1jdalommentesen lehet\u0151v\u00e9 tette sz\u00e1munkra a potenci\u00e1lis le\u00e1ll\u00e1si id\u0151 cs\u00f6kkent\u00e9s\u00e9t, az volt, hogy saj\u00e1t verzi\u00f3t haszn\u00e1ltunk az external-resizerb\u0151l, maxim\u00e1lis id\u0151t\u00fall\u00e9p\u00e9si korl\u00e1toz\u00e1ssal <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/external-resizer\/blob\/faster-workqueue\/pkg\/controller\/controller.go#L81\">5 m\u00e1sodperc<\/a><\/noindex>:<\/p>\n<pre><code class=\"go\">workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 5*time.Second)<\/code><\/pre>\n<p>\nNem tartottuk sz\u00fcks\u00e9gesnek, hogy s\u00fcrg\u0151sen kezdem\u00e9nyezz\u00fcnk egy vit\u00e1t \u00e9s jav\u00edtsuk az external-resizer-t, mivel a lemezek offline b\u0151v\u00edt\u00e9se \u2014 a t\u00f6bbi felh\u0151szolg\u00e1ltat\u00f3 \u00e1ltal hamarosan megsz\u0171n\u0151 archaizmus.<\/p>\n<h2>Hogyan kezdj\u00fck el a haszn\u00e1lat\u00e1t?<\/h2>\n<p>\nA drivert a Kubernetes 1.15-\u00f6s \u00e9s \u00fajabb verzi\u00f3i t\u00e1mogatj\u00e1k. A driver m\u0171k\u00f6d\u00e9s\u00e9hez a k\u00f6vetkez\u0151 k\u00f6vetelm\u00e9nyeknek kell teljes\u00fclni\u00fck:<\/p>\n<ul>\n<li> Z\u00e1szl\u00f3 <code>--allow-privileged<\/code> be\u00e1ll\u00edtva <code>igaz<\/code> az API-szerver \u00e9s kubelet sz\u00e1m\u00e1ra;<\/li>\n<li> Bekapcsolva <code>--feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true<\/code> az API-szerver \u00e9s kubelet sz\u00e1m\u00e1ra;<\/li>\n<li> A csatlakoztat\u00e1s terjedelme (<noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/volumes\/#mount-propagation\">mount propagation<\/a><\/noindex>) enged\u00e9lyezve kell legyen a klaszterben. Docker haszn\u00e1lata eset\u00e9n a d\u00e9mon konfigur\u00e1lva kell legyen, hogy megengedje a megosztott csatlakoz\u00e1sokat (shared mounts).<\/li>\n<\/ul>\n<p>\nMinden sz\u00fcks\u00e9ges l\u00e9p\u00e9s az install\u00e1ci\u00f3val kapcsolatban <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/yandex-csi-driver#installing-driver\">a README dokumentumban<\/a><\/noindex>. Az install\u00e1l\u00e1s a Kubernetes objektumok l\u00e9trehoz\u00e1s\u00e1t jelenti a manifesztumokb\u00f3l.<\/p>\n<p>A meghajt\u00f3 m\u0171k\u00f6d\u00e9s\u00e9hez a k\u00f6vetkez\u0151re van sz\u00fcks\u00e9g:<\/p>\n<ul>\n<li> Meg kell adnia a manifesztumban a k\u00f6nyvt\u00e1r azonos\u00edt\u00f3j\u00e1t (<code>folder-id<\/code>) a Yandex Felh\u0151ben (<noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/resource-manager\/operations\/folder\/get-id\">l\u00e1sd a dokument\u00e1ci\u00f3t<\/a><\/noindex>);<\/li>\n<li> A Yandex Felh\u0151 API-j\u00e1val val\u00f3 interakci\u00f3hoz a CSI-meghajt\u00f3ban szolg\u00e1ltat\u00f3i fi\u00f3kot kell haszn\u00e1lni. A Secret manifesztumban meg kell adni <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.com\/docs\/iam\/concepts\/authorization\/key\">az enged\u00e9lyezett kulcsokat<\/a><\/noindex> a szolg\u00e1ltat\u00f3i fi\u00f3kt\u00f3l. A dokument\u00e1ci\u00f3ban <noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.yandex.ru\/docs\/iam\/quickstart-sa\">ami le van \u00edrva<\/a><\/noindex>, hogyan kell szolg\u00e1ltat\u00f3i fi\u00f3kot l\u00e9trehozni \u00e9s kulcsokat szerezni.<\/li>\n<\/ul>\n<p>\n\u00d6sszess\u00e9g\u00e9ben \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/yandex-csi-driver\">pr\u00f3b\u00e1ld ki<\/a><\/noindex>, \u00e9s \u00f6r\u00f6mmel fogadjuk a visszajelz\u00e9seket \u00e9s <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/yandex-csi-driver\/issues\">\u00faj jelz\u00e9seket<\/a><\/noindex>, ha b\u00e1rmilyen probl\u00e9m\u00e1val tal\u00e1lkozna!<\/p>\n<h2>Tov\u00e1bbi t\u00e1mogat\u00e1s<\/h2>\n<p>\n\u00d6sszefoglalva szeretn\u00e9nk megjegyezni, hogy ezt a CSI-meghajt\u00f3t nem nagy k\u00edv\u00e1ncsis\u00e1gb\u00f3l kezdt\u00fck el a Go alkalmaz\u00e1sok \u00edr\u00e1s\u00e1val foglalkozni, hanem a c\u00e9g\u00fcnk bels\u0151 ig\u00e9ny\u00e9b\u0151l. Nem l\u00e1tjuk c\u00e9lszer\u0171nek a saj\u00e1t megval\u00f3s\u00edt\u00e1sunk fenntart\u00e1s\u00e1t, ez\u00e9rt ha a Yandex \u00e9rdekl\u0151d\u00e9st mutat \u00e9s tov\u00e1bbra is t\u00e1mogatni k\u00edv\u00e1nja a meghajt\u00f3t, \u00f6r\u00f6mmel \u00e1tadjuk a rep\u00f3t a rendelkez\u00e9s\u00e9re.<\/p>\n<p>Tov\u00e1bb\u00e1, val\u00f3sz\u00edn\u0171leg a Yandex-nek a managed Kubernetes klaszter\u00e9ben van saj\u00e1t CSI-meghajt\u00f3 realiz\u00e1ci\u00f3ja, amelyet Open Source-k\u00e9nt ki lehet adni. Ez a fejleszt\u00e9si lehet\u0151s\u00e9g is kedvez\u0151 sz\u00e1munkra \u2014 a k\u00f6z\u00f6ss\u00e9g megb\u00edzhat\u00f3 meghajt\u00f3t haszn\u00e1lhatna a szolg\u00e1ltat\u00f3t\u00f3l, nem pedig egy k\u00fcls\u0151 c\u00e9gt\u0151l.<\/p>\n<h2>P.S.<\/h2>\n<p>\nOlvasson tov\u00e1bbi inform\u00e1ci\u00f3kat a blogunkban:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/465417\/\">Kubernetes t\u00e1rol\u00f3k b\u0151v\u00edtm\u00e9nyei: a Flexvolume-t\u00f3l a CSI-ig<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/424211\/\">Meg\u00e9rtj\u00fck a Container Storage Interface-t (Kubernetes-ben \u00e9s azon k\u00edv\u00fcl is).<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">A Kubernetes klaszter el\u0151k\u00e9sz\u00edt\u00e9se egyszer\u0171 \u00e9s k\u00e9nyelmes? Bejelentj\u00fck az addon-oper\u00e1tort<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">Kib\u0151v\u00edtj\u00fck \u00e9s kieg\u00e9sz\u00edtj\u00fck a Kubernetest (\u00e1ttekint\u00e9s \u00e9s vide\u00f3 el\u0151ad\u00e1s)<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Forr\u00e1s: <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.3 - 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\/hu\/blog\/nash-opyt-razrabotki-csi-drajvera-v-kubernetes-dlya-yandeks-oblaka\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47A Yandex Felh\u0151h\u00f6z k\u00e9sz\u00fclt CSI-meghajt\u00f3 fejleszt\u00e9s\u00e9nek tapasztalata a Kubernetesben | ProHoster","description":"\u00d6r\u00f6mmel bejelentj\u00fck, hogy a c\u00e9g\u00fcnk.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/nash-opyt-razrabotki-csi-drajvera-v-kubernetes-dlya-yandeks-oblaka","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/40721","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=40721"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/40721\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/40722"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=40721"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=40721"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=40721"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}