NĂ­l ĂĄr lĂĄmha le haghaidh boredom: athbhunĂș an bhraisle Rook i K8s

NĂ­l ĂĄr lĂĄmha le haghaidh boredom: athbhunĂș an bhraisle Rook i K8s

TĂĄimid dĂșradh cheana, conas/cĂ©n fĂĄth a dtaitnĂ­onn Rook linn: simplĂ­onn sĂ© go mĂłr oibriĂș le stĂłrĂĄil i gcnuasaigh Kubernetes. Mar sin fĂ©in, tagann deacrachtaĂ­ ĂĄirithe leis an simplĂ­ocht seo. TĂĄ sĂșil againn go gcabhrĂłidh an t-ĂĄbhar nua linn na castachtaĂ­ sin a thuiscint nĂ­os fearr sula dtagann siad chun solais.

Chun Ă© a dhĂ©anamh nĂ­os suimiĂșla Ă© a lĂ©amh, cuirimis tĂșs leis iarmhairtĂ­ fadhb hipitĂ©iseach i mbraisle.

"TĂĄ gach rud caillte!"

Samhlaigh go ndearna tĂș Rook a chumrĂș agus a sheoladh uair amhĂĄin i do bhraisle K8s, go raibh sĂ© sĂĄsta leat lena chuid oibre, ach ag am Ă©igin "iontach" tarlaĂ­onn an mĂ©id seo a leanas:

  • NĂ­ fĂ©idir le pods nua Ă­omhĂĄnna RBD a shuiteĂĄil Ăł Ceph.
  • Is maith le foirne lsblk Đž df nĂĄ rith ar nĂłid Kubernetes. CiallaĂ­onn sĂ© seo go huathoibrĂ­och: “tĂĄ rud Ă©igin mĂ­cheart” leis na hĂ­omhĂĄnna RBD atĂĄ suite ar na nĂłid. NĂ­ fĂ©idir liom iad a lĂ©amh, rud a thugann le fios nach bhfuil na monatĂłirĂ­ ar fĂĄil...
  • Sea, nĂ­l aon mhonatĂłirĂ­ oibre sa bhraisle. Thairis sin, nĂ­l fiĂș pods le pods OSD nĂł MGR.

Cathain a seoladh an pod? rook-ceph-operator? NĂ­ chomh fada Ăł shin a imscaradh Ă©. CĂ©n fĂĄth? Chinn Rook-operator braisle nua a dhĂ©anamh... Conas is fĂ©idir linn oibriĂș an bhraisle agus na sonraĂ­ atĂĄ ann a athbhunĂș anois?

Ar dtĂșs, dĂ©anaimis bealach nĂ­os faide, suimiĂșil trĂ­ imscrĂșdĂș tuisceanach a dhĂ©anamh ar “taobh istigh” Rook agus athchĂłiriĂș cĂ©im ar chĂ©im ar a chuid comhphĂĄirteanna. Ar ndĂłigh, tĂĄ bealach ceart nĂ­os giorra: ĂșsĂĄid a bhaint as cĂșltacaĂ­. Mar is eol duit, roinntear na riarthĂłirĂ­ i dhĂĄ chineĂĄl: iad siĂșd nach ndĂ©anann cĂșltacaĂ­, agus iad siĂșd a dhĂ©anann iad cheana fĂ©in ... Ach nĂ­os mĂł faoi seo tar Ă©is an imscrĂșdaithe.

Cleachtadh beag, nĂł bealach fada

BreathnaĂ­mis thart agus cuirimis na monatĂłirĂ­ ar ais

Mar sin, dĂ©anaimis fĂ©achaint ar an liosta de na ConfigMap: tĂĄ na cinn atĂĄ riachtanach le haghaidh ĂĄirithinte rook-ceph-config Đž rook-config-override. LĂ©irĂ­tear iad ar imscaradh rathĂșil an bhraisle.

NB: I leaganacha nua, tar éis glacadh leo an PR seo, Níl ConfigMaps ina thåscaire ar an rath a bhí ar imscaradh braisle a thuilleadh.

Chun gnĂ­omhartha breise a dhĂ©anamh, teastaĂ­onn atosĂș crua uainn de na freastalaithe go lĂ©ir a bhfuil Ă­omhĂĄnna RBD glĂ©asta acu (ls /dev/rbd*). NĂ­ mĂłr Ă© a dhĂ©anamh trĂ­ sysrq (nĂł “ar scĂłr” chuig an ionad sonraĂ­). Is Ă©ard is cĂșis leis an gceanglas seo nĂĄ an tasc a bhaineann le RBDanna glĂ©asta a dhĂ­shuiteĂĄil, nach n-oibreoidh atosĂș caighdeĂĄnach ina leith (dĂ©anfaidh sĂ© iarracht gan rath iad a dhĂ­shuiteĂĄil de ghnĂĄth).

