Fampahafantarana an'i Kubernetes CCM (Mpitantana Rahona) ho an'ny Yandex.Cloud

Fampahafantarana an'i Kubernetes CCM (Mpitantana Rahona) ho an'ny Yandex.Cloud

Ho fanohizana ny vao haingana Famoahana mpamily CSI ho an'ny Yandex.Cloud dia mamoaka tetikasa Open Source hafa ho an'ity rahona ity izahay - Cloud Controller Manager. Ny CCM dia takiana tsy ho an'ny cluster manontolo, fa ho an'ny mpamily CSI ihany koa. Ny antsipiriany momba ny tanjony sy ny endri-javatra fampiharana sasany dia eo ambany fanapahana.

fampidirana

Nahoana izany?

Ny antony nanosika anay hamolavola CCM ho an'ny Yandex.Cloud dia mifanandrify tanteraka amin'ireo efa voalaza ao amin'ny fanambarana CSI mpamily. Mitazona vondrona Kubernetes maro avy amin'ny mpanome rahona samihafa izahay, izay mampiasa fitaovana tokana. Mampihatra ny fahafaham-po maro izy io "mandingana" ny vahaolana tantanin'ireo mpamatsy ireo. Eny, manana tranga manokana sy filana manokana isika, saingy mety hahasoa ny mpampiasa hafa ny fivoarana noforonina noho izany.

Inona marina no atao hoe CCM?

Amin'ny ankapobeny, manomana ny tontolo manodidina antsika ho an'ny cluster isika avy any ivelany - ohatra, mampiasa Terraform. Saingy indraindray dia ilaina ny mitantana ny tontolo rahona manodidina antsika avy amin'ny cluster. Io fahafahana io dia omena, ary io no ampiharina CCM.

