Qhia Kubernetes CCM (Cloud Controller Manager) rau Yandex.Cloud

Qhia Kubernetes CCM (Cloud Controller Manager) rau Yandex.Cloud

Nyob rau hauv txuas ntxiv mus rau tsis ntev los no CSI tsav tsheb tso tawm rau Yandex.Cloud peb tab tom tshaj tawm lwm qhov Open Source project rau huab - Cloud Controller Manager. CCM yuav tsum tsis yog rau pawg tag nrho xwb, tab sis kuj rau CSI tus tsav tsheb nws tus kheej. Cov ntsiab lus hais txog nws lub hom phiaj thiab qee qhov kev siv ua haujlwm yog nyob rau hauv kev txiav.

Taw qhia

Vim li cas qhov no?

Cov kev mob siab uas ua rau peb tsim CCM rau Yandex.Cloud tag nrho nrog rau cov uas tau piav qhia hauv tshaj tawm CSI drivers. Peb tuav ntau pawg Kubernetes los ntawm cov chaw muab huab sib txawv, uas peb siv ib lub cuab yeej. Nws siv ntau yam yooj yim "bypassing" cov kev daws teeb meem ntawm cov chaw muab kev pabcuam no. Yog lawm, peb muaj cov ntaub ntawv tshwj xeeb thiab xav tau, tab sis cov kev tsim kho tau tsim vim lawv yuav muaj txiaj ntsig zoo rau lwm tus neeg siv.

CCM yog dab tsi?

Feem ntau, peb npaj ib puag ncig ib puag ncig peb rau pawg los ntawm sab nraud - Piv txwv li, siv Terraform. Tab sis qee zaum yuav tsum tau tswj hwm huab huab ib puag ncig peb los ntawm pawg. Qhov no muaj peev xwm yog muab, thiab nws yog nws uas yog siv CCM.

Tshwj xeeb, Cloud Controller Manager muab tsib yam tseem ceeb ntawm kev sib cuam tshuam:

  1. zaus - siv 1: 1 kev sib raug zoo ntawm cov khoom node hauv Kubernetes (Node) thiab lub tshuab virtual hauv huab muab kev pabcuam. Rau qhov no peb:
    • sau rau hauv daim teb spec.providerID hauv qhov khoom Node. Piv txwv li, rau OpenStack CCM daim teb no muaj cov qauv hauv qab no: openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. Koj tuaj yeem pom lub npe ntawm tus muab kev pabcuam huab thiab qhov tshwj xeeb UUID ntawm lub server (lub tshuab virtual hauv OpenStack) ntawm cov khoom;
    • ntxiv nodeInfo hauv qhov khoom Node cov ntaub ntawv hais txog lub tshuab virtual. Piv txwv li, peb teev hom piv txwv hauv AWS;
    • Peb tshawb xyuas lub xub ntiag ntawm lub tshuab virtual hauv huab. Piv txwv li, yog ib yam khoom Node mus rau hauv ib lub xeev NotReady, koj tuaj yeem tshawb xyuas seb lub tshuab virtual muaj nyob rau hauv txhua tus neeg muab kev pabcuam huab los ntawm providerID. Yog tias nws tsis nyob ntawd, rho tawm cov khoom Node, uas yuav txwv tsis pub nyob hauv pawg mus ib txhis;
  2. Cov ciaj ciam no - teeb tsa qhov tsis ua haujlwm rau qhov khoom Node, kom tus neeg teem sijhawm tuaj yeem xaiv lub pob rau Pod raws li thaj chaw thiab thaj chaw hauv huab muab kev pabcuam;
  3. LoadBalancer - thaum tsim ib yam khoom Service nrog hom LoadBalancer tsim ib hom kev sib npaug uas yuav coj cov tsheb khiav los ntawm sab nraud mus rau pawg nodes. Piv txwv li, hauv Yandex.Cloud koj tuaj yeem siv NetworkLoadBalancer ΠΈ TargetGroup rau cov hom phiaj no;
  4. Lawv - tsim ib lub network ntawm nodes, vim Raws li Kubernetes cov cai, txhua lub pod yuav tsum muaj nws tus kheej IP chaw nyob thiab tuaj yeem ncav cuag lwm lub pod. Rau cov laj thawj no, koj tuaj yeem siv lub network sib tshooj (VXLAN, GENEVE) lossis teeb tsa lub rooj sib tham ncaj qha rau hauv lub network virtual ntawm tus muab kev pabcuam huab:

    Qhia Kubernetes CCM (Cloud Controller Manager) rau Yandex.Cloud

  5. volume - Tso cai rau kev txiav txim siab ntawm PV siv PVC thiab SC. Thaum xub thawj, qhov kev ua haujlwm no yog ib feem ntawm CCM, tab sis vim nws qhov nyuaj heev nws tau tsiv mus rau ib qhov project, Container Storage Interface (CSI). Peb tau tham txog CSI ntau dua ib zaug sau tau thiab, raws li twb tau hais lawm, txawm tso tawm CSI driver.

