Kubernetes CCM (Bainisteoir Rialaithe Cloud) a thabhairt isteach do Yandex.Cloud

Kubernetes CCM (Bainisteoir Rialaithe Cloud) a thabhairt isteach do Yandex.Cloud

Ar aghaidh leis an gceann deireanach CSI scaoileadh tiománaí le haghaidh Yandex.Cloud tá tionscadal Foinse Oscailte eile á fhoilsiú againn don scamall seo - Bainisteoir rialtóir scamall. Tá CCM ag teastáil ní hamháin don bhraisle ina iomláine, ach freisin don tiománaí CSI féin. Tá sonraí faoina chuspóir agus roinnt gnéithe cur chun feidhme á ghearradh.

Réamhrá

Cén fáth é seo?

Tá na cúiseanna a spreag sinn chun CCM a fhorbairt do Yandex.Cloud ag teacht go hiomlán leis na cinn a bhfuil cur síos déanta orthu cheana féin fógraí Tiománaithe do CSI. Coinnímid go leor braislí Kubernetes ó sholáthraithe scamall éagsúla, agus úsáidimid uirlis amháin ina leith. Cuireann sé áiseanna iomadúla i bhfeidhm “ag seachaint” réitigh bhainistithe na soláthraithe seo. Sea, tá cás agus riachtanais sách sonrach againn, ach d'fhéadfadh na forbairtí a cruthaíodh mar gheall orthu a bheith úsáideach d'úsáideoirí eile.

Cad é go díreach CCM?

Go hiondúil, ullmhaímid an timpeallacht thart orainn don bhraisle ón taobh amuigh - mar shampla, ag baint úsáide as Terraform. Ach uaireanta is gá an timpeallacht scamall timpeall orainn a bhainistiú ó bhraisle. Cuirtear an fhéidearthacht seo ar fáil, agus is í a chuirtear i bhfeidhm TLC.

Go sonrach, soláthraíonn Cloud Controller Manager cúig phríomhchineál idirghníomhaíochta:

  1. Imeachtaí – cuireann sé caidreamh 1:1 i bhfeidhm idir réad nód in Kubernetes (Node) agus meaisín fíorúil sa scamall soláthraí. Chun seo táimid:
    • líon isteach an réimse spec.providerID sa réad Node. Mar shampla, le haghaidh OpenStack CCM tá an fhormáid seo a leanas ag an réimse seo: openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. Is féidir leat ainm an tsoláthraí néil agus UUID uathúil an fhreastalaí (meaisín fíorúil in OpenStack) an oibiachta a fheiceáil;
    • comhlánú nodeInfo sa réad Node Eolas faoin meaisín fíorúil. Mar shampla, sonraímid cineál mar shampla in AWS;
    • Déanaimid seiceáil ar láithreacht meaisín fíorúil sa scamall. Mar shampla, más rud é Node chuaigh isteach i stát NotReady, is féidir leat a sheiceáil cibé an bhfuil an meaisín fíorúil ann ar chor ar bith sa soláthraí scamall trí providerID. Mura bhfuil sé ann, scrios an réad Node, a d’fhanfadh sa bhraisle go deo murach sin;
  2. Criosanna – socraíonn sé an fearann ​​teip don réad Node, ionas gur féidir leis an sceidealóir nód a roghnú don Pod de réir na réigiún agus na gcriosanna sa soláthraí scamall;
  3. Luchtaigh Cothromóir – agus réad á chruthú Service le cineál LoadBalancer cruthaíonn sé cineál cothromóir a dhíreoidh trácht ón taobh amuigh go dtí na nóid bhraisle. Mar shampla, i Yandex.Cloud is féidir leat é a úsáid NetworkLoadBalancer и TargetGroup chun na gcríoch sin;
  4. Bealach – go dtógann sé líonra idir nóid, toisc De réir riachtanais Kubernetes, caithfidh gach pod a sheoladh IP féin agus a bheith in ann teacht ar aon pod eile. Chun na gcríoch sin, is féidir leat líonra forleagan a úsáid (VXLAN, GENEVE) nó tábla ródaithe a shocrú go díreach i líonra fíorúil an tsoláthraí néil:

    Kubernetes CCM (Bainisteoir Rialaithe Cloud) a thabhairt isteach do Yandex.Cloud

  5. Imleabhar – Ceadaíonn sé ordú dinimiciúil PV ag baint úsáide as PVC agus SC. Ar dtús, bhí an fheidhmiúlacht seo mar chuid de CCM, ach mar gheall ar a chastacht mhór aistríodh é chuig tionscadal ar leith, Comhéadan Stórála Coimeádán (CSI). Táimid tar éis labhairt faoi CSI níos mó ná uair amháin scríobh agus, mar a luadh cheana, fiú scaoileadh Tiománaí do CSI.