TosaĂ­onn an amharclann le hanger, agus tosaĂ­onn an bhraisle Ceph le monatĂłirĂ­. BreathnaĂ­mid orthu.

FeistĂ­onn Rook na haonĂĄin seo a leanas sa phod monatĂłireachta:

Volumes:
 rook-ceph-config:
   Type:      ConfigMap (a volume populated by a ConfigMap)
   Name:      rook-ceph-config
 rook-ceph-mons-keyring:
   Type:        Secret (a volume populated by a Secret)
   SecretName:  rook-ceph-mons-keyring
 rook-ceph-log:
   Type:          HostPath (bare host directory volume)
   Path:          /var/lib/rook/kube-rook/log
 ceph-daemon-data:
   Type:          HostPath (bare host directory volume)
   Path:          /var/lib/rook/mon-a/data
Mounts:
  /etc/ceph from rook-ceph-config (ro)
  /etc/ceph/keyring-store/ from rook-ceph-mons-keyring (ro)
  /var/lib/ceph/mon/ceph-a from ceph-daemon-data (rw)
  /var/log/ceph from rook-ceph-log (rw)

A ligean ar a fheiceĂĄil cad atĂĄ rĂșnda rook-ceph-mons-keyring:

kind: Secret
data:
 keyring: LongBase64EncodedString=

DĂ©anaimid dĂ­chĂłdĂș agus faighimid fĂĄinne eochair rialta le cearta don riarthĂłir agus do mhonatĂłirĂ­:

[mon.]
       key = AQAhT19dlUz0LhBBINv5M5G4YyBswyU43RsLxA==
       caps mon = "allow *"
[client.admin]
       key = AQAhT19d9MMEMRGG+wxIwDqWO1aZiZGcGlSMKp==
       caps mds = "allow *"
       caps mon = "allow *"
       caps osd = "allow *"
       caps mgr = "allow *"

CuimhnĂ­mis. Anois fĂ©achaimis ar an bhfĂĄinne eochair faoi rĂșn rook-ceph-admin-keyring:

kind: Secret
data:
 keyring: anotherBase64EncodedString=

Cad atĂĄ ann?

[client.admin]
       key = AQAhT19d9MMEMRGG+wxIwDqWO1aZiZGcGlSMKp==
       caps mds = "allow *"
       caps mon = "allow *"
       caps osd = "allow *"
       caps mgr = "allow *"

Mar an gcĂ©anna. A ligean ar a fheiceĂĄil nĂ­os mĂł... Anseo, mar shampla, tĂĄ rĂșn rook-ceph-mgr-a-keyring:

[mgr.a]
       key = AQBZR19dbVeaIhBBXFYyxGyusGf8x1bNQunuew==
       caps mon = "allow *"
       caps mds = "allow *"
       caps osd = "allow *"

TĂĄ cĂșpla rĂșn eile le fĂĄil againn sa ConfigMap rook-ceph-mon:

kind: Secret
data:
 admin-secret: AQAhT19d9MMEMRGG+wxIwDqWO1aZiZGcGlSMKp==
 cluster-name: a3ViZS1yb29r
 fsid: ZmZiYjliZDMtODRkOS00ZDk1LTczNTItYWY4MzZhOGJkNDJhCg==
 mon-secret: AQAhT19dlUz0LhBBINv5M5G4YyBswyU43RsLxA==

Agus is Ă© seo an liosta tosaigh le eochairfhĂĄinnĂ­, as a dtagann na rĂșin go lĂ©ir a thuairiscĂ­tear thuas.

Mar is eol (fĂ©ach dataDirHostPath ĐČ doicimĂ©adĂș), StĂłrĂĄlann Rook sonraĂ­ den sĂłrt sin in dhĂĄ ĂĄit. DĂĄ bhrĂ­ sin, a ligean ar dul go dtĂ­ na nĂłid chun breathnĂș ar na heochracha atĂĄ suite sna heolairĂ­ atĂĄ suite i pods le monatĂłirĂ­ agus OSDs. Chun seo a dhĂ©anamh, feicimid ar na nĂłid /var/lib/rook/mon-a/data/keyring agus feicfimid:

# cat /var/lib/rook/mon-a/data/keyring
[mon.]
       key = AXAbS19d8NNUXOBB+XyYwXqXI1asIzGcGlzMGg==
       caps mon = "allow *"

Go tobann anseo iompaigh an rĂșn amach a bheith difriĂșil - nĂ­ cosĂșil le ConfigMap's.

Cad mar gheall ar an eochairfhåinne admin? Tå sé againn freisin:

# cat /var/lib/rook/kube-rook/client.admin.keyring
[client.admin]
       key = AXAbR19d8GGSMUBN+FyYwEqGI1aZizGcJlHMLgx= 
       caps mds = "allow *"
       caps mon = "allow *"
       caps osd = "allow *"
       caps mgr = "allow *"

Seo an ĂĄit a luĂ­onn an fhadhb. Tharla glitch de shaghas Ă©igin: rinneadh an bhraisle a athchruthĂș... ach i ndĂĄirĂ­re nĂ­ raibh.

ÉirĂ­onn sĂ© soilĂ©ir go bhfuil keyrings nua-ghinte a stĂłrĂĄil i rĂșin, agus tĂĄ siad aon ĂłnĂĄr sean-chnuasach. Sin Ă© an fĂĄth:

  • tĂłg an fĂĄinne eochair as an monatĂłir as an gcomhad /var/lib/rook/mon-a/data/keyring (nĂł Ăł chĂșltaca);
  • athraigh an fĂĄinne eochair faoi rĂșn rook-ceph-mons-keyring;
  • clĂĄraigh an fĂĄinne eochrach Ăłn riarthĂłir agus Ăłn monatĂłireacht i ConfigMap rook-ceph-mon;
  • bain rialaitheoirĂ­ pod le monatĂłirĂ­.

NĂ­ bheidh an miracle fada le teacht: beidh na monatĂłirĂ­ le feiceĂĄil agus ag tosĂș. DĂ©an deifir, tĂĄ tĂșs curtha!

A ligean ar ais ar an OSD

A ligean ar dul go pod rook-operator: dĂșshlĂĄn ceph mon dump lĂ©irĂ­onn go bhfuil gach monatĂłir i bhfeidhm, agus ceph -s - go bhfuil siad i gcĂłram. Mar sin fĂ©in, mĂĄ fhĂ©achann tĂș ar an gcrann OSD (ceph osd tree), feicfimid rud Ă©igin aisteach ann: thosaigh OSDs le feiceĂĄil, ach tĂĄ siad folamh. TharlaĂ­onn sĂ© go raibh gĂĄ iad a chur ar ais ar bhealach Ă©igin freisin. Ach cĂ©n chaoi?

Idir an dĂĄ linn, tĂĄ na cinn a bhfuil an oiread sin de dhĂ­th orainn sna ConfigMaps anois rook-ceph-config Đž rook-config-override, chomh maith le go leor ConfigMaps eile le hainmneacha cosĂșil le rook-ceph-osd-$nodename-config. BreathnaĂ­mid orthu:

kind: ConfigMap
data:
 osd-dirs: '{"/mnt/osd1":16,"/mnt/osd2":18}'

TĂĄ gach rud mĂ­cheart, tĂĄ gach rud measctha suas!

Déanaimis na pods oibreora a scåla go nialas, scrios na pods Imlonnaithe ginte ón OSD agus socróimid na ConfigMaps seo. Ach cå håit é a fhåil? ceart Léarscåil OSD de réir nód?

  • DĂ©anaimis iarracht tochailt isteach sna heolairĂ­ arĂ­s /mnt/osd[1-2] ag na snaidhmeanna - le sĂșil go mbeimid in ann teacht ar rud Ă©igin ansin.
  • Sa chatalĂłg /mnt/osd1 tĂĄ 2 fhochomhadlann ann: osd0 Đž osd16. Is Ă© an ceann deireanach go dĂ­reach an t-aitheantas atĂĄ lĂ©irithe i ConfigMap (16)?
  • DĂ©anaimis na mĂ©ideanna a sheiceĂĄil agus Ă© sin a fheiceĂĄil osd0 a lĂĄn nĂ­os mĂł osd16.

Tagann muid ar an tĂĄtal go bhfuil osd0 - is Ă© seo an OSD riachtanach, a lĂ©irĂ­odh mar /mnt/osd1 i ConfigMap (tar Ă©is an tsaoil, ĂșsĂĄidimid eolaire bunaithe osd.)

Céim ar chéim déanaimid seiceåil ar gach nóid agus cuirimid ConfigMaps in eagar. Tar éis na treoracha go léir, is féidir leat an t-oibreoir pod Rook a sheoladh agus a logs a léamh. Agus tå gach rud mar gheall orthu iontach:

  • Is oibreoir braisle mĂ©;
  • Fuair ​​​​mĂ© dioscaĂ­ ar na nĂłid;
  • Fuair ​​​​mĂ© na monatĂłirĂ­;
  • d’éirigh na monatĂłirĂ­ ina gcairde, i.e. dĂ©anta cĂłram;
  • Seolaim imscaradh OSD...

