Ár dtaithí maidir le tiománaí CSI a fhorbairt i Kubernetes do Yandex.Cloud

Ár dtaithí maidir le tiománaí CSI a fhorbairt i Kubernetes do Yandex.Cloud

Tá áthas orainn a fhógairt go bhfuil Flant ag leathnú a ranníocaíocht le huirlisí Foinse Oscailte do Kubernetes trí scaoileadh Leagan alfa de an CSI tiománaí (Comhéadan Stórála Coimeádán) le haghaidh Yandex.Cloud.

Ach sula dtéann tú ar aghaidh chuig na sonraí cur chun feidhme, freagair an cheist cén fáth go bhfuil gá leis seo ar chor ar bith nuair a bhíonn seirbhís ag Yandex cheana féin Seirbhís bainistithe do Kubernetes.

Réamhrá

Cén fáth é seo?

Laistigh dár gcuideachta, ó thús úsáid Kubernetes i dtáirgeadh (i.e. le roinnt blianta anuas), tá ár n-uirlis féin (deckhouse) á fhorbairt againn, a bhfuil sé beartaithe againn, dála an scéil, a chur ar fáil go luath mar thionscadal Foinse Oscailte. . Le cabhair uaidh, déanaimid ár mbraislí go léir a chumrú agus a chumrú go haonfhoirmeach, agus faoi láthair tá níos mó ná 100 acu cheana féin, ar raon leathan de chumraíochtaí crua-earraí agus i ngach seirbhís néal atá ar fáil.

Tá na comhpháirteanna go léir is gá chun oibriú ag cnuasaigh a úsáideann deckhouse: cothromóirí, monatóireacht le cairteacha áisiúla, méadracht agus foláirimh, fíordheimhniú úsáideora trí sholáthraithe seachtracha le haghaidh rochtana ar gach deais, agus mar sin de. Ní fiú a leithéid de bhraisle “pumpáilte” a shuiteáil i dtuaslagán bainistithe, mar is minic go mbíonn sé seo dodhéanta nó go mbeidh gá le leath de na comhpháirteanna a dhíchumasú.

NB: Is é seo ár dtaithí, agus tá sé sonrach go leor. Nílimid ag moladh ar dhóigh ar bith gur cheart do gach duine braislí Kubernetes a imscaradh ina n-aonar seachas réitigh réamhdhéanta a úsáid. Dála an scéil, níl aon taithí fíor againn maidir le Kubernetes a oibriú ó Yandex agus ní thabharfaimid aon mheasúnú ar an tseirbhís seo san Airteagal seo.

Cad é agus cé dó?

Mar sin, labhair muid cheana féin faoin gcur chuige nua-aimseartha maidir le stóráil i Kubernetes: conas a oibríonn CSI? и conas a tháinig an pobal leis an gcur chuige seo.

Faoi láthair, tá tiománaithe forbartha ag go leor soláthraithe seirbhíse scamall mór as a gcuid dioscaí scamall a úsáid mar Imleabhar Seasmhach i Kubernetes. Mura bhfuil tiománaí den sórt sin ag an soláthraí, ach go soláthraítear na feidhmeanna riachtanacha go léir tríd an API, ní chuireann aon rud cosc ​​​​ort an tiománaí a chur i bhfeidhm duit féin. Seo mar a tharla le Yandex.Cloud.

Ghlacamar mar bhonn le haghaidh forbartha Tiománaí CSI le haghaidh DigitalOcean Cloud agus cúpla smaointe ó Tiománaithe do GCP, ós rud é go bhfuil roinnt cosúlachtaí idir idirghníomhaíocht le API na scamaill seo (Google agus Yandex). Go háirithe, an API agus GCP, agus ag Yandex réad a thabhairt ar ais Operation chun stádas na n-oibríochtaí fadtréimhseacha a rianú (mar shampla diosca nua a chruthú). Chun idirghníomhú le API Yandex.Cloud, bain úsáid as Yandex.Cloud Téigh SDK.

Toradh na hoibre a rinneadh foilsithe ar GitHub agus d'fhéadfadh sé a bheith úsáideach dóibh siúd, ar chúis éigin, a úsáideann a gcuid suiteáil Kubernetes féin ar mheaisíní fíorúla Yandex.Cloud (ach ní braisle bainistithe réidh) agus ar mhaith leo dioscaí a úsáid (ordú) trí CSI.

Cur i bhFeidhm

Príomhghnéithe

