Ke hoʻolauna nei iā Kubernetes CCM (Cloud Controller Manager) no Yandex.Cloud

Ke hoʻolauna nei iā Kubernetes CCM (Cloud Controller Manager) no Yandex.Cloud

Ma ka hoʻomau i ka mea i hala Hoʻokuʻu ʻia ka mea hoʻokele CSI no Yandex.Cloud ke hoʻopuka nei mākou i kekahi papahana Open Source no kēia ao - Luna Hooponopono Ao. ʻAʻole koi ʻia ʻo CCM no ka hui holoʻokoʻa, akā no ka mea hoʻokele CSI ponoʻī. ʻO nā kikoʻī e pili ana i kāna kumu a me kekahi mau hiʻohiʻona hoʻokō ma lalo o ka ʻoki.

Hōʻike

No ke aha kēia?

ʻO nā kumu i hoʻoikaika iā mākou e hoʻomohala i ka CCM no Yandex.Cloud i hui pū me nā mea i wehewehe ʻia ma hoolaha Nā mea hoʻokele CSI. Mālama mākou i nā pūʻulu Kubernetes he nui mai nā mea hoʻolako kapua ʻokoʻa, kahi a mākou e hoʻohana ai i hoʻokahi mea hana. Hoʻohana ʻo ia i nā ʻoluʻolu he nui "bypassing" i nā hoʻonā hoʻokele o kēia mau mea hoʻolako. ʻAe, loaʻa iā mākou kahi hihia kikoʻī a me nā pono, akā hiki ke hoʻohana ʻia nā mea hoʻomohala ma muli o ia mau mea hoʻohana i nā mea hoʻohana ʻē aʻe.

He aha ka CCM?

ʻO ka maʻamau, hoʻomākaukau mākou i ke kaiapuni a puni mākou no ka hui mai waho mai - no ka laʻana, me ka hoʻohana ʻana iā Terraform. Akā i kekahi manawa pono e hoʻokele i ke ao ao a puni mākou mai puʻupuʻu. Hāʻawi ʻia kēia hiki, a ʻo ia ka mea i hoʻokō ʻia CCM.

Ma keʻano kikoʻī, hāʻawi ʻo Cloud Controller Manager i ʻelima mau ʻano nui o ka pilina:

  1. Nā Kūlana - hoʻokō i kahi pilina 1:1 ma waena o kahi mea node ma Kubernetes (Node) a me kahi mīkini makamae i ka mea hāʻawi kapua. No kēia mea mākou:
    • hoopiha i ke kahua spec.providerID i ka mea Node. No ka laʻana, no OpenStack CCM kēia kahua i kēia ʻano: openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. Hiki iā ʻoe ke ʻike i ka inoa o ka mea hoʻolako kapua a me ka UUID kūʻokoʻa o ke kikowaena (mekini virtual ma OpenStack) o ka mea;
    • hoʻokō nodeInfo i ka mea Node ʻike e pili ana i ka mīkini virtual. No ka laʻana, kuhikuhi mākou i ke ʻano hiʻohiʻona ma AWS;
    • Nānā mākou i ka loaʻa ʻana o kahi mīkini virtual i ke ao. No ka laʻana, inā he mea Node hele i kahi mokuʻāina NotReady, hiki iā ʻoe ke nānā inā loaʻa ka mīkini virtual i loko o ka mea hāʻawi kapua ma providerID. Inā ʻaʻole i laila, holoi i ka mea Node, ka mea e noho mau loa i loko o ka hui;
  2. cii - hoʻonohonoho i ke kahua hāʻule no ka mea Node, i hiki i ka mea hoʻonohonoho ke koho i kahi node no ka Pod e like me nā ʻāpana a me nā ʻāpana i ka mea hāʻawi kapua;
  3. LoadBalancer - i ka hana ʻana i kahi mea Service me ke ano LoadBalancer hoʻokumu i kahi ʻano mea kaulike e kuhikuhi i ke kaʻa mai waho a i nā nodes cluster. No ka laʻana, ma Yandex.Cloud hiki iā ʻoe ke hoʻohana NetworkLoadBalancer и TargetGroup no keia mau hana;
  4. ala hele - kūkulu i kahi pūnaewele ma waena o nā nodes, no ka mea Wahi a nā koi Kubernetes, pono e loaʻa i kēlā me kēia pod kona IP ponoʻī ponoʻī a hiki ke kiʻi i nā pod ʻē aʻe. No kēia mau kumu, hiki iā ʻoe ke hoʻohana i kahi pūnaewele overlay (VXLAN, GENEVE) a i ʻole e hoʻonohonoho pololei i kahi papa kuhikuhi ma ka pūnaewele virtual o ka mea hāʻawi kapua:

    Ke hoʻolauna nei iā Kubernetes CCM (Cloud Controller Manager) no Yandex.Cloud

  5. Volume - E ʻae i ke kauoha ikaika o PV me ka PVC a me SC. I ka hoʻomaka ʻana, he ʻāpana kēia o ka CCM, akā ma muli o kona paʻakikī nui ua hoʻoneʻe ʻia i kahi papahana ʻokoʻa, Container Storage Interface (CSI). Ua kamaʻilio mākou e pili ana iā CSI ma mua o hoʻokahi manawa palapalaʻo ia a e like me ka mea i ʻōlelo ʻia ma mua hoʻokuʻu ʻia Keaukaha CSI.

