ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

ይህ ታሪክ ኮንቴይነሮችን በምርት አካባቢ በተለይም በኩበርኔትስ ስር እንዴት እንደምንጠቀም ነው። ጽሑፉ የሚለካው ከመያዣዎች ውስጥ መለኪያዎችን እና ምዝግቦችን እንዲሁም ምስሎችን በመገንባት ላይ ነው።

ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

እኛ የመስመር ላይ የንግድ አገልግሎቶችን እና የፊንቴክ ምርቶችን ለ B2B እና B2C የሚያዘጋጀው ከፊንቴክ ኩባንያ Exness ነን። በእኛ R&D ውስጥ ብዙ የተለያዩ ቡድኖች አሉ፣ በልማት ክፍል ውስጥ ከ100 በላይ ሰራተኞች።

እኛ በገንቢዎቻችን ኮድ ለመሰብሰብ እና ለማስኬድ መድረኩን ኃላፊነት የሚወስደውን ቡድን እንወክላለን። በተለይም መለኪያዎችን፣ ምዝግቦችን እና ዝግጅቶችን ከመተግበሪያዎች የመሰብሰብ፣ የማከማቸት እና የማቅረብ ሃላፊነት አለብን። በአሁኑ ጊዜ ወደ 50 የሚጠጉ ዶከር ኮንቴይነሮችን በማምረት እንሰራለን፣የኛን XNUMXTB ትልቅ የመረጃ ማከማቻ እንይዛለን እና በመሠረተ ልማታችን ዙሪያ የተገነቡ የስነ-ህንፃ መፍትሄዎችን እንሰጣለን-Kubernetes፣ Rancher እና የተለያዩ የህዝብ ደመና አቅራቢዎች። 

የእኛ ተነሳሽነት

በእሳት ላይ ምን አለ? ማንም መልስ መስጠት አይችልም. ምድጃው የት አለ? ለመረዳት አስቸጋሪ ነው. መቼ ነው የተቀጣጠለው? እርስዎ ማወቅ ይችላሉ, ነገር ግን ወዲያውኑ አይደለም. 

ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

አንዳንድ ኮንቴይነሮች ለምን ይቆማሉ ሌሎቹ ደግሞ ይወድቃሉ? የትኛው ኮንቴይነር ነው ጥፋተኛው? ከሁሉም በላይ, ከመያዣዎች ውጭ አንድ አይነት ናቸው, ግን በውስጡ ሁሉም ሰው የራሱ ኒዮ አለው.

ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

የእኛ ገንቢዎች ብልህ ሰዎች ናቸው። ለኩባንያው ትርፍ የሚያመጡ ጥሩ አገልግሎቶችን ይሰጣሉ. ነገር ግን አፕሊኬሽኖች ያላቸው ኮንቴይነሮች አጭበርባሪዎች ሲሆኑ ፋኩፖች አሉ። አንድ ኮንቴይነር በጣም ብዙ ሲፒዩ ይበላል ፣ ሌላኛው - አውታረ መረቡ ፣ ሶስተኛው - I / O ኦፕሬሽኖች ፣ አራተኛው በሶኬቶች ምን እንደሚሰራ ግልፅ አይደለም ። ይህ ሁሉ ይወድቃል, እናም መርከቧ ሰምጧል. 

ወኪሎች

በውስጡ ምን እየተፈጠረ እንዳለ ለመረዳት, ወኪሎችን በቀጥታ ወደ መያዣዎች ለማስገባት ወስነናል.

ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

እነዚህ ወኪሎች ኮንቴይነሮች እርስ በእርሳቸው እንዳይጣረሱ በሚያስችል ሁኔታ ውስጥ የሚቀመጡ የማከማቻ ፕሮግራሞች ናቸው. ኤጀንቶች ደረጃቸውን የጠበቁ ናቸው, እና ይህ የእቃ መያዢያ ዕቃዎችን ለማቅረብ አቀራረብን መደበኛ እንዲሆን ያስችልዎታል. 

በእኛ ሁኔታ ወኪሎች ምዝግብ ማስታወሻዎችን በመደበኛ ፎርማት, መለያ እና ስሮትል ማቅረብ አለባቸው. እንዲሁም ከንግድ አፕሊኬሽኖች አንፃር ሊራዘም የሚችል ደረጃቸውን የጠበቁ መለኪያዎች ሊሰጡን ይገባል።

