Kubernetes CCM (Cloud Controller Manager) ለ Yandex.Cloud በማስተዋወቅ ላይ

Kubernetes CCM (Cloud Controller Manager) ለ Yandex.Cloud በማስተዋወቅ ላይ

ወደ ቅርብ ጊዜ በመቀጠል የሲኤስአይ ሹፌር መልቀቅ ለ Yandex.Cloud ለዚህ ደመና ሌላ የክፍት ምንጭ ፕሮጀክት እያተምን ነው - የደመና መቆጣጠሪያ አስተዳዳሪ. CCM የሚፈለገው ለጥቅሉ በአጠቃላይ ብቻ ሳይሆን ለሲኤስአይ ሹፌርም ጭምር ነው። ስለ ዓላማው ዝርዝሮች እና አንዳንድ የአተገባበር ባህሪያት በመቁረጥ ስር ናቸው.

መግቢያ

ይህ ለምን ሆነ?

CCM ን ለYandex.Cloud እንድናዳብር የገፋፉን ምክንያቶች ቀደም ሲል ከተገለጹት ጋር ሙሉ በሙሉ ይገጣጠማሉ ማስታወቂያ የሲኤስአይ አሽከርካሪዎች. ከተለያዩ የደመና አቅራቢዎች ብዙ የኩበርኔትስ ስብስቦችን እንይዛለን፣ ለዚህም አንድ መሳሪያ እንጠቀማለን። የእነዚህን አቅራቢዎች የሚቀናበሩ መፍትሄዎችን "በማለፍ" በርካታ ምቾቶችን ተግባራዊ ያደርጋል። አዎ፣ የተለየ ጉዳይ እና ፍላጎት አለን፣ ነገር ግን በእነሱ ምክንያት የተፈጠሩት እድገቶች ለሌሎች ተጠቃሚዎች ጠቃሚ ሊሆኑ ይችላሉ።

CCM በትክክል ምንድን ነው?

በተለምዶ በዙሪያችን ያለውን አካባቢ ለክላስተር እናዘጋጃለን ከውጭ - ለምሳሌ ቴራፎርምን በመጠቀም። ነገር ግን አንዳንድ ጊዜ በዙሪያችን ያለውን የደመና አካባቢ ማስተዳደር ያስፈልጋል ከጥቅል. ይህ ዕድል ቀርቧል, እና እሱ ነው የሚተገበረው CCM.