Faoi láthair tacaíonn an tiománaí leis na feidhmeanna seo a leanas:

  • dioscaí a ordú i ngach crios den bhraisle de réir topology na nóid sa bhraisle;
  • dioscaí a ordaíodh roimhe seo a bhaint;
  • Athraigh méid as líne le haghaidh dioscaí (Yandex.Cloud ná tabhair tacaíocht ag méadú na dioscaí atá suite ar an meaisín fíorúil). Le faisnéis a fháil faoin gcaoi ar ghá an tiománaí a mhodhnú chun an méid a athrú a dhéanamh chomh gan phian agus ab fhéidir, féach thíos.

Sa todhchaí, tá sé beartaithe againn tacaíocht a chur i bhfeidhm chun grianghraif diosca a chruthú agus a scriosadh.

An deacracht is mó agus conas é a shárú

Is teorainn é an easpa cumais dioscaí a mhéadú i bhfíor-am san API Yandex.Cloud a chuireann casta ar an oibríocht méid a athrú le haghaidh PV (Imleabhar Seasmhach): sa chás seo, is gá stop a chur leis an pod feidhmchláir a úsáideann an diosca, agus is féidir é seo a chur faoi deara iarratais downtime.

De réir Sonraíochtaí CSI, má thuairiscíonn an rialaitheoir CSI nach féidir leis dioscaí a athrú ach "as líne" (VolumeExpansion.OFFLINE), ansin ba chóir go rachadh an próiseas chun an diosca a mhéadú mar seo:

Má tá an breiseán amháin VolumeExpansion.OFFLINE tá cumas leathnaithe agus toirt foilsithe faoi láthair nó ar fáil ar nód ansin ControllerExpandVolume NÍ MÓR a ghlaoch AMHÁIN tar éis ceachtar:

  • Tá rialtóir ag an mbreiseán PUBLISH_UNPUBLISH_VOLUME cumas agus ControllerUnpublishVolume agairt go rathúil.

NÓ Eile

  • NÍ bhfuil rialtóir ag an mbreiseán PUBLISH_UNPUBLISH_VOLUME cumas, tá nód ag an mbreiseán STAGE_UNSTAGE_VOLUME cumas, agus NodeUnstageVolume curtha i gcrích go rathúil.

NÓ Eile

  • NÍ bhfuil rialtóir ag an mbreiseán PUBLISH_UNPUBLISH_VOLUME cumas, ná nód STAGE_UNSTAGE_VOLUME cumas, agus NodeUnpublishVolume críochnaithe go rathúil.

Ciallaíonn sé seo go bunúsach go gcaithfidh tú an diosca a dhícheangal ón meaisín fíorúil sula leathnaítear é.

Mar sin féin, ar an drochuair chur i bhfeidhm Ní chomhlíonann an tsonraíocht CSI trí charranna taobh na ceanglais seo:

  • I gcoimeádán taobhcharr csi-attacher, ba chóir a bheith freagrach as láithreacht na bearna riachtanach idir ghairis, ní dhéantar an fheidhmiúlacht seo a chur i bhfeidhm go simplí san athrú méid as líne. Cuireadh tús le plé faoi seo anseo.
  • Cad é go díreach coimeádán taobhcharr sa chomhthéacs seo? Ní idirghníomhaíonn an breiseán CSI féin leis an Kubernetes API, ach ní fhreagraíonn sé ach glaonna gRPC a sheoltar chuige ag coimeádáin taobhcharr. is déanaí á bhforbairt ag pobal Kubernetes.

Inár gcás (breiseán CSI), tá an chuma ar an oibríocht chun an diosca a mhéadú mar seo:

  1. Faighimid glao GPC ControllerExpandVolume;
  2. Táimid ag iarraidh an diosca a mhéadú san API, ach faighimid earráid maidir leis an dodhéanta an oibríocht a dhéanamh toisc go bhfuil an diosca suite;
  3. Stórálaimid an t-aitheantóir diosca sa léarscáil, ina bhfuil na dioscaí ar gá an oibríocht mhéadaithe a dhéanamh ina leith. Anseo thíos, ar mhaithe le gonta, tabharfaimid an léarscáil seo mar volumeResizeRequired;
  4. Bain de láimh an pod atá ag baint úsáide as an diosca. Atosóidh Kubernetes é. Ionas nach mbeidh am ag an diosca gléasadh (ControllerPublishVolume) sula gcríochnófar an oibríocht mhéadaithe nuair a dhéantar iarracht a shuiteáil, déanaimid seiceáil go bhfuil an diosca tugtha fós isteach volumeResizeRequired agus earráid a thabhairt ar ais;
  5. Déanann an tiománaí CSI iarracht an oibríocht athmhéid a dhéanamh. Má d'éirigh leis an oibríocht, bain an diosca as volumeResizeRequired;
  6. Mar Tá aitheantas diosca in easnamh ó volumeResizeRequired, ControllerPublishVolume pas go rathúil, tá an diosca suite, tosaíonn an pod.