ወኪሎች የተለያዩ ምስሎችን (ዴቢያን ፣ አልፓይን ፣ ሴንቶስ ፣ ወዘተ) በሚደግፉ የተለያዩ የኦርኬስትራ ሥርዓቶች ውስጥ ሊሠሩ የሚችሉ ለሥራ እና ለጥገና መገልገያዎች ማለት ነው።

በመጨረሻም፣ ወኪሎች Dockerfilesን ጨምሮ ቀላል CI/CDን መደገፍ አለባቸው። አለበለዚያ መርከቡ ይወድቃል, ምክንያቱም እቃዎቹ በ "ጠማማ" ሐዲዶች ላይ ስለሚደርሱ.

ሂደትን ይገንቡ እና የምስል መሣሪያን ያነጣጠሩ

ሁሉም ነገር ደረጃውን የጠበቀ እና የሚተዳደር እንዲሆን, አንዳንድ መደበኛ የግንባታ ሂደቶችን መከተል አለበት. ስለዚህ, ኮንቴይነሮችን በመያዣዎች ለመሰብሰብ ወሰንን - እንዲህ ዓይነቱ ድግግሞሽ ነው.

ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

እዚህ ኮንቴይነሮች በጠንካራ ንድፎች ይወከላሉ. በተመሳሳይ ጊዜ "ሕይወት እንደ እንጆሪ አይመስልም" እንዲሉ ማሰራጫዎችን በውስጣቸው ለማስቀመጥ ወሰንን. ይህ ለምን እንደተደረገ, ከዚህ በታች እንገልፃለን.
 
ውጤቱ የግንባታ መሳሪያ ነው፣ የተወሰነ የስርጭት ስሪቶችን እና የስክሪፕት ስሪቶችን የሚያመለክት ስሪት-ተኮር መያዣ ነው።

እንዴት ነው ተግባራዊ የምናደርገው? መያዣ የያዘ Docker Hub አለን። ውጫዊ ጥገኝነቶችን ለማስወገድ በስርዓታችን ውስጥ እናንጸባርቃለን. ውጤቱ በቢጫ ምልክት የተደረገበት መያዣ ነው. ወደ መያዣው ውስጥ የሚያስፈልገንን ሁሉንም ስርጭቶች እና ስክሪፕቶች ለመጫን አብነት እንፈጥራለን. ከዚያ በኋላ ለአገልግሎት ዝግጁ የሆነ ምስል እንሰበስባለን-ገንቢዎች ኮድ እና አንዳንድ ልዩ ጥገኛዎቻቸውን በእሱ ውስጥ ያስገቡ። 

ይህ አካሄድ ለምን ጥሩ ነው? 

  • በመጀመሪያ የግንባታ መሳሪያዎች ሙሉ ስሪት ቁጥጥር - ኮንቴይነር, ስክሪፕት እና የስርጭት ስሪቶች ይገንቡ. 
  • በሁለተኛ ደረጃ, ደረጃውን የጠበቀ ደረጃ ላይ ደርሰናል-በተመሳሳይ መንገድ አብነቶችን እንፈጥራለን, መካከለኛ እና ለአጠቃቀም ዝግጁ የሆኑ ምስሎች. 
  • በሶስተኛ ደረጃ ኮንቴይነሮች ተንቀሳቃሽነት ይሰጡናል. ዛሬ Gitlab እንጠቀማለን, እና ነገ ወደ TeamCity ወይም Jenkins እንለውጣለን እና እቃዎቻችንን በተመሳሳይ መንገድ ማካሄድ እንችላለን. 
  • አራተኛ፣ ጥገኝነት መቀነስ። ማሰራጫዎችን በእቃ መያዣው ውስጥ የምናስቀምጠው በአጋጣሚ አይደለም, ምክንያቱም ይህ ሁልጊዜ ከበይነመረቡ ላይ እንዳንወርድ ያስችለናል. 
  • አምስተኛ, የመሰብሰቢያው ፍጥነት ጨምሯል - የአካባቢያዊ ምስል ስላለ የአካባቢያዊ ምስሎች ቅጂዎች መኖራቸውን ለማውረድ ጊዜ እንዳያባክኑ ያስችልዎታል. 

በሌላ አነጋገር ቁጥጥር የሚደረግበት እና ተለዋዋጭ የመሰብሰቢያ ሂደት ደርሰናል. ሙሉ ለሙሉ የተዘጋጁ መያዣዎችን ለመገንባት ተመሳሳይ መሳሪያዎችን እንጠቀማለን. 

የእኛ የስብሰባ ሂደት እንዴት እንደሚሰራ

ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

ስብሰባው በአንድ ትዕዛዝ ተጀምሯል, ሂደቱ በምስሉ ውስጥ ይከናወናል (በቀይ ጎልቶ ይታያል). ገንቢው የዶከር ፋይል አለው (በቢጫ የደመቀ)፣ እናቀርበዋለን፣ ተለዋዋጮችን በእሴቶች በመተካት። እና በመንገዱ ላይ ራስጌዎችን እና ግርጌዎችን እንጨምራለን - እነዚህ ወኪሎቻችን ናቸው። 

ራስጌ ከተዛማጅ ምስሎች ስርጭቶችን ያክላል። እና ግርጌ አገልግሎቶቻችንን በውስጥ ይጭናል፣ የስራ ጫና መጀመርን፣ ሎግ እና ሌሎች ወኪሎችን ያዋቅራል፣ የመግቢያ ነጥቡን ይተካል። 

ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

ተቆጣጣሪ መጫን አለመኖሩን ለረጅም ጊዜ አስበን ነበር. በመጨረሻ, እኛ እንደሚያስፈልገን ወስነናል. S6 ን ይምረጡ። ተቆጣጣሪው የእቃ መያዢያ አስተዳደርን ያቀርባል-ዋናው ሂደት ከተበላሸ ከእሱ ጋር እንዲገናኙ ይፈቅድልዎታል እና እንደገና ሳይፈጥሩ በእጅ መያዣ አስተዳደር ያቀርባል. ምዝግብ ማስታወሻዎች እና መለኪያዎች በእቃ መያዣ ውስጥ የሚሰሩ ሂደቶች ናቸው. እንዲሁም በሆነ መንገድ ቁጥጥር ሊደረግባቸው ይገባል፣ እና ይህን የምናደርገው በተቆጣጣሪ እርዳታ ነው። በመጨረሻም, S6 የቤት አያያዝን, የሲግናል ማቀነባበሪያ እና ሌሎች ተግባራትን ይንከባከባል.

የተለያዩ የኦርኬስትራ ስርዓቶችን ስለምንጠቀም, ከተሰበሰበ እና ከተነሳ በኋላ, ኮንቴይነሩ በየትኛው አካባቢ ውስጥ እንዳለ ተረድቶ እንደ ሁኔታው ​​መንቀሳቀስ አለበት. ለምሳሌ:
ይህ አንድ ምስል እንድንገነባ እና በተለያዩ የኦርኬስትራ ስርዓቶች ውስጥ እንድንሰራ ያስችለናል, እና የዚህን ኦርኬስትራ ስርዓት ልዩ ሁኔታዎችን ከግምት ውስጥ በማስገባት ይጀምራል.

 áˆˆ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

ለተመሳሳይ መያዣ በዶከር እና ኩበርኔትስ ውስጥ የተለያዩ የሂደት ዛፎችን እናገኛለን

ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

ጭነቱ በ S6 ተቆጣጣሪ ሾር ነው የሚከናወነው። ለአሰባሳቢ እና ለክስተቶች ትኩረት ይስጡ - እነዚህ የምዝግብ ማስታወሻዎች እና መለኪያዎች ኃላፊነት ያላቸው ወኪሎቻችን ናቸው። ኩበርኔትስ የሉትም፣ ግን ዶከር አለው። ለምን? 

የ "ፖድ" (ከዚህ በኋላ - ኩበርኔትስ ፖድ) ዝርዝርን ከተመለከቱ, የዝግጅቶቹ መያዣ በፖድ ውስጥ ሲተገበር እናያለን, ይህም መለኪያዎችን እና ምዝግቦችን የመሰብሰብ ተግባርን የሚያከናውን የተለየ ሰብሳቢ መያዣ አለው. የኩበርኔትስ ባህሪያትን መጠቀም እንችላለን: መያዣዎችን በአንድ ፖድ ውስጥ, በአንድ ሂደት ውስጥ እና / ወይም የአውታረ መረብ ቦታን ማስኬድ. እንደ እውነቱ ከሆነ, ወኪሎቻቸውን ይተግብሩ እና አንዳንድ ተግባራትን ያከናውኑ. እና ተመሳሳይ ኮንቴይነር በዶከር ውስጥ ከተከፈተ ፣ እንደ ውፅዓት ሁሉም ተመሳሳይ ባህሪዎችን ያገኛል ፣ ማለትም ፣ ወኪሎቹ ወደ ውስጥ ስለሚገቡ ምዝግብ ማስታወሻዎችን እና መለኪያዎችን ማቅረብ ይችላል። 

መለኪያዎች እና ምዝግብ ማስታወሻዎች

መለኪያዎችን እና ምዝግብ ማስታወሻዎችን ማድረስ ከባድ ስራ ነው። የእሱ ውሳኔ በርካታ ገጽታዎች አሉት.
የመሠረተ ልማት አውታሮች የተፈጠረው ለክፍያው አፈፃፀም እንጂ ለጅምላ ሎግ ለማድረስ አይደለም። ያም ማለት ይህ ሂደት በትንሹ የእቃ መያዢያ መገልገያ መስፈርቶች መከናወን አለበት. አላማችን ገንቢዎቻችንን ለመርዳት ነው፡ "የDocker Hub መያዣን ያግኙ፣ ያሂዱት፣ እና መዝገቦቹን ማድረስ እንችላለን።" 

ሁለተኛው ገጽታ የምዝግብ ማስታወሻዎችን መጠን መገደብ ነው. የምዝግብ ማስታወሻዎች ብዛት መጨመር ሁኔታ በበርካታ ኮንቴይነሮች ውስጥ ከተከሰተ (መተግበሪያው በአንድ ዑደት ውስጥ ቁልል-ክትትል ያወጣል) ፣ በሲፒዩ ላይ ያለው ጭነት ፣ የግንኙነት ሰርጦች ፣ የምዝግብ ማስታወሻው ሂደት ይጨምራል ፣ እና ይህ በሂደቱ ላይ ተጽዕኖ ያሳድራል። በአጠቃላይ አስተናጋጅ እና ሌሎች መያዣዎች በአስተናጋጁ ላይ, ከዚያም አንዳንድ ጊዜ ይህ ወደ አስተናጋጁ "መውደቅ" ይመራል. 

ሶስተኛው ገጽታ ከሳጥኑ ውስጥ በተቻለ መጠን ብዙ መለኪያዎችን የመሰብሰብ ዘዴዎችን መደገፍ ያስፈልግዎታል. ፋይሎችን ከማንበብ እና የፕሮሜቲየስ-ፍጻሜ ነጥብን ወደ ልዩ የመተግበሪያ ፕሮቶኮሎች መጠቀም።

እና የመጨረሻው ገጽታ - የንብረት ፍጆታን መቀነስ አስፈላጊ ነው.

ቴሌግራፍ የሚባል የክፍት ምንጭ Go መፍትሄን መርጠናል:: ይህ ከ140 በላይ የግቤት ቻናሎችን (የግቤት ተሰኪዎችን) እና 30 አይነት የውጤት ቻናሎችን (የውጤት ተሰኪዎችን) የሚደግፍ ሁለንተናዊ ማገናኛ ነው። ጨርሰነዋል እና አሁን ኩበርኔትስን እንደ ምሳሌ በመጠቀም እንዴት እንደምንጠቀም እንነግርዎታለን. 

ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

አንድ ገንቢ ሸክም ያሰማራል እና ኩበርኔትስ ፖድ ለመፍጠር ጥያቄ ተቀበለ እንበል። በዚህ ጊዜ ሰብሳቢ የሚባል መያዣ ለእያንዳንዱ ፖድ በራስ ሰር ይፈጠራል (ሚውቴሽን ዌብ መንጠቆን እንጠቀማለን)። ሰብሳቢው ወኪላችን ነው። በመነሻው ላይ, ይህ ኮንቴይነር እራሱን ከፕሮሜቲየስ እና ከመመዝገቢያ ስርዓት ጋር ለመስራት ያዘጋጃል.

  • ይህንን ለማድረግ, የፖድ ማብራሪያዎችን ይጠቀማል, እና እንደ ይዘቱ, የፍጻሜ ነጥብ ፕሮሜቲየስን ይፈጥራል. 
  • በፖድ ስፔሲፊኬሽን እና በተወሰኑ የእቃ መጫኛ ቅንጅቶች ላይ በመመስረት, ምዝግብ ማስታወሻዎችን እንዴት እንደሚያቀርቡ ይወስናል.

