Isu tinofara kuzivisa kuti Flant iri kuwedzera mupiro wayo kune Open Source maturusi eKubernetes nekuburitsa
Asi tisati taenderera kune ruzivo rwekuita, ngatipindure mubvunzo kuti sei izvi zvichidikanwa zvachose kana Yandex yatova nebasa.
Nhanganyaya
Sei izvi?
Mukati mekambani yedu, kubva pakutanga kwekushandisa Kubernetes mukugadzira (kureva kwemakore akati wandei ikozvino), tanga tichigadzira yedu chishandiso (deckhouse), iyo, nenzira, isu tinorongawo kuti munguva pfupi iwanikwe seOpen Source chirongwa. . Nerubatsiro rwayo, isu tinogadzirisa zvakafanana uye nekugadzirisa masumbu edu ese, uye parizvino atova anopfuura zana awo, pane akasiyana siyana ekugadzirisa hardware uye mune ese anowanikwa makore masevhisi.
Masumbu anoshandisa deckhouse ane zvese zvinodikanwa pakushanda: mabharanzi, kutarisa nemachati ari nyore, metrics uye zviziviso, kuvimbiswa kwemushandisi kuburikidza nevanopa vekunze kuti vawane kune ese madhibhodhi, zvichingodaro. Iko hakuna chikonzero chekuisa yakadaro "pumped up" cluster mune inogadziriswa mhinduro, sezvo izvi kazhinji zvingave zvisingagoneki kana kuti zvinotungamirira kune kudiwa kwekudzima hafu yezvikamu.
NB: Ichi ndicho chiitiko chedu, uye chakanyatsojeka. Isu hatisi nzira yekukurudzira kuti munhu wese atumire Kubernetes masumbu ega pane kushandisa akagadzirira-akagadzirwa mhinduro. Nenzira, isu hatina ruzivo rwechokwadi mukushanda Kubernetes kubva kuYandex uye hatisi kuzopa chero kuongororwa kwebasa iri munyaya ino.
Chii uye nokuda kwaani?
Saka, takatotaura nezve nzira yemazuva ano yekuchengetedza muKubernetes:
Parizvino, vazhinji vakakura sevhisi sevhisi yegore vakagadzira vatyairi vekushandisa kwavo makore disks sePersistent Vhoriyamu muKubernetes. Kana mutengesi asina mutyairi akadaro, asi mabasa ese anodiwa anopiwa kuburikidza neAPI, saka hapana chinokutadzisa kuita mutyairi iwe pachako. Izvi ndizvo zvakaitika neYandex.Cloud.
Takatora sehwaro hwebudiriro Operation
kutarisa mamiriro ekushanda kwenguva refu (somuenzaniso, kugadzira disk itsva). Kudyidzana neYandex.Cloud API, shandisa
Mugumisiro webasa rakaitwa
Kutevedzera
Zvinhu zvakakosha
Parizvino mutyairi anotsigira zvinotevera mabasa:
- Kuraira madhisiki munzvimbo dzese dzesumbu zvinoenderana netopology yemanodhi musumbu;
- Kubvisa madhisiki akatemerwa kare;
- Offline resize yemadhisiki (Yandex.Cloud
musatsigira kuwedzera ma disks akaiswa kumuchina chaiwo). Kuti uwane ruzivo rwekuti mutyairi aifanira kugadziridzwa sei kuita kuti saizi isingarwadze sezvinobvira, ona pazasi.
Mune ramangwana, isu tinoronga kushandisa rutsigiro rwekugadzira uye kudzima disk snapshots.
Dambudziko guru uye kuti ungarikunda sei
Kushaikwa kwekukwanisa kuwedzera madhisiki munguva chaiyo muYandex.Cloud API iganhuriro iyo inoomesesa resize mashandiro ePV (Persistent Volume): mune iyi kesi, zvinodikanwa kuti iyo application pod inoshandisa dhisiki imire, uye izvi zvinogona kukonzera downtime applications.
Maererano ne VolumeExpansion.OFFLINE
), ipapo maitiro ekuwedzera diski anofanira kuenda seizvi:
Kana iyo plugin ine chete
VolumeExpansion.OFFLINE
Kuwedzera kugona uye vhoriyamu parizvino yakaburitswa kana kuwanikwa pane node ipapoControllerExpandVolume
INOFANIRA kudaidzwa CHETE mushure mezvose:
- Iyo plugin ine controller
PUBLISH_UNPUBLISH_VOLUME
kugona uyeControllerUnpublishVolume
yadaidzwa zvinobudirira.KANA KUTI
- Plugin haina controller
PUBLISH_UNPUBLISH_VOLUME
kugona, iyo plugin ine nodeSTAGE_UNSTAGE_VOLUME
kugona, uyeNodeUnstageVolume
yapedzwa zvinobudirira.KANA KUTI
- Plugin haina controller
PUBLISH_UNPUBLISH_VOLUME
kugona, kana nodeSTAGE_UNSTAGE_VOLUME
kugona, uyeNodeUnpublishVolume
apedza zvinobudirira.
Izvi zvinoreva kuti unofanirwa kubvisa dhisiki kubva kumushini chaiwo usati wawedzera.
Zvisinei, zvinosuruvarisa kuita Iyo CSI yakatarwa kuburikidza nemasidecars haizadzise izvi zvinodiwa:
- Mumudziyo wemotokari yepadivi
csi-attacher
, iyo inofanirwa kuve nemhosva yekuvepo kweiyo gap inodiwa pakati pema mounts, basa iri harina kungoitwa mukusarudzika resize. Nhaurirano pamusoro paikoku yakatangwapano . - Chii chaizvo chinonzi sidecar mudziyo mune ino mamiriro? Iyo CSI plugin pachayo haidyidzane neKubernetes API, asi inongopindura kune gRPC mafoni anotumirwa kwairi nemidziyo yepadivi. Latest
zviri kuvandudzwa neKubernetes community.
Kwatiri (CSI plugin), kushanda kwekuwedzera dhisiki kunoratidzika seizvi:
- Tinogashira runhare rwe gRPC
ControllerExpandVolume
; - Tiri kuedza kuwedzera dhisiki muAPI, asi tinogamuchira kukanganisa pamusoro pekusaita kwekuita basa nokuti dhisiki yakasimudzwa;
- Isu tinochengeta dhisiki identifier mumepu, iyo ine madhisiki ayo ekuwedzera oparesheni inoda kuitwa. Pazasi, kupfupika, tichadaidza mepu iyi se
volumeResizeRequired
; - Bvisa nemaoko podhi iri kushandisa dhisiki. Kubernetes achaitangazve. Saka kuti dhisiki haina nguva yekukwira (
ControllerPublishVolume
) tisati tapedza kushanda kwekuwedzera paunenge uchiedza kukwira, tinotarisa kuti disk yakapiwa ichiri mukativolumeResizeRequired
uye kudzorera kukanganisa; - Mutyairi weCSI anoedza kuitazve mashandiro eresize. Kana kushanda kwakabudirira, zvino bvisa disk kubva
volumeResizeRequired
; - Nokuti Disk ID haipo kubva
volumeResizeRequired
,ControllerPublishVolume
inopfuura zvinobudirira, dhisiki yakasimudzwa, iyo pod inotanga.
Zvese zvinotaridzika zvakapfava zvakakwana, asi senguva dzose pane misungo. Inowedzera disks
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)},
)
}
Izvi zvinogona kuita nguva nenguva kuti dhisiki yekuwedzera iwedzere kwe15+ maminetsi uye, nekudaro, iyo inoenderana pod isingawanikwe.
Sarudzo yega yaititendera zviri nyore uye zvisina kurwadza kudzikisa nguva yaigona kunge iri kushandiswa kweshanduro yedu yekunze-resizer ine yakanyanya nguva yekubuda muganho.
workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 5*time.Second)
Hatina kuona zvakakodzera kuti titange nhaurirano nekuchimbidza uye kupeta iyo yekunze-resizer, nekuti kusarudzika kwema disks kudzoreredza kudzosera kumashure kunozonyangarika kubva kune vese vanopa makore.
Ungatanga sei kushandisa?
Mutyairi anotsigirwa paKubernetes vhezheni 1.15 uye yepamusoro. Kuti mutyairi ashande, zvinotevera zvinodikanwa zvinofanirwa kuzadzikiswa:
- Flag
--allow-privileged
set to valuetrue
ye API server uye kubelet; - Included
--feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true
ye API server uye kubelet; - Mount propagation (
mount propagation ) inofanira kugoneswa pane cluster. Paunenge uchishandisa Docker, iyo daemon inofanirwa kugadzirwa kuti ibvumire akagovaniswa mamoiri.
Matanho ose anodiwa ekuiswa pachayo
Kuti mutyairi ashande iwe uchada zvinotevera:
- Taura dhairekitori identifier mu manifest (
folder-id
Yandex.Cloud (ona zvinyorwa ); - Kuti uwirirane neYandex.Cloud API, mutyairi weCSI anoshandisa account yebasa. Mumanifesiti, Chakavanzika chinofanira kupfuudzwa
makiyi ane mvumo kubva kuakaundi yebasa. Muzvinyorwaakatsanangura , maitiro ekugadzira account yebasa uye kuwana makiyi.
Zvese muzvese -
Kuwedzera rutsigiro
Nekuda kweizvozvo, tinoda kuziva kuti takashandisa mutyairi weCSI uyu kwete nekuda kwechido chikuru chekunakidzwa nekunyora zvikumbiro muGo, asi nekuda kwekudiwa kwekukurumidzira mukati mekambani. Zvinoita sezvisingashande kwatiri kuchengetedza isu pachedu kuita, saka kana Yandex ikaratidza kufarira uye ikasarudza kuramba ichitsigira mutyairi, isu tichafara kuendesa repository kwavari.
Uye zvakare, Yandex ingangove ine yayo yekumisikidza yeCSI mutyairi mune inochengetedzwa Kubernetes cluster, iyo inogona kuburitswa mu Open Source. Isu tinoonawo iyi sarudzo yekusimudzira seyakanaka - nharaunda ichakwanisa kushandisa mutyairi akavimbiswa kubva kune anopa sevhisi, uye kwete kubva kune yechitatu-bato kambani.
PS
Verenga zvakare pablog yedu:
- Β«
Vhoriyamu plugins yeKubernetes kuchengetedza: kubva kuFlexvolume kuenda kuCSI "; - Β«
Isu tinonzwisisa iyo Container Storage Interface (muKubernetes uye kwete chete) "; - Β«
Zviri nyore uye zviri nyore kugadzirira Kubernetes cluster? Kuzivisa addon-operator "; - Β«
Kuwedzera uye kuzadzisa Kubernetes (wongororo uye vhidhiyo mushumo) ".
Source: www.habr.com