Ny Cloud Controller Manager dia manome karazana fifandraisana dimy lehibe indrindra:

  1. tranga - mametraka fifandraisana 1: 1 eo amin'ny zavatra node ao amin'ny Kubernetes (Node) ary milina virtoaly ao amin'ny mpamatsy rahona. Ho an'izany dia:
    • fenoy ny saha spec.providerID amin'ny zavatra Node. Ohatra, ho an'ny OpenStack CCM ity sehatra ity dia manana endrika manaraka: openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. Azonao atao ny mahita ny anaran'ny mpamatsy rahona sy ny UUID tokana an'ny mpizara (milina virtoaly ao amin'ny OpenStack) an'ilay zavatra;
    • famenon'ny nodeInfo amin'ny zavatra Node fampahalalana momba ny milina virtoaly. Ohatra, mamaritra karazana ohatra amin'ny AWS izahay;
    • Manamarina ny fisian'ny milina virtoaly ao amin'ny rahona izahay. Ohatra, raha zavatra iray Node nandeha tany amin'ny fanjakana NotReady, azonao atao ny manamarina raha misy ny milina virtoaly ao amin'ny mpamatsy rahona amin'ny providerID. Raha tsy eo ilay izy dia vonoy ilay zavatra Node, izay raha tsy izany dia hijanona ao amin'ny cluster mandrakizay;
  2. faritra – mametraka ny sehatra tsy fahombiazana ho an'ny zavatra Node, mba hahafahan'ny mpandrindra mifidy node ho an'ny Pod araka ny faritra sy faritra ao amin'ny mpamatsy rahona;
  3. LoadBalancer – rehefa mamorona zavatra Service miaraka amin'ny karazana LoadBalancer mamorona karazana balancer izay hitarika ny fifamoivoizana avy any ivelany mankany amin'ireo node cluster. Ohatra, ao amin'ny Yandex.Cloud azonao ampiasaina NetworkLoadBalancer ΠΈ TargetGroup ho an'ireo tanjona ireo;
  4. Route - manangana tambajotra eo anelanelan'ny nodes, satria Araka ny fepetra takian'ny Kubernetes, ny pod tsirairay dia tsy maintsy manana ny adiresy IP-ny manokana ary afaka miditra amin'ny pod hafa. Ho an'ireo tanjona ireo dia azonao atao ny mampiasa tamba-jotra overlay (VXLAN, GENEVE) na mametraka tabilao fandalovana mivantana amin'ny tambajotra virtoalin'ny mpamatsy rahona:

    Fampahafantarana an'i Kubernetes CCM (Mpitantana Rahona) ho an'ny Yandex.Cloud

  5. Volume - Mamela ny filaharana mavitrika amin'ny PV mampiasa PVC sy SC. Tany am-boalohany dia anisan'ny CCM io fampiasa io, saingy noho ny fahasarotana lehibe dia nafindra tany amin'ny tetikasa mitokana, Container Storage Interface (CSI). Niresaka momba ny CSI imbetsaka izahay nanoratra ary, araka ny efa voalaza, na dia navoaka mpamily CSI.

Teo aloha, ny kaody rehetra mifandray amin'ny rahona dia hita ao amin'ny tahiry Git lehibe amin'ny tetikasa Kubernetes ao amin'ny k8s.io/kubernetes/pkg/cloudprovider/providers, saingy nanapa-kevitra ny handao an'io izy ireo noho ny fahasahiranana amin'ny fiasana amin'ny fototra code lehibe. Ny fampiharana taloha rehetra dia nafindra tany fitehirizana misaraka. Ho fanamorana ny fanohanana sy ny fampandrosoana bebe kokoa, dia nafindra ihany koa ny singa iraisana rehetra fitehirizana misaraka.

Tahaka ny amin'ny CSI, mpanome rahona lehibe maro no efa namolavola ny CCM-ny hampiasa rahona amin'ny Kubernetes. Raha tsy manana CCM ny mpamatsy, fa ny fiasa ilaina rehetra dia azo alaina amin'ny alΓ lan'ny API, dia azonao atao ny mampihatra CCM ny tenanao.

Mba hanoratana ny fampiharanao manokana ny CCM dia ampy ny mampihatra mila interface tsara Go.

И ity no azonay.

fanatanterahana

Ahoana no nahatongavanao tamin'izany

Nanomboka ny fampandrosoana (na ny marimarina kokoa, mampiasa) miaraka amin'ny vonona(!) CCM ho an'ny Yandex.Cloud herintaona lasa izay.

Na izany aza, tamin'ity fampiharana ity dia tsy hita izahay:

  • fanamarinana amin'ny alΓ lan'ny marika JWT IAM;
  • Fanohanana mpanara-maso serivisy.

Mifanaraka amin'ny mpanoratra (dlisin) ao amin'ny Telegram, nosokajinay ny yandex-cloud-controller-manager ary nampiana ireo fiasa tsy hita.

Toe-javatra fototra

Amin'izao fotoana izao, ny CCM dia manohana ireto interface manaraka ireto:

  • tranga;
  • faritra;
  • LoadBalancer.

Amin'ny ho avy, rehefa manomboka miasa miaraka amin'ny fahaiza-manao VPC mandroso ny Yandex.Cloud, dia hanampy interface tsara izahay. Routes.

LoadBalanacer ho fanamby lehibe

Tamin'ny voalohany, niezaka izahay, toy ny fampiharana CCM hafa, mba hamoronana mpivady LoadBalancer ΠΈ TargetGroup isaky ny Service miaraka amin'ny karazana LoadBalancer. Na izany aza, Yandex.Cloud dia nahita fetra mahaliana iray: tsy azonao ampiasaina TargetGroups miaraka amin'ny intersection Targets (mpiara SubnetID - IpAddress).

Fampahafantarana an'i Kubernetes CCM (Mpitantana Rahona) ho an'ny Yandex.Cloud

Noho izany, ao anatin'ny CCM noforonina, dia atomboka ny controller, izay, rehefa miova ny zavatra Node manangona vaovao momba ny interface rehetra amin'ny milina virtoaly tsirairay, manambatra azy ireo araka ny maha-izy azy NetworkID, noforonin'ny TargetGroup amin'ny NetworkID, ary manara-maso ny maha-zava-dehibe ihany koa. Avy eo, rehefa mamorona zavatra Service miaraka amin'ny karazana LoadBalanacer ampifandraisinay fotsiny ny efa noforonina TargetGroup vaovao NetworkLoadBalanacer'am.

Ahoana no hanombohana mampiasa?

CCM dia manohana Kubernetes version 1.15 sy ambony. Ao amin'ny cluster, mba hiasa, dia mila ny saina --cloud-provider=external napetraka ho true ho an'ny kube-apiserver, kube-controller-manager, kube-scheduler ary ny kubelets rehetra.

Ny dingana rehetra ilaina amin'ny fametrahana azy dia voalaza ao amin'ny README. Ny fametrahana dia miainga amin'ny famoronana zavatra ao amin'ny Kubernetes avy amin'ny manifests.

Mba hampiasana CCM dia mila:

  • atoroy ao amin'ny manifest ny identifier directory (folder-id) Yandex.Cloud;
  • kaonty serivisy hifaneraserana amin'ny Yandex.Cloud API. Ao amin'ny manifesto Secret ilaina mamindra lakile nahazo alalana avy amin'ny kaonty serivisy. Ao amin'ny antontan-taratasy voalaza, ny fomba hamoronana kaonty serivisy sy hahazoana fanalahidy.

Ho faly izahay handray ny hevitrao ary olana vaovaoraha sendra olana ianao!

vokatra

Nampiasa ny CCM nampiharina tao amin'ny cluster Kubernetes dimy izahay tato anatin'ny roa herinandro ary mikasa ny hanitatra ny isany ho 20 amin'ny volana ho avy. Tsy manoro hevitra izahay amin'izao fotoana izao ny fampiasana CCM ho an'ny fametrahana K8 lehibe sy mitsikera.

Tahaka ny amin'ny CSI, dia ho faly izahay raha mandray ny fampandrosoana sy ny fanohanana an'ity tetikasa ity ny mpamorona Yandex - vonona ny hamindra ny tahiry amin'ny fangatahan'izy ireo izahay mba hiatrehana ireo asa mifandraika aminay kokoa.

Sal

Vakio ihany koa ao amin'ny bilaoginay:

Source: www.habr.com

Add a comment