Fa'ailoa Kubernetes CCM (Cloud Controller Manager) mo Yandex.Cloud

Fa'ailoa Kubernetes CCM (Cloud Controller Manager) mo Yandex.Cloud

I le faʻaauau i le lata mai nei Fa'asa'oloto aveta'avale CSI mo Yandex.Cloud o loʻo matou lolomiina se isi poloketi Open Source mo lenei ao - Pule Pule o le Ao. E manaʻomia le CCM e le gata mo le fuifui atoa, ae faʻapea foi mo le avetaavale CSI lava ia. O faʻamatalaga e uiga i lona faʻamoemoega ma nisi o faʻatinoga o loʻo i lalo ole tipi.

Faatomuaga

Aisea ua faapea ai?

O mafuaʻaga na faʻaosofia ai i matou e atiaʻe CCM mo Yandex.Cloud e fetaui lelei ma mea ua uma ona faʻamatalaina i totonu. fa'aaliga avetaavale CSI. Matou te tausia le tele o fuifui Kubernetes mai 'au'aunaga ao eseese, lea matou te fa'aogaina ai se meafaigaluega e tasi. O lo'o fa'atinoina le tele o fa'aoga faigofie e “aloa” ai fofo fa'afoe a nei kamupani. Ioe, o loʻo i ai se matou mataupu maʻoti ma manaʻoga, ae o atinaʻe na faia ona o latou atonu e aoga i isi tagata faʻaoga.

O le a tonu le CCM?

E masani lava, tatou te saunia le siosiomaga o loʻo siomia ai i tatou mo le fuifui mai fafo - mo se faʻataʻitaʻiga, faʻaaogaina Terraform. Ae o nisi taimi e manaʻomia le puleaina o le siosiomaga o le ao o loʻo siomia ai i tatou mai fuifui. O lenei avanoa ua tuʻuina atu, ma o le mea lea e faʻatinoina CCM.

Aemaise lava, Cloud Controller Manager e maua ai ituaiga autu e lima o fegalegaleaiga:

  1. Faʻamatalaga - faʻatino se sootaga 1: 1 i le va o se mea node i Kubernetes (Node) ma se masini komepiuta i totonu o le ao tuʻuina atu. Mo lenei mea matou te:
    • faatumu le fanua spec.providerID i le mea faitino Node. Mo se faʻataʻitaʻiga, mo OpenStack CCM o lenei fanua o loʻo i ai le faatulagaga lenei: openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. E mafai ona e vaʻai i le igoa o le tuʻuina atu o le ao ma le UUID tulaga ese o le 'auʻaunaga (masini virtual i OpenStack) o le mea;
    • fa'atasi nodeInfo i le mea faitino Node faʻamatalaga e uiga i le masini komepiuta. Mo se faʻataʻitaʻiga, matou te faʻamaonia le ituaiga faʻataʻitaʻiga i le AWS;
    • Matou te siakiina le i ai o se masini komepiuta i le ao. Mo se faataitaiga, afai o se mea faitino Node alu i se setete NotReady, e mafai ona e siaki pe oi ai uma le masini komepiuta i totonu o le cloud provider e providerID. Afai e le o iai, tape le mea Node, lea semanu e tumau pea i le fuifui e faavavau;
  2. sone – fa'atulaga le vaega fa'aletonu mo le mea Node, ina ia mafai e le tagata faʻatulagaina ona filifili se node mo le Pod e tusa ai ma itulagi ma sone i totonu o le ao tuʻuina atu;
  3. LoadBalancer – pe a fai se mea Service ma le ituaiga LoadBalancer fa'atupuina se ituaiga fa'apaleni e fa'asa'o ai fe'avea'i mai fafo i nodes fuifui. Mo se faʻataʻitaʻiga, i Yandex.Cloud e mafai ona e faʻaogaina NetworkLoadBalancer и TargetGroup mo nei faamoemoega;
  4. Auala – fausia se fesootaiga i le va o nodes, ona E tusa ai ma manaʻoga Kubernetes, e tatau ona i ai i pod taʻitasi lana lava tuatusi IP ma mafai ona oʻo atu i soʻo se isi pod. Mo nei faʻamoemoega, e mafai ona e faʻaogaina se fesoʻotaʻiga faʻapipiʻi (VXLAN, GENEVE) poʻo le setiina saʻo o se laulau faʻataʻavalevale i luga o fesoʻotaiga vavave a le kamupani ao:

    Fa'ailoa Kubernetes CCM (Cloud Controller Manager) mo Yandex.Cloud

  5. fua - Faʻatagaina le faʻatonuina o le PV e faʻaaoga ai le PVC ma le SC. I le taimi muamua, o lenei gaioiga o se vaega o le CCM, ae ona o lona lavelave tele na siitia ai i se isi poloketi, Container Storage Interface (CSI). Ua sili atu ma le tasi ona matou talanoa e uiga i le CSI tusia ma, e pei ona taʻua muamua, e oo lava tatala avetaavale CSI.

I le taimi muamua, o tulafono uma e fegalegaleai ma le ao sa i totonu o le faleteuoloa Git autu o le poloketi Kubernetes i k8s.io/kubernetes/pkg/cloudprovider/providers, ae na latou filifili e lafoai lenei mea ona o le faʻalavelave o le galue ma se faʻavae code tele. O fa'atinoga tuai uma ua si'i atu i fale teu oloa eseese. Mo le fa'afaigofieina o le fa'aopoopoina o le lagolago ma le atina'e, sa fa'agasolo uma fo'i vaega masani i fale teu oloa eseese.

E pei o le CSI, o le tele o kamupani ao tele ua uma ona mamanuina a latou CCM e faʻaogaina ao i luga o Kubernetes. Afai e leai se CCM a le tagata faʻatau, ae o loʻo avanoa uma galuega talafeagai e ala i le API, ona mafai lea ona e faʻatinoina CCM oe lava.

Ina ia tusia lau lava faʻatinoga o le CCM, ua lava le faʻatinoina mana'omia Go interfaces.

И o le mea lea na matou maua.

Реализация

Na faapefea ona e sau i lenei mea

Na matou amata atinaʻe (pe sili atu, faʻaaoga) ma sauni(!) CCM mo Yandex.Cloud i le tausaga talu ai.

Ae ui i lea, i lenei faʻatinoga na matou misia:

  • faʻamaoniga e ala i le JWT IAM faʻailoga;
  • Fesoasoani e pulea auaunaga.

E tusa ai ma le tusitala (talitonu) i Telegram, na matou faʻaogaina yandex-cloud-controller-manager ma faʻaopoopo galuega o loʻo misi.

Mea taua

I le taimi nei, o loʻo lagolagoina e CCM fesoʻotaʻiga nei:

  • Faʻamatalaga;
  • sone;
  • LoadBalancer.

I le lumanaʻi, pe a amata ona galue Yandex.Cloud ma tomai faʻapitoa VPC, matou te faʻaopoopoina se atinaʻe auala.

LoadBalanacer o se lu'itau autu

I le taimi muamua, sa matou taumafai, e pei o isi faʻatinoga CCM, e fatu se paga o LoadBalancer и TargetGroup mo taʻitasi Service ma le ituaiga LoadBalancer. Ae ui i lea, na maua e Yandex.Cloud se tasi tapulaʻa manaia: e le mafai ona e faʻaogaina TargetGroups ma felavasa'i Targets (lua SubnetID - IpAddress).

Fa'ailoa Kubernetes CCM (Cloud Controller Manager) mo Yandex.Cloud

O le mea lea, i totonu o le CCM na faia, o loʻo faʻalauiloaina se pule, lea, pe a suia mea, Node aoina faʻamatalaga e uiga i fesoʻotaʻiga uma i luga o masini komepiuta taʻitasi, faʻavasegaina i latou e tusa ai ma a latou mea patino NetworkID, faia e TargetGroup i NetworkID, ma mataituina foi le talafeagai. Mulimuli ane, pe a fatuina se mea Service ma le ituaiga LoadBalanacer matou te faʻapipiʻi muamua se mea na faia TargetGroup i fou NetworkLoadBalanacer'am.

E fa'afefea ona amata fa'aaoga?

E lagolagoina e le CCM le Kubernetes version 1.15 ma maualuga atu. I totonu o se fuifui, ina ia galue, e manaʻomia le fuʻa --cloud-provider=external sa seti i true mo kube-apiserver, kube-controller-manager, kube-scheduler ma kubelets uma.

O laasaga talafeagai uma mo le faʻapipiʻiina lava ia o loʻo faʻamatalaina i totonu FAITAU. O le faʻapipiʻiina e faʻapipiʻi i lalo i le fatuina o mea i Kubernetes mai faʻaaliga.

Mo le fa'aogaina o le CCM e te mana'omia fo'i:

  • faasino mai i le fa'aaliga le fa'ailoga fa'ailoga (folder-id) Yandex.Cloud;
  • 'au'aunaga mo le fegalegaleai ma le Yandex.Cloud API. I le manifesto Secret e tatau fa'aliliuina ki fa'atagaina mai le tala o auaunaga. I totonu o faʻamaumauga faamatalaina, fa'afefea ona fai se tala tautua ma maua ki.

Matou te fiafia e maua sau fa'amatalaga ma mataupu foupe afai e te feagai ma ni faʻafitauli!

O taunuʻuga

Sa matou fa'aogaina le CCM fa'atinoina i vaega Kubernetes e lima i le lua vaiaso talu ai ma fuafua e fa'alautele lo latou numera i le 20 i le masina a sau. Matou te le fautuaina i le taimi nei le faʻaaogaina o le CCM mo faʻapipiʻi K8s tetele ma taua.

E pei o le tulaga o le CSI, o le a matou fiafia pe a fai e le au atinaʻe Yandex le atinaʻeina ma le lagolago o lenei poloketi - ua matou sauni e faʻafeiloaʻi le faleoloa i la latou talosaga ina ia mafai ai ona faʻatautaia galuega e sili atu ona talafeagai ia i matou.

SALA

Faitau foi i la matou blog:

puna: www.habr.com

Faaopoopo i ai se faamatalaga