Breathnaíonn gach rud simplí go leor, ach mar i gcónaí tá gaistí ann. Méadaíonn sé dioscaí seachtrach-resizer, atá i gcás earráide le linn na hoibríochta úsáideann scuaine le méadú easpónantúil ar an am istigh suas le 1000 soicind:

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)},
  )
}

D'fhéadfadh sé seo a bheith mar thoradh go tréimhsiúil ar an oibríocht leathnaithe diosca a shíneadh ar feadh 15+ nóiméad agus, mar sin, nach bhfuil an pod comhfhreagrach ar fáil.

Ba é an t-aon rogha a chuir ar ár gcumas aga neamhfhéideartha a laghdú go héasca agus gan phian ná ár leagan den resizer seachtrach a úsáid le teorainn ama uasta i 5 soicind:

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

Níor mheasamar go raibh sé riachtanach tús a chur go práinneach le plé agus an t-athchóiriú seachtrach a phaisteáil, toisc gur aischur é méid dioscaí as líne a imeoidh go luath ó na soláthraithe scamall go léir.

Conas tosú ag úsáid?

Tacaítear leis an tiománaí ar leagan Kubernetes 1.15 agus níos airde. Chun an tiománaí a bheith ag obair, ní mór na ceanglais seo a leanas a chomhlíonadh:

  • Bratach --allow-privileged socraithe chun luach true le haghaidh freastalaí API agus kubelet;
  • San áireamh --feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true le haghaidh freastalaí API agus kubelet;
  • Suiteáil iomadú (iomadú mount) a chumasú ar an gcnuasach. Agus Docker á úsáid, ní mór an deamhan a chumrú chun gléasanna roinnte a cheadú.

Gach na céimeanna is gá chun a shuiteáil féin cur síos air in README. Is éard atá i gceist leis an suiteáil ná rudaí a chruthú i Kubernetes ó manifests.

Le go n-oibreoidh an tiománaí beidh na rudaí seo a leanas uait:

  • Sonraigh an t-aitheantóir eolaire sa léiriú (folder-id) Yandex.Cloud (féach doiciméadú);
  • Chun idirghníomhú leis an Yandex.Cloud API, úsáideann an tiománaí CSI cuntas seirbhíse. Sa léiriú, ní mór Rúnda a rith eochracha údaraithe ón gcuntas seirbhíse. Sa doiciméadú cur síos, conas cuntas seirbhíse a chruthú agus eochracha a fháil.

Ar an iomlán - bain triail as, agus beidh áthas orainn aiseolas a fháil agus saincheisteanna nua, má bhíonn aon fhadhb agat!

Tuilleadh tacaíochta

Mar thoradh air sin, ba mhaith linn a thabhairt faoi deara gur chuireamar an tiománaí CSI seo i bhfeidhm ní mar gheall ar mhian mór iarratais scríbhneoireachta spraoi a bheith againn i Go, ach mar gheall ar riachtanas práinneach laistigh den chuideachta. Ní cosúil go bhfuil sé praiticiúil dúinn ár gcur i bhfeidhm féin a choinneáil, mar sin má léiríonn Yandex spéis agus go gcinnfidh sé leanúint ar aghaidh ag tacú leis an tiománaí, beidh áthas orainn an stór a aistriú chucu.

Ina theannta sin, is dócha go bhfuil a fhorfheidhmiú féin ag Yandex ar an tiománaí CSI ina bhraisle Kubernetes bainistithe, ar féidir a scaoileadh i bhFoinse Oscailte. Feicimid freisin go bhfuil an rogha forbartha seo fabhrach - beidh an pobal in ann tiománaí cruthaithe a úsáid ó sholáthraí seirbhíse, agus ní ó chuideachta tríú páirtí.

PS

Léigh freisin ar ár mblag:

Foinse: will.com

Add a comment