በተለይ፣ የክላውድ መቆጣጠሪያ አስተዳዳሪ አምስት ዋና ዋና መስተጋብር ዓይነቶችን ይሰጣል፡-

  1. አጋጣሚዎች - በኩበርኔትስ ውስጥ በመስቀለኛ ነገር መካከል 1: 1 ግንኙነትን ተግባራዊ ያደርጋል (Node) እና በደመና አቅራቢው ውስጥ ምናባዊ ማሽን. ለዚህም እኛ፡-
    • መስኩን ሙላ spec.providerID በእቃው ውስጥ Node. ለምሳሌ፣ ለOpenStack CCM ይህ መስክ የሚከተለው ቅርጸት አለው። openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0. የደመና አቅራቢውን ስም እና የነገሩን ልዩ UUID (ምናባዊ ማሽን በOpenStack) ማየት ይችላሉ።
    • ማሟያ nodeInfo በእቃው ውስጥ Node ስለ ምናባዊ ማሽን መረጃ. ለምሳሌ, በ AWS ውስጥ የአብነት አይነት እንገልፃለን;
    • በደመና ውስጥ ምናባዊ ማሽን መኖሩን እናረጋግጣለን. ለምሳሌ, እቃ ከሆነ Node ሁኔታ ውስጥ ገባ NotReady፣ ቨርቹዋል ማሽኑ በደመና አቅራቢው ውስጥ መኖሩን ወይም አለመሆኑን ማረጋገጥ ይችላሉ። providerID. እዚያ ከሌለ እቃውን ይሰርዙ Node, አለበለዚያ በክላስተር ውስጥ ለዘላለም የሚቆይ;
  2. ዞኖች - ለዕቃው ውድቀት ጎራ ያዘጋጃል። Node፣ የጊዜ መርሐግብር አውጪው በክላውድ አቅራቢው ውስጥ ባሉ ክልሎች እና ዞኖች መሠረት ለፖድ መስቀለኛ መንገድ እንዲመርጥ ፣
  3. LoadBalancer - ዕቃ በሚፈጥሩበት ጊዜ Service ከዓይነት ጋር LoadBalancer ትራፊክን ከውጭ ወደ ክላስተር ኖዶች የሚመራ አይነት ሚዛን ይፈጥራል። ለምሳሌ, በ Yandex.Cloud ውስጥ መጠቀም ይችላሉ NetworkLoadBalancer и TargetGroup ለእነዚህ ዓላማዎች;
  4. መንገድ - በመስቀለኛ መንገድ መካከል አውታረመረብ ይገነባል, ምክንያቱም በኩበርኔትስ መስፈርቶች መሰረት እያንዳንዱ ፖድ የራሱ አይፒ አድራሻ ሊኖረው እና ሌላ ማንኛውንም ፖድ መድረስ መቻል አለበት። ለእነዚህ ዓላማዎች፣ ተደራቢ አውታረ መረብን (VXLAN፣ GENEVE) መጠቀም ወይም የማዞሪያ ሠንጠረዥን በቀጥታ በደመና አቅራቢው ምናባዊ አውታረ መረብ ውስጥ ማቀናበር ይችላሉ።

    Kubernetes CCM (Cloud Controller Manager) ለ Yandex.Cloud በማስተዋወቅ ላይ

  5. ድምጽ - PVC እና SC በመጠቀም የPV ተለዋዋጭ ቅደም ተከተል ይፈቅዳል። መጀመሪያ ላይ፣ ይህ ተግባር የCCM አካል ነበር፣ ነገር ግን በትልቅ ውስብስብነቱ ምክንያት ወደ ተለየ ፕሮጀክት ተወስዷል Container Storage Interface (CSI)። ስለ CSI ከአንድ ጊዜ በላይ አውርተናል ፃፈ እና, ቀደም ሲል እንደተጠቀሰው, እንኳን የተለቀቀ የሲኤስአይ ሹፌር።

ከዚህ ቀደም ከደመናው ጋር የሚገናኙት ሁሉም ኮድ በ Kubernetes ፕሮጀክት ዋና Git ማከማቻ ውስጥ ይገኛሉ። k8s.io/kubernetes/pkg/cloudprovider/providers, ነገር ግን ከትልቅ የኮድ መሰረት ጋር ለመስራት በማይመች ሁኔታ ይህንን ለመተው ወሰኑ. ሁሉም የቆዩ አተገባበርዎች ተንቀሳቅሰዋል የተለየ ማከማቻ. ለቀጣይ ድጋፍ እና ልማት ምቾት ሁሉም የጋራ አካላት ወደ ተንቀሳቅሰዋል የተለየ ማከማቻ.

እንደ ሲኤስአይ፣ ብዙ ትላልቅ የደመና አቅራቢዎች ደመናዎችን በኩበርኔትስ ላይ ለመጠቀም አስቀድመው CCMዎቻቸውን ነድፈዋል። አቅራቢው CCM ከሌለው, ነገር ግን ሁሉም አስፈላጊ ተግባራት በኤፒአይ በኩል ይገኛሉ, ከዚያ CCM ን እራስዎ መተግበር ይችላሉ.

የራስዎን የ CCM ትግበራ ለመጻፍ, ለመተግበር በቂ ነው የሚያስፈልጉ የ Go interfaces.

И ያገኘነው ይህ ነው።.

ትግበራ

ወደዚህ እንዴት መጣህ

ልማትን ጀመርን (ወይም ይልቁንስ እንኳን መጠቀም) ዝግጁ (!) CCM ለ Yandex.Cloud ከአንድ ዓመት በፊት.

ሆኖም፣ በዚህ ትግበራ ውስጥ ጠፍተናል፡-

  • በJWT IAM token በኩል ማረጋገጫ;
  • የአገልግሎት መቆጣጠሪያ ድጋፍ.

ከጸሐፊው ጋር በመስማማት (ድሊሲን) በቴሌግራም ውስጥ የ yandex-cloud-controller- አስተዳዳሪን ሹካ እና የጎደሉትን ተግባራት ጨምረናል።

ዋና ዋና ባህሪዎች ፡፡

በአሁኑ ጊዜ CCM የሚከተሉትን በይነገጾች ይደግፋል፡

  • አጋጣሚዎች;
  • ዞኖች;
  • LoadBalancer.

