Te whakauru i te Kubernetes CCM (Kaiwhakahaere Kapua) mo Yandex.Cloud

Te whakauru i te Kubernetes CCM (Kaiwhakahaere Kapua) mo Yandex.Cloud

In the continuing to the recent Tukunga taraiwa CSI mo Yandex.Cloud kei te whakaputahia e matou tetahi atu kaupapa Open Source mo tenei kapua - Kaiwhakahaere Kaiwhakahaere Kapua. Ko te CCM e hiahiatia ana mo te roopu katoa, engari mo te taraiwa CSI ano. Ko nga korero mo tona kaupapa me etahi waahanga whakatinanatanga kei raro i te tapahi.

Whakataki

He aha tenei?

Ko nga kaupapa i akiaki i a maatau ki te whakawhanake CCM mo Yandex.Cloud ka tino rite ki era kua korerohia i roto panui Nga taraiwa CSI. Ka pupuri matou i te maha o nga kahui Kubernetes mai i nga kaiwhakarato kapua rereke, e whakamahi ana matou i te taputapu kotahi. Ka whakatinanahia e ia te maha o nga mea ngawari "kaore" i nga otinga whakahaere a enei kaiwhakarato. Ae, he take motuhake ta matou me nga hiahia, engari ko nga whanaketanga i hangaia na enei mea ka whai hua ki etahi atu kaiwhakamahi.

He aha te CCM?

Ko te tikanga, ka whakareri tatou i te taiao huri noa i a tatou mo te tautau no waho - hei tauira, te whakamahi i te Terraform. Engari i etahi wa he hiahia ki te whakahaere i te taiao kapua huri noa i a tatou mai i te tautau. Ka whakaratohia tenei waahi, a ko te mea ka whakatinanahia CCM.

Inaa, ka whakaratohia e te Kaiwhakahaere Kaiwhakahaere Kapua nga momo taunekeneke matua e rima:

  1. Nga Ture – ka whakatinana i te hononga 1:1 i waenga i tetahi ahanoa node i Kubernetes (Node) me te miihini mariko i te kaiwhakarato kapua. Mo tenei ka:
    • whakakiia te mara spec.providerID i roto i te ahanoa Node. Hei tauira, mo OpenStack CCM kei tenei mara te whakatakotoranga e whai ake nei: openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. Ka taea e koe te kite i te ingoa o te kaiwhakarato kapua me te UUID ahurei o te tūmau (miihini mariko i OpenStack) o te ahanoa;
    • kīnaki nodeInfo i roto i te ahanoa Node nga korero mo te miihini mariko. Hei tauira, ka tohua e matou he momo tauira ki AWS;
    • Ka tirohia e matou te waahi o te miihini mariko i roto i te kapua. Hei tauira, mena he mea Node i haere ki te ahua NotReady, ka taea e koe te tirotiro mena kei te noho tonu te miihini mariko i roto i te kaiwhakarato kapua na providerID. Ki te kore i reira, mukua te ahanoa Node, ka noho tonu i roto i te tautau mo ake tonu atu;
  2. Rohe – ka tautuhi i te rohe rahunga mo te ahanoa Node, kia taea ai e te kaiwhakariterite te kowhiri i tetahi node mo te Pod e ai ki nga rohe me nga rohe kei roto i te kaiwhakarato kapua;
  3. LoadBalancer – ina hanga ahanoa Service me te momo LoadBalancer ka hanga i tetahi momo taurite ka arahi i nga waka mai i waho ki nga pokapu tautau. Hei tauira, i Yandex.Cloud ka taea e koe te whakamahi NetworkLoadBalancer и TargetGroup mo enei kaupapa;
  4. Ara – ka hanga he whatunga i waenga i nga pona, na te mea E ai ki nga whakaritenga a Kubernetes, me whai wahitau IP o ia pene ka taea te toro atu ki tetahi atu pod. Mo enei kaupapa, ka taea e koe te whakamahi i te whatunga whakakikorua (VXLAN, GENEVE) ka tautuhi tika ranei i te ripanga ararere ki te whatunga mariko o te kaiwhakarato kapua:

    Te whakauru i te Kubernetes CCM (Kaiwhakahaere Kapua) mo Yandex.Cloud

  5. rōrahi – Ka whakaaetia te ota hihiri o te PV ma te PVC me te SC. I te timatanga, ko tenei mahi he waahanga o CCM, engari na te nui o te uaua i nekehia ki tetahi kaupapa motuhake, Container Storage Interface (CSI). Kua korero matou mo CSI neke atu i te kotahi i tuhi a, kua korero ake nei, ara kua tukuna taraiwa CSI.