ምዝግብ ማስታወሻዎችን በDocker API በኩል እንሰበስባለን፡ ገንቢዎች በ stdout ወይም stderr ውስጥ ማስቀመጥ ብቻ ነው የሚያስፈልጋቸው እና ከዚያ ሰብሳቢው ያውቀዋል። ምዝግብ ማስታወሻዎች የሚሰበሰቡት ከተወሰነ መዘግየት ጋር በመሆን የአስተናጋጁን ጫና ለመከላከል ነው። 

መለኪያዎች የሚሰበሰቡት በመያዣዎች ውስጥ ባሉ የስራ ጫና ሁኔታዎች (ሂደቶች) ነው። ሁሉም ነገር በመለያዎች: ስም ቦታ, ፖድ እና የመሳሰሉት, ከዚያም ወደ ፕሮሜቲየስ ቅርጸት ተቀይሯል - እና ለመሰብሰብ ይገኛል (ከሎግ በስተቀር). እንዲሁም፣ መዝገቦችን፣ መለኪያዎችን እና ዝግጅቶችን ወደ ካፍካ እና ተጨማሪ እንልካለን።

  • ምዝግብ ማስታወሻዎች በግራይሎግ ውስጥ ይገኛሉ (ለእይታ ትንተና);
  • ምዝግብ ማስታወሻዎች፣ መለኪያዎች፣ ክስተቶች ለረጅም ጊዜ ማከማቻ ወደ Clickhouse ይላካሉ።

ሁሉም ነገር በትክክል በAWS ውስጥ ይሰራል፣ እኛ ብቻ ግሬይሎግን ከካፍካ በ Cloudwatch እንተካለን። ምዝግቦችን ወደዚያ እንልካለን, እና ሁሉም ነገር በጣም ምቹ በሆነ ሁኔታ ይለወጣል: የትኛው ክላስተር እና መያዣ እንደያዙ ወዲያውኑ ግልጽ ነው. ለ Google Stackdriver ተመሳሳይ ነው. ያም ማለት የእኛ እቅድ በካፍካ እና በደመና ውስጥ ሁለቱንም በቅድመ-ገጽ ላይ ይሰራል. 

ኩበርኔትስ በፖዳዎች ከሌለን, እቅዱ ትንሽ የተወሳሰበ ነው, ነገር ግን በተመሳሳይ መርሆች መሰረት ይሰራል.

ለ k8s ለማምረት ዝግጁ የሆኑ ምስሎች

በመያዣው ውስጥ, ተመሳሳይ ሂደቶች ይከናወናሉ, S6 ን በመጠቀም ይደረደራሉ. ሁሉም ተመሳሳይ ሂደቶች በአንድ መያዣ ውስጥ ይሰራሉ.

በዚህም ምክንያት,

የምዝግብ ማስታወሻዎችን እና መለኪያዎችን ለመሰብሰብ እና ለማድረስ አማራጮችን በመጠቀም ምስሎችን ለመስራት እና ለማስኬድ የተሟላ መፍትሄ ፈጠርን-

  • ምስሎችን ለመገንባት ደረጃውን የጠበቀ አቀራረብ አዘጋጅተናል, በእሱ ላይ በመመስረት የ CI አብነቶችን አዘጋጅተናል;
  • የመረጃ አሰባሰብ ወኪሎች የቴሌግራፍ ቅጥያዎቻችን ናቸው። እኛ በማምረት ውስጥ በደንብ ፈትነናቸው;
  • ሚውቴሽን ዌብ መንጠቆን እንጠቀማለን ኮንቴይነሮችን በፖዳዎች ውስጥ ከተወካዮች ጋር በመርፌ። 
  • በ Kubernetes/Rancher ስነ-ምህዳር ውስጥ የተዋሃደ;
  • በተለያዩ የኦርኬስትራ ስርዓቶች ውስጥ ተመሳሳይ መያዣዎችን መፈጸም እና የምንጠብቀውን ውጤት ማግኘት እንችላለን;
  • ሙሉ በሙሉ ተለዋዋጭ የመያዣ አስተዳደር ውቅር ፈጥሯል። 

ተባባሪ ደራሲ፡ ኢሊያ ፕሩድኒኮቭ

ምንጭ: hab.com

አስተያየት ያክሉ