ለወደፊቱ, Yandex.Cloud ከላቁ የ VPC ችሎታዎች ጋር መስራት ሲጀምር, በይነገጽ እንጨምራለን መንገዶች.

LoadBalanacer እንደ ዋና ፈተና

መጀመሪያ ላይ፣ ልክ እንደ ሌሎች የCCM አተገባበር፣ ጥንድ ለመፍጠር ሞክረናል። LoadBalancer и TargetGroup ለእያንዳንድ Service ከዓይነት ጋር LoadBalancer. ሆኖም፣ Yandex.Cloud አንድ አስደሳች ገደብ አግኝቷል፡ መጠቀም አይችሉም TargetGroups ከመጠላለፍ ጋር Targets (ጥንድ SubnetID - IpAddress).

Kubernetes CCM (Cloud Controller Manager) ለ Yandex.Cloud በማስተዋወቅ ላይ

ስለዚህ, በተፈጠረው CCM ውስጥ, ተቆጣጣሪ ተጀምሯል, እሱም, ነገሮች ሲቀየሩ Node በእያንዳንዱ ቨርቹዋል ማሽን ላይ ስለ ሁሉም በይነገጾች መረጃን ይሰበስባል ፣ የተወሰኑትን እንደየራሳቸው ይመድቧቸዋል። NetworkID፣ ይፈጥራል TargetGroup ላይ NetworkIDእንዲሁም ተገቢነቱን ይቆጣጠራል። በመቀጠል, አንድ ነገር ሲፈጥሩ Service ከዓይነት ጋር LoadBalanacer በቀላሉ አስቀድሞ የተፈጠረን እናያይዛለን። TargetGroup ወደ አዲስ NetworkLoadBalanacerእኔ.

መጠቀም እንዴት ይጀምራል?

CCM የ Kubernetes ስሪት 1.15 እና ከዚያ በላይ ይደግፋል። በክላስተር ውስጥ, እንዲሠራ, ባንዲራውን ያስፈልገዋል --cloud-provider=external እንዲሆን ተቀምጧል true ለኩቤ-አፒሰርቨር፣ ለኩቤ-ተቆጣጣሪ-አስተዳዳሪ፣ ለኩቤ-መርሐግብር እና ለሁሉም ኩቤሌቶች።

ለመጫኑ ሁሉም አስፈላጊ እርምጃዎች በ ውስጥ ተገልጸዋል README. መጫኑ በኩበርኔትስ ውስጥ ዕቃዎችን ከማንፌክቶች ለመፍጠር ይሞቃል።

CCM ለመጠቀም የሚከተሉትን ያስፈልግዎታል

  • ለይ በአንጸባራቂው ውስጥ የማውጫ መለያው (folder-id) Yandex.Cloud;
  • ከ Yandex.Cloud API ጋር ለመገናኘት የአገልግሎት መለያ። በማኒፌስቶው ውስጥ Secret አስፈላጊ ነው የተፈቀዱ ቁልፎችን ማስተላለፍ ከአገልግሎት መለያው. በሰነዱ ውስጥ ተገል describedልየአገልግሎት መለያ እንዴት መፍጠር እና ቁልፎችን ማግኘት እንደሚቻል።

የእርስዎን አስተያየት ለመቀበል ደስተኞች ነን እና አዳዲስ ጉዳዮችማንኛውም ችግር ካጋጠመዎት!

ውጤቶች

ባለፉት ሁለት ሳምንታት የተተገበረውን CCM በአምስት የኩበርኔትስ ክላስተር እየተጠቀምን ሲሆን በሚቀጥለው ወር ቁጥራቸውን ወደ 20 ለማድረስ አቅደናል። በአሁኑ ጊዜ CCM ለትልቅ እና ወሳኝ የK8s ጭነቶች እንዲጠቀሙ አንመክርም።

እንደ CSI ሁኔታ ፣ የ Yandex ገንቢዎች የዚህን ፕሮጀክት ልማት እና ድጋፍ ከወሰዱ ደስተኞች ነን - ለእኛ የበለጠ ተዛማጅነት ያላቸውን ተግባራት ለመቋቋም በጥያቄያቸው መሠረት ማከማቻውን ለማስተላለፍ ዝግጁ ነን ።

PS

በብሎጋችን ላይ ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