Ma mua, aia nā code āpau e pili ana me ke ao ma ka waihona Git nui o ka papahana Kubernetes ma k8s.io/kubernetes/pkg/cloudprovider/providers, akā ua hoʻoholo lākou e haʻalele i kēia ma muli o ka pilikia o ka hana ʻana me kahi kumu code nui. Ua hoʻoneʻe ʻia nā hana kahiko āpau i kaawale waihona. No ka maʻalahi o ke kākoʻo hou a me ka hoʻomohala ʻana, ua hoʻoneʻe ʻia nā mea maʻamau a pau i kaawale waihona.

E like me CSI, ua hoʻolālā mua nā mea hoʻolako ao nui i kā lākou CCM e hoʻohana i nā ao ma Kubernetes. Inā ʻaʻohe CCM o ka mea hoʻolako, akā aia nā hana pono āpau ma o API, a laila hiki iā ʻoe ke hoʻokō iā CCM iā ʻoe iho.

E kākau i kāu hoʻokō ponoʻī o CCM, ua lawa ia e hoʻokō pono nā pilina hele.

И ʻo kēia ka mea i loaʻa iā mākou.

Ka hoʻokō

Pehea ʻoe i hiki ai i kēia

Hoʻomaka mākou i ka hoʻomohala ʻana (a i ʻole, hoʻohana paha) me mākaukau (!) CCM no Yandex.Cloud i hoʻokahi makahiki i hala.

Eia naʻe, i kēia hoʻokō ʻana ua nalo mākou:

  • hōʻoia ma o JWT IAM hōʻailona;
  • Kākoʻo hoʻoponopono lawelawe.

E like me ka mea kākau (dlisin) ma Telegram, ua ʻoki mākou i ka yandex-cloud-controller-manager a hoʻohui i nā hana i nalowale.

Nā Mea Aʻo

I kēia manawa, kākoʻo ʻo CCM i kēia mau interface:

  • Nā Kūlana;
  • cii;
  • LoadBalancer.

I ka wā e hiki mai ana, i ka wā e hoʻomaka ai ʻo Yandex.Cloud e hana me nā mana VPC kiʻekiʻe, e hoʻohui mākou i kahi kikowaena. ? ooia.

ʻO LoadBalanacer ka mea paʻakikī nui

I ka wā mua, ua hoʻāʻo mākou, e like me nā hoʻokō CCM ʻē aʻe, e hana i ʻelua LoadBalancer и TargetGroup no nā kānaka a pau Service me ke ano LoadBalancer. Eia naʻe, ua ʻike ʻo Yandex.Cloud i kahi palena hoihoi: ʻaʻole hiki iā ʻoe ke hoʻohana TargetGroups me ka hui ana Targets (ʻelua SubnetID - IpAddress).

Ke hoʻolauna nei iā Kubernetes CCM (Cloud Controller Manager) no Yandex.Cloud

No laila, i loko o ka CCM i hana ʻia, hoʻokuʻu ʻia kahi mea hoʻoponopono, i ka wā e loli ai nā mea Node hōʻiliʻili i ka ʻike e pili ana i nā pilina āpau ma kēlā me kēia mīkini virtual, e hui pū iā lākou e like me ko lākou kuleana i kekahi NetworkID, hana e TargetGroup maluna o NetworkID, a nānā pū i ka pili. A laila, i ka wā e hana ai i kahi mea Service me ke ano LoadBalanacer hoʻopili wale mākou i kahi i hana mua ʻia TargetGroup i ka hou NetworkLoadBalanacer'am.

Pehea e hoʻomaka ai e hoʻohana?

Kākoʻo ʻo CCM iā Kubernetes version 1.15 a ʻoi aʻe. I loko o kahi puʻupuʻu, no ka hana ʻana, pono ia i ka hae --cloud-provider=external ua hoonohoia i true no kube-apiserver, kube-controller-manager, kube-scheduler a me nā kubelets a pau.

Ua wehewehe ʻia nā ʻanuʻu pono a pau no ka hoʻokomo ʻana iā ia iho README. Hoʻomaka ka hoʻonohonoho ʻana i ka hana ʻana i nā mea ma Kubernetes mai nā hōʻike.

No ka hoʻohana ʻana iā CCM pono ʻoe:

  • hōʻike i loko o ka hōʻike i ka papa kuhikuhi (folder-id) Yandex.Cloud;
  • moʻokāki lawelawe no ka launa pū ʻana me ka Yandex.Cloud API. Ma ka manifesto Secret pono ai hoʻoili i nā kī ʻae ʻia mai ka mooolelo lawelawe. Ma ka palapala wehewehe ʻia, pehea e hana ai i moʻokāki lawelawe a loaʻa nā kī.

E hauʻoli mākou i ka loaʻa ʻana o kāu manaʻo a nā pilikia houinā pilikia ʻoe!

Nā hopena

Ua hoʻohana mākou i ka CCM i hoʻokō ʻia ma ʻelima mau pūʻulu Kubernetes i nā pule ʻelua i hala iho nei a hoʻolālā e hoʻonui i kā lākou helu i 20 i ka mahina e hiki mai ana. ʻAʻole mākou e paipai i ka hoʻohana ʻana i CCM no nā hoʻonohonoho K8 nui a koʻikoʻi.

E like me ka hihia o CSI, e hauʻoli mākou inā lawe nā mea hoʻomohala Yandex i ka hoʻomohala ʻana a me ke kākoʻo ʻana i kēia papahana - ua mākaukau mākou e hoʻoili i ka waihona ma kā lākou noi i mea e hana ai i nā hana i pili pono iā mākou.

PS

E heluhelu pū ma kā mākou blog:

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka