ወደ ቅርብ ጊዜ በመቀጠል
መግቢያ
ይህ ለምን ሆነ?
CCM ን ለYandex.Cloud እንድናዳብር የገፋፉን ምክንያቶች ቀደም ሲል ከተገለጹት ጋር ሙሉ በሙሉ ይገጣጠማሉ
CCM በትክክል ምንድን ነው?
በተለምዶ በዙሪያችን ያለውን አካባቢ ለክላስተር እናዘጋጃለን ከውጭ - ለምሳሌ ቴራፎርምን በመጠቀም። ነገር ግን አንዳንድ ጊዜ በዙሪያችን ያለውን የደመና አካባቢ ማስተዳደር ያስፈልጋል ከጥቅል. ይህ ዕድል ቀርቧል, እና እሱ ነው የሚተገበረው
በተለይ፣ የክላውድ መቆጣጠሪያ አስተዳዳሪ አምስት ዋና ዋና መስተጋብር ዓይነቶችን ይሰጣል፡-
- አጋጣሚዎች - በኩበርኔትስ ውስጥ በመስቀለኛ ነገር መካከል 1: 1 ግንኙነትን ተግባራዊ ያደርጋል (
Node
) እና በደመና አቅራቢው ውስጥ ምናባዊ ማሽን. ለዚህም እኛ፡-- መስኩን ሙላ
spec.providerID
በእቃው ውስጥNode
. ለምሳሌ፣ ለOpenStack CCM ይህ መስክ የሚከተለው ቅርጸት አለው።openstack:///d58a78bf-21b0-4682-9dc6-2132406d2bb0
. የደመና አቅራቢውን ስም እና የነገሩን ልዩ UUID (ምናባዊ ማሽን በOpenStack) ማየት ይችላሉ። - ማሟያ
nodeInfo
በእቃው ውስጥNode
ስለ ምናባዊ ማሽን መረጃ. ለምሳሌ, በ AWS ውስጥ የአብነት አይነት እንገልፃለን; - በደመና ውስጥ ምናባዊ ማሽን መኖሩን እናረጋግጣለን. ለምሳሌ, እቃ ከሆነ
Node
ሁኔታ ውስጥ ገባNotReady
፣ ቨርቹዋል ማሽኑ በደመና አቅራቢው ውስጥ መኖሩን ወይም አለመሆኑን ማረጋገጥ ይችላሉ።providerID
. እዚያ ከሌለ እቃውን ይሰርዙNode
, አለበለዚያ በክላስተር ውስጥ ለዘላለም የሚቆይ;
- መስኩን ሙላ
- ዞኖች - ለዕቃው ውድቀት ጎራ ያዘጋጃል።
Node
፣ የጊዜ መርሐግብር አውጪው በክላውድ አቅራቢው ውስጥ ባሉ ክልሎች እና ዞኖች መሠረት ለፖድ መስቀለኛ መንገድ እንዲመርጥ ፣ - LoadBalancer - ዕቃ በሚፈጥሩበት ጊዜ
Service
ከዓይነት ጋርLoadBalancer
ትራፊክን ከውጭ ወደ ክላስተር ኖዶች የሚመራ አይነት ሚዛን ይፈጥራል። ለምሳሌ, በ Yandex.Cloud ውስጥ መጠቀም ይችላሉNetworkLoadBalancer
иTargetGroup
ለእነዚህ ዓላማዎች; - መንገድ - በመስቀለኛ መንገድ መካከል አውታረመረብ ይገነባል, ምክንያቱም በኩበርኔትስ መስፈርቶች መሰረት እያንዳንዱ ፖድ የራሱ አይፒ አድራሻ ሊኖረው እና ሌላ ማንኛውንም ፖድ መድረስ መቻል አለበት። ለእነዚህ ዓላማዎች፣ ተደራቢ አውታረ መረብን (VXLAN፣ GENEVE) መጠቀም ወይም የማዞሪያ ሠንጠረዥን በቀጥታ በደመና አቅራቢው ምናባዊ አውታረ መረብ ውስጥ ማቀናበር ይችላሉ።
- ድምጽ - PVC እና SC በመጠቀም የPV ተለዋዋጭ ቅደም ተከተል ይፈቅዳል። መጀመሪያ ላይ፣ ይህ ተግባር የCCM አካል ነበር፣ ነገር ግን በትልቅ ውስብስብነቱ ምክንያት ወደ ተለየ ፕሮጀክት ተወስዷል Container Storage Interface (CSI)። ስለ CSI ከአንድ ጊዜ በላይ አውርተናል
ፃፈ እና, ቀደም ሲል እንደተጠቀሰው, እንኳንየተለቀቀ የሲኤስአይ ሹፌር።
ከዚህ ቀደም ከደመናው ጋር የሚገናኙት ሁሉም ኮድ በ Kubernetes ፕሮጀክት ዋና Git ማከማቻ ውስጥ ይገኛሉ። k8s.io/kubernetes/pkg/cloudprovider/providers
, ነገር ግን ከትልቅ የኮድ መሰረት ጋር ለመስራት በማይመች ሁኔታ ይህንን ለመተው ወሰኑ. ሁሉም የቆዩ አተገባበርዎች ተንቀሳቅሰዋል
እንደ ሲኤስአይ፣ ብዙ ትላልቅ የደመና አቅራቢዎች ደመናዎችን በኩበርኔትስ ላይ ለመጠቀም አስቀድመው CCMዎቻቸውን ነድፈዋል። አቅራቢው CCM ከሌለው, ነገር ግን ሁሉም አስፈላጊ ተግባራት በኤፒአይ በኩል ይገኛሉ, ከዚያ CCM ን እራስዎ መተግበር ይችላሉ.
የራስዎን የ CCM ትግበራ ለመጻፍ, ለመተግበር በቂ ነው
И
ትግበራ
ወደዚህ እንዴት መጣህ
ልማትን ጀመርን (ወይም ይልቁንስ እንኳን መጠቀም)
ሆኖም፣ በዚህ ትግበራ ውስጥ ጠፍተናል፡-
- በJWT IAM token በኩል ማረጋገጫ;
- የአገልግሎት መቆጣጠሪያ ድጋፍ.
ከጸሐፊው ጋር በመስማማት (ድሊሲን) በቴሌግራም ውስጥ የ yandex-cloud-controller- አስተዳዳሪን ሹካ እና የጎደሉትን ተግባራት ጨምረናል።
ዋና ዋና ባህሪዎች ፡፡
በአሁኑ ጊዜ CCM የሚከተሉትን በይነገጾች ይደግፋል፡
- አጋጣሚዎች;
- ዞኖች;
- LoadBalancer.
ለወደፊቱ, Yandex.Cloud ከላቁ የ VPC ችሎታዎች ጋር መስራት ሲጀምር, በይነገጽ እንጨምራለን መንገዶች.
LoadBalanacer እንደ ዋና ፈተና
መጀመሪያ ላይ፣ ልክ እንደ ሌሎች የCCM አተገባበር፣ ጥንድ ለመፍጠር ሞክረናል። LoadBalancer
и TargetGroup
ለእያንዳንድ Service
ከዓይነት ጋር LoadBalancer
. ሆኖም፣ Yandex.Cloud አንድ አስደሳች ገደብ አግኝቷል፡ መጠቀም አይችሉም TargetGroups
ከመጠላለፍ ጋር Targets
(ጥንድ SubnetID
- IpAddress
).
ስለዚህ, በተፈጠረው CCM ውስጥ, ተቆጣጣሪ ተጀምሯል, እሱም, ነገሮች ሲቀየሩ Node
በእያንዳንዱ ቨርቹዋል ማሽን ላይ ስለ ሁሉም በይነገጾች መረጃን ይሰበስባል ፣ የተወሰኑትን እንደየራሳቸው ይመድቧቸዋል። NetworkID
፣ ይፈጥራል TargetGroup
ላይ NetworkID
እንዲሁም ተገቢነቱን ይቆጣጠራል። በመቀጠል, አንድ ነገር ሲፈጥሩ Service
ከዓይነት ጋር LoadBalanacer
በቀላሉ አስቀድሞ የተፈጠረን እናያይዛለን። TargetGroup
ወደ አዲስ NetworkLoadBalanacer
እኔ.
መጠቀም እንዴት ይጀምራል?
CCM የ Kubernetes ስሪት 1.15 እና ከዚያ በላይ ይደግፋል። በክላስተር ውስጥ, እንዲሠራ, ባንዲራውን ያስፈልገዋል --cloud-provider=external
እንዲሆን ተቀምጧል true
ለኩቤ-አፒሰርቨር፣ ለኩቤ-ተቆጣጣሪ-አስተዳዳሪ፣ ለኩቤ-መርሐግብር እና ለሁሉም ኩቤሌቶች።
ለመጫኑ ሁሉም አስፈላጊ እርምጃዎች በ ውስጥ ተገልጸዋል
CCM ለመጠቀም የሚከተሉትን ያስፈልግዎታል
-
ለይ በአንጸባራቂው ውስጥ የማውጫ መለያው (folder-id
) Yandex.Cloud; - ከ Yandex.Cloud API ጋር ለመገናኘት የአገልግሎት መለያ። በማኒፌስቶው ውስጥ
Secret
አስፈላጊ ነውየተፈቀዱ ቁልፎችን ማስተላለፍ ከአገልግሎት መለያው. በሰነዱ ውስጥተገል describedል የአገልግሎት መለያ እንዴት መፍጠር እና ቁልፎችን ማግኘት እንደሚቻል።
የእርስዎን አስተያየት ለመቀበል ደስተኞች ነን እና
ውጤቶች
ባለፉት ሁለት ሳምንታት የተተገበረውን CCM በአምስት የኩበርኔትስ ክላስተር እየተጠቀምን ሲሆን በሚቀጥለው ወር ቁጥራቸውን ወደ 20 ለማድረስ አቅደናል። በአሁኑ ጊዜ CCM ለትልቅ እና ወሳኝ የK8s ጭነቶች እንዲጠቀሙ አንመክርም።
እንደ CSI ሁኔታ ፣ የ Yandex ገንቢዎች የዚህን ፕሮጀክት ልማት እና ድጋፍ ከወሰዱ ደስተኞች ነን - ለእኛ የበለጠ ተዛማጅነት ያላቸውን ተግባራት ለመቋቋም በጥያቄያቸው መሠረት ማከማቻውን ለማስተላለፍ ዝግጁ ነን ።
PS
በብሎጋችን ላይ ያንብቡ፡-
- «
በኩበርኔትስ ለYandex.Cloud የCSI ሾፌርን የማዘጋጀት ልምዳችን "; - «
የኩበርኔትስ ክላስተር ለማዘጋጀት ቀላል እና ምቹ ነው? አድዶን ኦፕሬተርን ማስታወቅ "; - «
Kubernetes ማስፋፋት እና ማሟያ (የግምገማ እና የቪዲዮ ዘገባ) ».
ምንጭ: hab.com