ProHoster > blog > Amministrazzjoni > L-introduzzjoni ta' Kubernetes CCM (Cloud Controller Manager) għal Yandex.Cloud
L-introduzzjoni ta' Kubernetes CCM (Cloud Controller Manager) għal Yandex.Cloud
B'kontinwazzjoni għall-aħħar Rilaxx tas-sewwieq CSI għal Yandex.Cloud qed nippubblikaw proġett ieħor Open Source għal dan il-cloud - Maniġer tal-Kontrollur tal-Cloud. Is-CCM huwa meħtieġ mhux biss għall-cluster kollu kemm hu, iżda wkoll għas-sewwieq CSI innifsu. Dettalji dwar l-iskop tiegħu u xi karatteristiċi ta 'implimentazzjoni huma taħt il-qatgħa.
Introduzzjoni
Għaliex dan?
Il-motivi li wassluna biex niżviluppaw CCM għal Yandex.Cloud jikkoinċidu kompletament ma 'dawk diġà deskritti fi avviż Is-sewwieqa tas-CSI. Aħna nżommu ħafna raggruppamenti ta' Kubernetes minn fornituri ta' cloud differenti, li għalihom nużaw għodda waħda. Hija timplimenta bosta konvenjenzi "jgħixu" s-soluzzjonijiet ġestiti ta 'dawn il-fornituri. Iva, għandna każ u bżonnijiet pjuttost speċifiċi, iżda l-iżviluppi maħluqa minħabba fihom jistgħu jkunu utli għal utenti oħra.
X'inhu eżattament CCM?
Tipikament, aħna nippreparaw l-ambjent tagħna għall-cluster minn barra - pereżempju, bl-użu ta' Terraform. Imma xi drabi jkun hemm bżonn li niġġestixxu l-ambjent tas-sħab ta’ madwarna mill-cluster. Din il-possibbiltà hija pprovduta, u hija li hija implimentata CCM.
Speċifikament, Cloud Controller Manager jipprovdi ħames tipi ewlenin ta’ interazzjoni:
Każijiet – jimplimenta relazzjoni 1:1 bejn oġġett node f'Kubernetes (Node) u magna virtwali fil-fornitur tal-cloud. Għal dan aħna:
imla l-qasam spec.providerID fl-oġġett Node. Pereżempju, għal OpenStack CCM dan il-qasam għandu l-format li ġej: openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. Tista 'tara l-isem tal-fornitur tas-sħab u l-UUID uniku tas-server (magna virtwali f'OpenStack) tal-oġġett;
jikkumplimentaw nodeInfo fl-oġġett Node informazzjoni dwar il-magna virtwali. Pereżempju, aħna nispeċifikaw it-tip ta' istanza f'AWS;
Aħna niċċekkjaw il-preżenza ta 'magna virtwali fis-sħaba. Per eżempju, jekk oġġett Node marru fi stat NotReady, tista 'tiċċekkja jekk il-magna virtwali teżisti xejn fil-fornitur tas-sħab minn providerID. Jekk ma jkunx hemm, ħassar l-oġġett Node, li inkella jibqgħu fil-cluster għal dejjem;
żoni – jistabbilixxi d-dominju tal-falliment għall-oġġett Node, sabiex l-iskeder ikun jista 'jagħżel node għall-Pod skond ir-reġjuni u ż-żoni fil-fornitur tas-sħab;
LoadBalancer – meta toħloq oġġett Service bit-tip LoadBalancer joħloq tip ta 'balancer li jidderieġi t-traffiku minn barra lejn in-nodi tal-cluster. Per eżempju, f'Yandex.Cloud tista 'tuża NetworkLoadBalancer и TargetGroup għal dawn l-għanijiet;
Rotta – jibni netwerk bejn in-nodi, għaliex Skont ir-rekwiżiti tal-Kubernetes, kull pod għandu jkollu l-indirizz IP tiegħu stess u jkun jista 'jilħaq kwalunkwe pod ieħor. Għal dawn l-għanijiet, tista' tuża netwerk ta' overlay (VXLAN, GENEVE) jew issettja tabella ta' rotta direttament fin-netwerk virtwali tal-fornitur tas-sħab:
volum – Jippermetti l-ordni dinamiku tal-PV bl-użu tal-PVC u SC. Inizjalment, din il-funzjonalità kienet parti mis-CCM, iżda minħabba l-kumplessità kbira tagħha ġiet imċaqalqa għal proġett separat, Container Storage Interface (CSI). Tkellimna dwar CSI aktar minn darba писали u, kif diġà ssemma, anke meħlusa Is-sewwieq tas-CSI.
Preċedentement, il-kodiċi kollu li jinteraġixxi mas-sħaba kien jinsab fir-repożitorju Git ewlieni tal-proġett Kubernetes fi k8s.io/kubernetes/pkg/cloudprovider/providers, iżda ddeċidew li jabbandunaw dan minħabba l-inkonvenjenza li jaħdmu ma 'bażi ta' kodiċi kbira. L-implimentazzjonijiet antiki kollha ġew imċaqalqa għal repożitorju separat. Għall-konvenjenza ta 'appoġġ u żvilupp ulterjuri, il-komponenti komuni kollha ġew imċaqalqa wkoll lejn repożitorju separat.
Bħal CSI, ħafna fornituri kbar tal-cloud diġà ddisinjaw is-CCMs tagħhom biex jisfruttaw is-sħab fuq Kubernetes. Jekk il-fornitur m'għandux CCM, iżda l-funzjonijiet kollha meħtieġa huma disponibbli permezz tal-API, allura tista 'timplimenta CCM lilek innifsek.
Biex tikteb l-implimentazzjoni tiegħek tas-CCM, huwa biżżejjed li timplimenta meħtieġa Go interfaces.
Bdejna l-iżvilupp (jew aħjar, anke l-użu) bi lest(!) CCM għal Yandex.Cloud sena ilu.
Madankollu, f'din l-implimentazzjoni konna neqsin:
awtentikazzjoni permezz tat-token JWT IAM;
Appoġġ għall-kontrollur tas-servizz.
Bi qbil mal-awtur (dlisin) f'Telegram, aħna forked yandex-cloud-controller-manager u żidna l-funzjonijiet neqsin.
Karatteristiċi ewlenin
Bħalissa, CCM jappoġġja l-interfaces li ġejjin:
Każijiet;
żoni;
LoadBalancer.
Fil-futur, meta Yandex.Cloud jibda jaħdem b'kapaċitajiet avvanzati ta 'VPC, aħna se nżidu interface rotot.
LoadBalanacer bħala sfida ewlenija
Inizjalment, ippruvajna, bħal implimentazzjonijiet CCM oħra, noħolqu par ta ' LoadBalancer и TargetGroup għal kull Service bit-tip LoadBalancer. Madankollu, Yandex.Cloud skopra limitazzjoni waħda interessanti: ma tistax tuża TargetGroups b'intersezzjoni Targets (par SubnetID - IpAddress).
Għalhekk, ġewwa l-CCM maħluqa, jitnieda kontrollur, li, meta l-oġġetti jinbidlu Node jiġbor informazzjoni dwar l-interfaces kollha fuq kull magna virtwali, jiġborhom skond l-appartenenza tagħhom għal ċerti NetworkID, toħloq minn TargetGroup fuq NetworkID, u tissorvelja wkoll ir-rilevanza. Sussegwentement, meta toħloq oġġett Service bit-tip LoadBalanacer aħna sempliċiment ehmeż pre-maħluqa TargetGroup lil oħrajn ġodda NetworkLoadBalanacer'am.
Kif tibda tuża?
CCM jappoġġja l-verżjoni 1.15 ta' Kubernetes u ogħla. Fi cluster, biex jaħdem, jeħtieġ li l-bandiera --cloud-provider=external kien stabbilit li true għal kube-apiserver, kube-controller-manager, kube-scheduler u kubelets kollha.
Il-passi kollha meħtieġa għall-installazzjoni nnifisha huma deskritti fi README. L-installazzjoni tirriżulta mill-ħolqien ta 'oġġetti f'Kubernetes minn manifesti.
kont tas-servizz għall-interazzjoni mal-API Yandex.Cloud. Fil-manifest Secret huwa meħtieġ jittrasferixxi ċwievet awtorizzati mill-kont tas-servizz. Fid-dokumentazzjoni deskritt, kif toħloq kont tas-servizz u tikseb ċwievet.
Se nkunu ferħanin li nirċievu l-feedback tiegħek u kwistjonijiet ġoddajekk tiltaqa' ma' xi problemi!
Riżultati ta '
Ilna nużaw is-CCM implimentat f'ħames clusters Kubernetes matul l-aħħar ġimgħatejn u nippjanaw li nespandu n-numru tagħhom għal 20 fix-xahar li ġej. Bħalissa ma nirrakkomandawx li tuża CCM għal installazzjonijiet K8s kbar u kritiċi.
Bħal fil-każ ta 'CSI, inkunu ferħanin jekk l-iżviluppaturi Yandex jieħdu l-iżvilupp u l-appoġġ ta' dan il-proġett - aħna lesti li nittrasferixxu r-repożitorju fuq talba tagħhom sabiex nittrattaw kompiti li huma aktar rilevanti għalina.