Rachaimid isteach sa phod oibreora Rook arĂ­s agus seiceĂĄil ar bheocht an bhraisle... sea, bhĂ­omar beagĂĄn mĂ­cheart leis na conclĂșidĂ­ faoi na hainmneacha OSD ar roinnt nĂłid! Fadhb ar bith: cheartaigh muid na ConfigMaps arĂ­s, bhaineamar na heolairĂ­ neamhriachtanacha de na OSDanna nua agus thĂĄngamar ar an staid a rabhthas ag sĂșil leis le fada HEALTH_OK!

Déanaimis na híomhånna sa linn a sheiceåil:

# rbd ls -p kube
pvc-9cfa2a98-b878-437e-8d57-acb26c7118fb
pvc-9fcc4308-0343-434c-a65f-9fd181ab103e
pvc-a6466fea-bded-4ac7-8935-7c347cff0d43
pvc-b284d098-f0fc-420c-8ef1-7d60e330af67
pvc-b6d02124-143d-4ce3-810f-3326cfa180ae
pvc-c0800871-0749-40ab-8545-b900b83eeee9
pvc-c274dbe9-1566-4a33-bada-aabeb4c76c32



Tå gach rud i bhfeidhm - déantar an braisle a shåbhåil!

TĂĄ mĂ© leisciĂșil agus dĂ©an cĂșltacaĂ­, nĂł bealach tapa

MĂĄ tĂĄ cĂșltacaĂ­ dĂ©anta do Rook, Ă©irĂ­onn an nĂłs imeachta aisghabhĂĄla i bhfad nĂ­os simplĂ­ agus gearrtar sĂ­os go dtĂ­ an mĂ©id seo a leanas:

  1. ScĂĄlaimid an t-oibreoir Rook imscaradh go nialas;
  2. Bainimid gach imscaradh ach amhĂĄin an t-oibreoir Rook;
  3. DĂ©anaimid gach rĂșn agus ConfigMaps a athshlĂĄnĂș Ăłn gcĂșltaca;
  4. AthchĂłiriĂș a dhĂ©anamh ar ĂĄbhar na n-eolaire /var/lib/rook/mon-* ar nĂłid ;
  5. DĂ©anaimid an CRD a aischur (mĂĄ chaill tĂș go tobann). CephCluster, CephFilesystem, CephBlockPool, CephNFS, CephObjectStore;
  6. DĂ©anaimis an t-oibreoir Rook imlonnaithe a laghdĂș go 1.

Leideanna Úsáideacha

DĂ©an cĂșltacaĂ­!

Agus chun cĂĄsanna a sheachaint nuair is gĂĄ duit a chur ar ais uathu:

  1. Roimh obair ar scĂĄla mĂłr leis an mbraisle, a bhaineann le freastalaithe a atosĂș, dĂ©an an t-oibreoir Rook a scĂĄla go nialas ionas nach ndĂ©anann sĂ© rudaĂ­ gan ghĂĄ.
  2. Chuig na monatóirí roimh ré cuir nódAffinity.
  3. Tabhair aird ar an rĂ©amh amanna ama a shocrĂș ROOK_MON_HEALTHCHECK_INTERVAL Đž ROOK_MON_OUT_TIMEOUT.

In ionad a thabhairt i gcrĂ­ch

NĂ­ fiĂș a mhaĂ­omh go ndĂ©anann Rook, toisc gur “ciseal” breise Ă© (sa scĂ©im fhoriomlĂĄn stĂłrĂĄla in Kubernetes) a shimpliĂș go mĂłr agus go gcuireann sĂ© castachtaĂ­ nua agus fadhbanna fĂ©ideartha sa bhonneagar. Is Ă© an t-aon rud atĂĄ fĂĄgtha le dĂ©anamh nĂĄ rogha chothrom, eolasach a dhĂ©anamh idir na rioscaĂ­ seo, ar thaobh amhĂĄin, agus na buntĂĄistĂ­ a bhaineann leis an gcinneadh i do chĂĄs ar leith, ar an taobh eile.

DĂĄla an scĂ©il, le dĂ©anaĂ­ sa doicimĂ©adĂș Rook cuireadh alt “Glac braisle Rook Ceph atĂĄ ann cheana fĂ©in i mbraisle nua Kubernetes”. DĂ©anann sĂ© cur sĂ­os nĂ­os mionsonraithe ar cad is gĂĄ a dhĂ©anamh chun na sonraĂ­ atĂĄ ann faoi lĂĄthair a aistriĂș chuig braisle nua Kubernetes nĂł chun oibriĂș braisle a thit amach ar chĂșis amhĂĄin nĂł ar chĂșis eile a athchĂłiriĂș.

PS

Léigh freisin ar år mblag:

Foinse: will.com

Ceannaigh ĂłstĂĄil iontaofa do shuĂ­mh le cosaint DDoS, freastalaithe VPS VDS đŸ”„ Ceannaigh ĂłstĂĄil grĂ©asĂĄin iontaofa le cosaint DDoS, freastalaithe VPS VDS | ProHoster