I mua, ko nga waehere katoa e pahekoheko ana me te kapua kei roto i te putunga Git matua o te kaupapa Kubernetes i k8s.io/kubernetes/pkg/cloudprovider/providers, engari i whakatau ratou ki te whakarere i tenei na te raruraru o te mahi me te turanga waehere nui. Kua nekehia nga whakatinanatanga tawhito katoa ki putunga motuhake. Mo te pai o te tautoko me te whakawhanaketanga, i nekehia nga waahanga noa katoa ki putunga motuhake.

Pērā i te CSI, he maha nga kaiwhakarato kapua nui kua hoahoa i a raatau CCM hei whakamahi i nga kapua i runga i nga Kubernetes. Mena kaore he CCM a te kaiwhakarato, engari ko nga mahi katoa e tika ana kei te waatea ma te API, ka taea e koe te whakamahi CCM koe.

Ki te tuhi i a koe ake whakatinanatanga o CCM, he nui ki te whakatinana e hiahiatia ana atanga Haere.

И koinei te mea i riro mai i a matou.

Реализация

I pehea koe i tae mai ki tenei

I timata matou ki te whakawhanaketanga (he pai ake ranei, ara te whakamahi) me kua rite(!) CCM mo Yandex.Cloud i te tau ki muri.

Heoi, i tenei whakatinanatanga i ngaro matou:

  • motuhēhēnga mā te tohu JWT IAM;
  • Tautoko kaiwhakahaere ratonga.

E whakaae ana ki te kaituhi (dlisin) i roto i te Telegram, i marua e matou te yandex-cloud-controller-manager me te taapiri i nga mahi ngaro.

Nga waahanga matua

I tenei wa, kei te tautoko a CCM i nga atanga e whai ake nei:

  • Nga Ture;
  • Rohe;
  • LoadBalancer.

I te wa kei te heke mai, ka timata a Yandex.Cloud ki te mahi me nga kaha VPC matatau, ka taapirihia he atanga Nga ara.

LoadBalanacer hei wero matua

I te timatanga, i whakamatau matou, pera i etahi atu whakatinanatanga CCM, ki te hanga takirua LoadBalancer и TargetGroup mo te katoa Service me te momo LoadBalancer. Heoi, i kitea e Yandex.Cloud tetahi herenga pai: kaore e taea e koe te whakamahi TargetGroups me te whakawhiti Targets (takirua SubnetID - IpAddress).

Te whakauru i te Kubernetes CCM (Kaiwhakahaere Kapua) mo Yandex.Cloud

Na reira, i roto i te CCM i hangaia, ka whakarewahia he kaiwhakahaere, ka huri nga taonga Node ka kohikohi i nga korero mo nga atanga katoa i runga i ia miihini mariko, ka whakarōpūhia i runga i to raatau ki etahi NetworkID, hanga e TargetGroup i runga i NetworkID, me te aro turuki i te whai take. I muri mai, i te wa e hanga ana i tetahi mea Service me te momo LoadBalanacer ka whakapiri noa tatou i te hanga-mua TargetGroup ki hou NetworkLoadBalanacer'am.

Me pehea te tiimata ki te whakamahi?

Ka tautoko a CCM i te putanga 1.15 me te teitei ake o Kubernetes. I roto i te tautau, mo te mahi, me hiahia te haki --cloud-provider=external i whakaritea ki true mo te kube-apiserver, kube-controller-manager, kube-scheduler me nga kubelets katoa.

Ko nga waahanga katoa e tika ana mo te whakaurunga ake e whakaahuatia ana i roto README. Ko te whakaurunga ka heke ki te hanga ahanoa ki Kubernetes mai i nga whakaaturanga.

Hei whakamahi CCM ka hiahia koe:

  • tohu i roto i te whakakitenga ko te tautohu whaiaronga (folder-id) Yandex.Cloud;
  • pūkete ratonga mo te taunekeneke me te Yandex.Cloud API. I roto i te whakaaturanga Secret he mea tika whakawhiti i nga taviri mana mai i te kaute ratonga. I roto i nga tuhinga whakaahuatia, me pehea te hanga i tetahi kaute ratonga me te whiwhi ki.

Ka koa matou ki te whiwhi i to urupare me nga take houmena ka pa ki a koe etahi raru!

Ngā putanga

Kua whakamahia e matou te CCM kua whakatinanahia i roto i nga roopu Kubernetes e rima i roto i nga wiki e rua kua pahure ake nei, me te whakamahere kia whakawhānuihia to raatau nama ki te 20 hei te marama e haere ake nei. I tenei wa kaore matou e kii ki te whakamahi CCM mo nga whakaurunga K8 nui, tino nui.

Ka rite ki te ahua o te CSI, ka koa matou ki te tango nga kaiwhakawhanake Yandex ki te whakawhanaketanga me te tautoko o tenei kaupapa - kua rite matou ki te whakawhiti i te rehitatanga i runga i ta raatau tono kia pai ai nga mahi e pa ana ki a maatau.

PS

Pānuihia hoki i runga i ta maatau blog:

Source: will.com

Tāpiri i te kōrero