Roimhe seo, bhí an cód ar fad a bhí ag idirghníomhú leis an scamall lonnaithe i bpríomh-stór Git an tionscadail Kubernetes ag k8s.io/kubernetes/pkg/cloudprovider/providers, ach shocraigh siad é seo a thréigean mar gheall ar an míchaoithiúlacht a bhaineann le bheith ag obair le bonn cód mór. Aistríodh gach sean-fheidhmiú go stór ar leith. Ar mhaithe le tuilleadh tacaíochta agus forbartha a éascú, aistríodh go dtí na comhchodanna uile freisin stór ar leith.

Mar is amhlaidh le CSI, tá go leor soláthraithe scamall mór deartha cheana féin a gcuid CCManna chun scamaill a ghiaráil ar Kubernetes. Mura bhfuil CCM ag an soláthraí, ach go bhfuil na feidhmeanna riachtanacha go léir ar fáil trí API, is féidir leat CCM a chur i bhfeidhm duit féin.

Chun do chur i bhfeidhm CCM féin a scríobh, is leor é a chur i bhfeidhm comhéadain Téigh riachtanach.

И is é seo a fuair muid.

Cur i bhFeidhm

Conas a tháinig tú go dtí seo

Thosaigh muid ag forbairt (nó in áit, fiú úsáid) le réidh(!) CCM do Yandex.Cloud bliain ó shin.

Mar sin féin, sa chur i bhfeidhm seo bhí muid in easnamh:

  • fíordheimhniú trí chomhartha JWT IAM;
  • Tacaíocht rialtóir seirbhíse.

I gcomhaontú leis an údar (dlisin) i Telegram, forked muid yandex-cloud-controller-manager agus chuireamar na feidhmeanna a bhí ar iarraidh.

Príomhghnéithe

Faoi láthair, tacaíonn CCM leis na comhéadain seo a leanas:

  • Imeachtaí;
  • Criosanna;
  • Luchtaigh Cothromóir.

Sa todhchaí, nuair a thosaíonn Yandex.Cloud ag obair le cumais VPC chun cinn, cuirfimid comhéadan leis Bealaí.

LoadBalanacer mar phríomhdhúshlán

Ar dtús, rinneamar iarracht, cosúil le feidhmiúcháin CCM eile, péire de a chruthú LoadBalancer и TargetGroup do gach ceann Service le cineál LoadBalancer. Mar sin féin, d'aimsigh Yandex.Cloud teorannú suimiúil amháin: ní féidir leat é a úsáid TargetGroups le trasnú Targets (péire SubnetID - IpAddress).

Kubernetes CCM (Bainisteoir Rialaithe Cloud) a thabhairt isteach do Yandex.Cloud

Dá bhrí sin, taobh istigh den CCM cruthaithe, seoltar rialtóir, a, nuair a athraíonn rudaí Node bailíonn sé faisnéis faoi na comhéadain go léir ar gach meaisín fíorúil, déanann siad iad a ghrúpáil de réir a muintearas le daoine áirithe NetworkID, cruthaíonn trí TargetGroup ar NetworkID, agus déanann sé monatóireacht freisin ar ábharthacht. Ina dhiaidh sin, nuair a chruthú réad Service le cineál LoadBalanacer táimid ag gabháil go simplí réamh-cruthaíodh TargetGroup go nua NetworkLoadBalanacer'táim.

Conas tosú ag úsáid?

Tacaíonn CCM le leagan Kubernetes 1.15 agus níos airde. I braisle, chun é a bheith ag obair, éilíonn sé go bhfuil an bhratach --cloud-provider=external socraíodh go true le haghaidh kube-apiserver, kube-controller-manager, kube-scheduler agus gach kubelets.

Déantar cur síos ar na céimeanna riachtanacha go léir don suiteáil féin i README. Baineann an tsuiteáil le cruthú réada i Kubernetes ó na manifestos.

Chun CCM a úsáid beidh na nithe seo a leanas uait freisin

  • pointe amach sa léiriú an t-aitheantóir eolaire (folder-id) Yandex.Cloud;
  • cuntas seirbhíse le haghaidh idirghníomhú leis an API Yandex.Cloud. Sa fhorógra Secret is gá eochracha údaraithe a aistriú ón gcuntas seirbhíse. Sa doiciméadú cur síos, conas cuntas seirbhíse a chruthú agus eochracha a fháil.

Beidh áthas orainn do chuid aiseolais a fháil agus saincheisteanna nua, má bhíonn aon fhadhb agat!

Torthaí

Táimid ag baint úsáide as an CCM atá curtha i bhfeidhm i gcúig bhraisle Kubernetes le dhá sheachtain anuas agus tá sé beartaithe againn a líon a mhéadú go 20 sa mhí amach romhainn. Ní mholaimid faoi láthair CCM a úsáid le haghaidh suiteálacha móra agus ríthábhachtacha K8s.

Mar a tharla i gcás CSI, beidh áthas orainn má ghlacann forbróirí Yandex le forbairt agus le tacaíocht an tionscadail seo - táimid réidh chun an stór a aistriú ar a n-iarratas chun déileáil le tascanna atá níos ábhartha dúinn.

PS

Léigh freisin ar ár mblag:

Foinse: will.com

Add a comment