Yav dhau los, tag nrho cov cai cuam tshuam nrog huab tau nyob rau hauv lub ntsiab Git repository ntawm Kubernetes qhov project ntawm k8s.io/kubernetes/pkg/cloudprovider/providers, tab sis lawv txiav txim siab tso tseg qhov no vim qhov tsis yooj yim ntawm kev ua haujlwm nrog lub hauv paus loj. Tag nrho cov kev siv qub tau hloov mus rau cais repository. Rau kev yooj yim ntawm kev txhawb nqa thiab kev loj hlob ntxiv, tag nrho cov khoom sib xyaw kuj tau txav mus rau cais repository.

Raws li nrog CSI, ntau tus neeg muab kev pabcuam huab loj twb tau tsim lawv CCMs los txhawb cov huab ntawm Kubernetes. Yog tias tus neeg muag khoom tsis muaj CCM, tab sis tag nrho cov haujlwm tsim nyog muaj nyob ntawm API, ces koj tuaj yeem siv CCM koj tus kheej.

Txhawm rau sau koj tus kheej kev siv CCM, nws txaus los siv xav tau Go interfaces.

И qhov no yog qhov peb tau txais.

Kev siv

Koj tuaj qhov no li cas

Peb pib txoj kev loj hlob (los yog theej, txawm siv) nrog ready(!) CCM rau Yandex.Cloud ib xyoos dhau los.

Txawm li cas los xij, hauv qhov kev siv no peb tau ploj lawm:

  • authentication ntawm JWT IAM token;
  • Kev pab tswj kev txhawb nqa.

Raws li kev pom zoo nrog tus sau (dlisin) hauv Telegram, peb forked yandex-cloud-controller-manager thiab ntxiv cov haujlwm uas ploj lawm.

Cov Ntaos Ntaus

Tam sim no, CCM txhawb nqa cov interfaces hauv qab no:

  • zaus;
  • Cov ciaj ciam no;
  • LoadBalancer.

Nyob rau hauv lub neej yav tom ntej, thaum Yandex.Cloud pib ua hauj lwm nrog advanced VPC peev xwm, peb yuav ntxiv ib tug interface Routes.

LoadBalancer yog qhov kev sib tw tseem ceeb

Thaum pib, peb sim, zoo li lwm yam kev siv CCM, los tsim ib khub ntawm LoadBalancer ΠΈ TargetGroup rau sawv daws Service nrog hom LoadBalancer. Txawm li cas los xij, Yandex.Cloud nrhiav tau ib qho kev txwv nthuav dav: koj siv tsis tau TargetGroups nrog kev sib tshuam Targets (pair SubnetID - IpAddress).

Qhia Kubernetes CCM (Cloud Controller Manager) rau Yandex.Cloud

Yog li ntawd, nyob rau hauv lub tsim CCM, ib tug maub los yog launched, uas, thaum khoom hloov Node sau cov ntaub ntawv hais txog tag nrho cov interfaces ntawm txhua lub tshuab virtual, pab pawg lawv raws li lawv cov khoom ntiag tug NetworkID, tsim los ntawm TargetGroup rau NetworkID, thiab tseem saib xyuas qhov cuam tshuam. Tom qab ntawd, thaum tsim ib yam khoom Service nrog hom LoadBalanacer peb tsuas txuas ib qho ua ntej tsim TargetGroup rau nov NetworkLoadBalanacer'kuv.

Yuav pib siv li cas?

CCM txhawb Kubernetes version 1.15 thiab siab dua. Hauv ib pawg, rau nws ua haujlwm, nws xav tau tus chij --cloud-provider=external tau teem rau true rau kube-apiserver, kube-controller-manager, kube-scheduler thiab tag nrho kubelets.

Txhua kauj ruam tsim nyog rau lub installation nws tus kheej tau piav qhia hauv NYEEM. Installation boils mus rau tsim cov khoom hauv Kubernetes los ntawm manifests.

Txhawm rau siv CCM koj kuj yuav xav tau:

  • qhia nyob rau hauv lub manifest lub directory identifier (folder-id) Yandex.Cloud;
  • kev pabcuam nyiaj rau kev cuam tshuam nrog Yandex.Cloud API. Nyob rau hauv lub manifesto Secret yog tsim nyog hloov cov yuam sij tso cai los ntawm tus account kev pabcuam. Hauv cov ntaub ntawv piav, yuav ua li cas los tsim ib qho kev pabcuam account thiab tau txais cov yuam sij.

Peb yuav zoo siab tau txais koj cov lus qhia thiab cov teeb meem tshiabyog koj ntsib teeb meem!

Cov txiaj ntsim tau los

Peb tau siv CCM ua tiav hauv tsib pawg Kubernetes ob lub lis piam dhau los thiab npaj yuav nthuav lawv tus lej mus rau 20 lub hlis tom ntej. Tam sim no peb tsis pom zoo siv CCM rau qhov loj thiab tseem ceeb K8s kev teeb tsa.

Raws li nyob rau hauv cov ntaub ntawv ntawm CSI, peb yuav zoo siab yog hais tias Yandex developers coj nyob rau hauv txoj kev loj hlob thiab kev txhawb nqa ntawm qhov project no - peb npaj txhij mus hloov lub repository ntawm lawv thov nyob rau hauv thiaj li yuav daws tau tej hauj lwm uas muaj feem xyuam rau peb.

PS

Nyeem kuj ntawm peb blog:

Tau qhov twg los: www.hab.com

Ntxiv ib saib