
Tha sinn toilichte ainmeachadh gu bheil Flant aâ leudachadh na tha iad aâ cur ri innealan Open Source airson Kubernetes le bhith aâ leigeil ma sgaoil (Eadar-aghaidh Stòradh Container) airson Yandex.Cloud.
Ach mus gluais sinn air adhart gu mion-fhiosrachadh buileachaidh, freagraidh sinn aâ cheist carson a tha feum air seo nuair a tha seirbheis aig Yandex mu thrĂ th .
Ro-rĂ dh
Carson a tha seo?
Taobh a-staigh ar companaidh, bhon fhĂŹor thoiseach cleachdadh Kubernetes ann an cinneasachadh (ie airson grunn bhliadhnaichean a-nis), tha sinn air a bhith aâ leasachadh ar n-inneal fhèin (deckhouse), a tha, leis an t-slighe, cuideachd an dĂšil a bhith ri fhaighinn a dhâ aithghearr mar phròiseact Open Source . Le a chuideachadh, bidh sinn aâ rèiteachadh agus aâ rèiteachadh ar cruinneachaidhean gu lèir, agus an-drĂ sta tha còrr air 100 dhiubh ann mu thrĂ th, air measgachadh farsaing de rèiteachaidhean bathar-cruaidh agus anns a h-uile seirbheis sgòthan a tha ri fhaighinn.
Tha na pĂ irtean uile a tha riatanach airson obrachadh aig cruinneachaidhean a bhios aâ cleachdadh taigh-deic: luchd-cothromachaidh, sgrĂšdadh le clĂ ran goireasach, meatrach agus rabhaidhean, dearbhadh luchd-cleachdaidh tro sholaraichean bhon taobh a-muigh airson faighinn gu gach deas-bhòrd, agus mar sin air adhart. Chan eil feum sam bith ann a bhith a 'stĂ ladh a leithid de bhuidheann "pumpadh suas" ann am fuasgladh air a stiĂšireadh, oir tha seo gu tric do-dhèanta no a' leantainn gu feum air leth de na co-phĂ irtean a dhĂŹ-cheadachadh.
NB: Is e seo ar n-eòlas, agus tha e gu math sònraichte. Chan eil sinn idir aâ moladh gum bu chòir a h-uile duine cruinneachaidhean Kubernetes a chleachdadh leotha fhèin an Ă ite a bhith aâ cleachdadh fuasglaidhean deiseil. Co-dhiĂš, chan eil fĂŹor eòlas againn air obrachadh Kubernetes bho Yandex agus cha toir sinn seachad measadh sam bith air an t-seirbheis seo san artaigil seo.
Dè a thâ ann agus cò dha?
Mar sin, tha sinn mu thrà th air bruidhinn mun dòigh-obrach Úr-nodha airson stòradh ann an Kubernetes: и ris an dòigh-obrach seo.
An-drĂ sta, tha mòran de sholaraichean seirbheis sgòthan mòra air draibhearan a leasachadh airson na diosgan sgòthan aca a chleachdadh mar Persistent Volume ann an Kubernetes. Mura h-eil an leithid de dhrĂ ibhear aig an t-solaraiche, ach gu bheil na gnĂŹomhan riatanach uile air an toirt seachad tron ââââAPI, chan eil dad aâ cur casg ort an draibhear a chuir an gnĂŹomh thu fhèin. Is e seo a thachair le Yandex.Cloud.
Ghabh sinn mar bhunait airson leasachadh agus beachd no dhà bho , leis gu bheil grunn rudan coltach ri eadar-obrachadh le API nan sgòthan sin (Google agus Yandex). Gu sònraichte, tha an API agus , agus nÏ a thilleadh Operation gus sÚil a chumail air inbhe gnÏomhachd fad-Úine (mar eisimpleir, cruthachadh diosc Úr). Gus eadar-obrachadh leis an Yandex.Cloud API, cleachd .
Toradh na h-obrach a chaidh a dhèanamh agus dhâ fhaodadh gum bi e feumail dhaibhsan a bhios, airson adhbhar air choireigin, aâ cleachdadh an stĂ ladh Kubernetes aca fhèin air innealan mas-fhĂŹor Yandex.Cloud (ach chan e cruinneachadh deiseil air a stiĂšireadh) agus a bhiodh airson diosgan a chleachdadh (òrdugh) tro CSI.
РоаНиСаŃиŃ
PrĂŹomh fheartan
An-drĂ sta tha an drĂ ibhear a 'toirt taic do na gnĂŹomhan a leanas:
- òrdachadh diosgan anns a h-uile sòn den bhuidheann a rèir topology nan nòsan anns aâ bhuidheann;
- toirt air falbh diosgan a chaidh òrdachadh roimhe;
- Ath-mheudachadh far loidhne airson diosgan (Yandex.Cloud ag Ă rdachadh na diosgan a tha air an cur suas chun inneal mas-fhĂŹor). Airson fiosrachadh air mar a dh'fheumadh an drĂ ibhear atharrachadh gus am biodh e cho pianail 's a ghabhas, faicibh gu h-ĂŹosal.
Anns an Ă m ri teachd, tha sinn an dĂšil taic a chuir an gnĂŹomh airson cruthachadh agus cuir Ă s do dhealbhan diosc.
Am prĂŹomh dhuilgheadas agus mar a gheibh thu thairis air
Tha an dĂŹth comas air diosgan Ă rdachadh ann an Ă m fĂŹor anns an Yandex.Cloud API na chuingealachadh a tha a âdèanamh iom-fhillte air gnĂŹomhachd ath-mheudachadh PV (Seasmhach Volume): anns aâ chĂšis seo, feumar stad a chuir air pod an tagraidh a chleachdas an diosc, agus faodaidh seo iarrtasan Ăšine downt adhbhrachadh.
A rèir , ma tha an rianadair CSI ag aithris nach urrainn dha diosgan ath-mheudachadh ach âfar loidhneâ (VolumeExpansion.OFFLINE), an uairsin bu chòir don phròiseas Ă rdachadh an diosc a dhol mar seo:
Ma tha am plugan a-mhĂ in
VolumeExpansion.OFFLINEtha comas leudachaidh agus meud air fhoillseachadh an-drĂ sta no ri fhaighinn air nĂłd an uairsinControllerExpandVolumeFEUMAIDH a bhith air a ghairm A-MHĂIN Ă s deidh an dĂ rna cuid:
- Tha rianadair aig aâ plugan
PUBLISH_UNPUBLISH_VOLUMEcomas agusControllerUnpublishVolumeair a chuir a-steach gu soirbheachail.NO EILE
- CHAN EIL rianadair aig aâ plugan
PUBLISH_UNPUBLISH_VOLUMEcomas, tha nĂłd aig aâ pluganSTAGE_UNSTAGE_VOLUMEcomas, agusNodeUnstageVolumeair a chrĂŹochnachadh gu soirbheachail.NO EILE
- CHAN EIL rianadair aig aâ plugan
PUBLISH_UNPUBLISH_VOLUMEcomas, no nodSTAGE_UNSTAGE_VOLUMEcomas, agusNodeUnpublishVolumeair a chrĂŹochnachadh gu soirbheachail.
Tha seo gu bunaiteach aâ ciallachadh gum feum thu an diosc a sgaradh bhon inneal brĂŹgheil mus leudaich thu e.
Ach, gu mĂŹ-fhortanach buileachadh Chan eil an sònrachadh CSI tro sidecars aâ coinneachadh ris na riatanasan sin:
- Ann an soitheach taobh cĂ r
csi-attacher, a bu chòir a bhith cunntachail airson aâ bheĂ rn a tha a dhĂŹth eadar na sreapan, chan eil an gnĂŹomh seo dĂŹreach air a chuir an gnĂŹomh anns an ath-mheudachadh far-loidhne. Chaidh deasbad mu dheidhinn seo a thòiseachadh . - Dè dĂŹreach a thâ ann an soitheach cĂ r-taobh anns aâ cho-theacsa seo? Chan eil am plugan CSI fhèin ag eadar-obrachadh leis an Kubernetes API, ach chan eil e aâ freagairt ach fiosan gRPC a thèid a chuir thuige le soithichean taobh cĂ r. As Ăšire le coimhearsnachd Kubernetes.
Anns a âchĂšis againn (plugan CSI), tha coltas mar seo air obrachadh Ă rdachadh an diosc:
- Bidh sinn aâ faighinn gairm gRPC
ControllerExpandVolume; - Tha sinn aâ feuchainn ris an diosc san API Ă rdachadh, ach tha sinn aâ faighinn mearachd a thaobh cho neo-chomasach âs a tha e an obair a dhèanamh leis gu bheil an diosc air a chuir suas;
- Bidh sinn aâ stòradh an aithnichear diosc air aâ mhapa, anns a bheil na diosgan air am feumar an Ă rdachadh obrachadh. Gu h-ĂŹosal, airson giorrad, canaidh sinn am mapa seo mar
volumeResizeRequired; - Thoir air falbh am pod a chleachdas an diosc le là imh. Tòisichidh Kubernetes e. Gus nach bi Úine aig an diosc a chuir suas (
ControllerPublishVolume) mus cuir sinn crĂŹoch air an obair Ă rdachaidh nuair a dhâ fheuchas sinn ri cur suas, nĂŹ sinn cinnteach gu bheil an diosc a chaidh a thoirt seachad fhathast a-staighvolumeResizeRequiredagus thoir air ais mearachd; - Bidh an draibhear CSI aâ feuchainn ris an obair ath-mheudachadh a dhèanamh a-rithist. Ma bha an obair soirbheachail, thoir air falbh an diosc
volumeResizeRequired; - Air sgĂ th Tha ID diosc a dhĂŹth o
volumeResizeRequired,ControllerPublishVolumeaâ dol seachad gu soirbheachail, tha an diosc air a chuir suas, tòisichidh am pod.
Tha a h-uile dad a 'coimhead sÏmplidh gu leòr, ach mar a tha e an-còmhnaidh tha duilgheadasan ann. Meudaich diosgan , a tha ann an cÚis mearachd rè an obrachaidh le à rdachadh exponential ann an Úine-ama suas ri 1000 diogan:
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)},
)
}Faodaidh seo leantainn bho à m gu à m gun tèid an obair leudachaidh diosc a leudachadh airson 15+ mionaidean agus, mar sin, nach eil am pod co-fhreagarrach ri fhaighinn.
Bâ e an aon roghainn a leig leinn gu furasta agus gun phian leinn Ăšine downt a lughdachadh a bhith aâ cleachdadh an dreach againn de ath-resizer taobh a-muigh le crĂŹoch Ăšine as Ă irde. :
workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 5*time.Second)Cha robh sinn den bheachd gu robh feum air deasbad a thòiseachadh gu h-èiginneach agus an ath-leasaiche taobh a-muigh a chumail, oir tha ath-mheudachadh diosc far-loidhne na thilleadh a dhâ fhalbh a dhâ aithghearr bho gach solaraiche sgòthan.
Ciamar a thòisicheas tu ga chleachdadh?
Tha an draibhear aâ faighinn taic air dreach Kubernetes 1.15 agus nas Ă irde. Airson an drĂ ibhear a bhith ag obair, feumar na riatanasan a leanas a choileanadh:
- Didòmhnaich
--allow-privilegedair a shuidheachadh gu luachtrueairson frithealaiche API agus kubelet; - Air a ghabhail a-steach
--feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=trueairson frithealaiche API agus kubelet; - Iomadachadh sreap () a bhith air a chomasachadh air aâ bhraisle. Nuair a bhios tu aâ cleachdadh Docker, feumaidh an daemon a bhith air a rèiteachadh gus cothrom a thoirt do shreapadairean co-roinnte.
A h-uile ceum riatanach airson an stĂ ladh fhèin . Tha an stĂ ladh aâ toirt a-steach cruthachadh stuthan ann an Kubernetes bho manifestos.
Airson an drĂ ibhear a bhith ag obair feumaidh tu na leanas:
- Sònraich aithnichear an eòlaire san fhollaisiche (
folder-id) Yandex.Cloud (); - Gus eadar-obrachadh leis an Yandex.Cloud API, bidh an draibhear CSI aâ cleachdadh cunntas seirbheis. Anns an fhoillseachadh, feumaidh DĂŹomhaireachd a dhol seachad bhon chunntas seirbheis. Anns na sgrĂŹobhainnean , mar a chruthaicheas tu cunntas seirbheis agus faigh iuchraichean.
Gu h-iomlan - , agus bidh sinn toilichte fios air ais fhaighinn agus ma choinnicheas tu ri duilgheadas sam bith!
Taic a bharrachd
Mar thoradh air an sin, bu mhath leinn a thoirt fa-near gun do chuir sinn an draibhear CSI seo an gnĂŹomh chan ann a-mach Ă miann mòr airson tagraidhean sgrĂŹobhaidh spòrsail ann an Go, ach air sgĂ th feum èiginneach taobh a-staigh a âchompanaidh. Chan eil e coltach gu bheil e practaigeach dhuinn ar buileachadh fhèin a chumail suas, mar sin ma tha Yandex a ânochdadh Ăšidh agus aâ co-dhĂšnadh cumail a âtoirt taic don draibhear, bidh sinn toilichte an stòr a ghluasad thuca.
A bharrachd air an sin, is dòcha gu bheil a chuir an gnĂŹomh fhèin aig Yandex de dhrĂ ibhear CSI anns aâ bhuidheann Kubernetes stiĂširichte aige, a dhâ fhaodar fhoillseachadh ann an Open Source. Tha sinn cuideachd a 'faicinn an roghainn leasachaidh seo mar rud fĂ bharach - bidh e comasach don choimhearsnachd drĂ ibhear dearbhte a chleachdadh bho sholaraiche seirbheis, agus chan ann bho chompanaidh treas-phĂ rtaidh.
PS
Leugh cuideachd air ar blog:
- ÂŤ";
- ÂŤ";
- ÂŤ";
- ÂŤ".
Source: www.habr.com
