Pinterest ላይ kubernetes መድረክ መፍጠር

ባለፉት አመታት የፒንቴሬስት 300 ሚሊዮን ተጠቃሚዎች ከ200 ቢሊዮን በላይ ፒን ከ4 ቢሊዮን በላይ ቦርዶች ፈጥረዋል። ይህንን የተጠቃሚዎችን ሰራዊት እና ሰፊ የይዘት መሰረትን ለማገልገል ፖርታሉ በሺዎች የሚቆጠሩ አገልግሎቶችን አዘጋጅቷል፣ በጥቂት ሲፒዩዎች ሊያዙ ከሚችሉ ማይክሮ ሰርቪስ እስከ ግዙፍ ሞኖሊቶች ድረስ በአጠቃላይ በቨርቹዋል ማሽኖች ላይ የሚሰሩ። እና ከዚያ የኩባንያው ዓይኖች በ k8s ላይ የወደቀበት ጊዜ መጣ። "ኩብ" በ Pinterest ላይ ለምን ጥሩ መስሎ ታየ? ስለዚህ ጉዳይ በቅርብ ጊዜ ከተተረጎመው ጽሑፍ ይማራሉ ብሎግ Pinterest መፈልሰፍ.

Pinterest ላይ kubernetes መድረክ መፍጠር

ስለዚህ፣ በመቶ ሚሊዮኖች የሚቆጠሩ ተጠቃሚዎች እና በመቶ ቢሊዮን የሚቆጠሩ ፒኖች። ይህንን የተጠቃሚዎች ሰራዊት እና ሰፊ የይዘት መሰረትን ለማገልገል፣ በጥቂት ሲፒዩዎች ሊያዙ ከሚችሉ ማይክሮ ሰርቪስ እስከ ግዙፍ ሞኖሊቶች ድረስ በሺዎች የሚቆጠሩ አገልግሎቶችን ገንብተናል። በተጨማሪም፣ ሲፒዩ፣ ሚሞሪ ወይም I/O መዳረሻ ሊፈልጉ የሚችሉ የተለያዩ ማዕቀፎች አሉን።

ይህንን የእንስሳት መካነ አራዊት በመንከባከብ፣የልማት ቡድኑ በርካታ ችግሮች ያጋጥሙታል።

  • መሐንዲሶች የምርት አካባቢን የሚመሩበት ወጥ የሆነ መንገድ የለም። ሀገር አልባ አገልግሎቶች፣ የመንግስት አገልግሎቶች እና በንቃት ልማት ላይ ያሉ ፕሮጀክቶች ሙሉ በሙሉ በተለያዩ የቴክኖሎጂ ቁልል ላይ የተመሰረቱ ናቸው። ይህ ለኢንጂነሮች አጠቃላይ የሥልጠና ኮርስ እንዲፈጠር ምክንያት ሆኗል፣ እንዲሁም የመሠረተ ልማት ቡድናችንን ሼል በእጅጉ አወሳሰበው።
  • የራሳቸው የቨርችዋል ማሽን ያላቸው ገንቢዎች በውስጥ አስተዳዳሪዎች ላይ ትልቅ ሸክም ይፈጥራሉ። በውጤቱም፣ ስርዓተ ክወናውን ወይም ኤኤምአይን ማዘመንን የመሳሰሉ ቀላል ስራዎች ሳምንታት እና ወራትን ይወስዳሉ። ይህ ፍፁም በሚመስሉ የዕለት ተዕለት ሁኔታዎች ውስጥ የሥራ ጫና እንዲጨምር ያደርጋል።
  • አሁን ባሉት መፍትሄዎች ላይ አለምአቀፍ የመሠረተ ልማት አስተዳደር መሳሪያዎችን ለመፍጠር ችግሮች. የቨርቹዋል ማሽኖችን ባለቤቶች ማግኘት ቀላል ባለመሆኑ ሁኔታው ​​​​ይበልጥ የተወሳሰበ ነው. ማለትም፣ ይህ አቅም በአስተማማኝ ሁኔታ በሌሎች የመሠረተ ልማት ክፍሎቻችን ውስጥ ለመስራት ይቻል እንደሆነ አናውቅም።

የኮንቴይነር ኦርኬስትራ ስርዓቶች የስራ ጫና አስተዳደርን አንድ የሚያደርጋቸው መንገዶች ናቸው። በፕሮጀክቱ ውስጥ የተካተቱት ሁሉም ሀብቶች በአንድ የተማከለ ስርዓት ስለሚመሩ የእድገት ፍጥነት እንዲጨምር በር ይከፍታሉ እና የመሰረተ ልማት አያያዝን ያቃልላሉ።

Pinterest ላይ kubernetes መድረክ መፍጠር

ምስል 1: የመሠረተ ልማት ቅድሚያዎች (አስተማማኝነት, የገንቢ ምርታማነት እና ቅልጥፍና).

በPinterest የሚገኘው የክላውድ አስተዳደር መድረክ ቡድን በ8 K2017s አግኝቷል። በ2017 የመጀመሪያ አጋማሽ ኤፒአይን እና ሁሉንም የድር አገልጋዮቻችንን ጨምሮ አብዛኛዎቹን የማምረት አቅማችንን መዝግበናል። በመቀጠልም ኮንቴይነር መፍትሄዎችን ለማቀናጀት፣ ክላስተር ለመገንባት እና ከእነሱ ጋር ለመስራት የተለያዩ ስርዓቶችን በጥልቀት ገምግመናል። በ 2017 መገባደጃ ላይ, Kubernetes ን ለመጠቀም ወሰንን. በጣም ተለዋዋጭ እና በገንቢው ማህበረሰብ ውስጥ በሰፊው የሚደገፍ ነበር።

እስከዛሬ በኮፕስ ላይ በመመስረት የራሳችንን የክላስተር ማስነሻ መሳሪያዎችን ገንብተናል እና ነባር የመሠረተ ልማት ክፍሎችን እንደ ኔትዎርኪንግ፣ ሴኪዩሪቲ፣ ሜትሪክስ፣ ሎግንግ፣ የማንነት አስተዳደር እና ትራፊክ ወደ ኩበርኔትስ ሄድን። ለሀብታችን የስራ ጫና ሞዴል አሰራርን ተግባራዊ አድርገናል፣ ውስብስብነቱ ከገንቢዎች የተደበቀ ነው። አሁን ትኩረታችን የክላስተርን መረጋጋት በማረጋገጥ፣ በማስፋት እና አዳዲስ ደንበኞችን በማገናኘት ላይ ነው።

ኩበርኔትስ፡ የፒንቴሬስት መንገድ

የኛ መሐንዲሶች የሚወዱት መድረክ ሆኖ በ Pinterest ሚዛን በኩበርኔትስ መጀመር ብዙ ፈተናዎችን ይዞ መጥቷል።

እንደ ትልቅ ኩባንያ በመሠረተ ልማት መሳሪያዎች ላይ ብዙ ኢንቨስት አድርገናል። ምሳሌዎች የምስክር ወረቀት ማቀናበር እና ቁልፍ ስርጭትን ፣ የትራፊክ መቆጣጠሪያ ክፍሎችን ፣ የአገልግሎት ማግኛ ስርዓቶችን ፣ የታይነት ክፍሎችን እና የሎግ እና ሜትሪክስ መላኪያ ክፍሎችን የሚያካትቱ የደህንነት መሳሪያዎች ያካትታሉ። ይህ ሁሉ የተሰበሰበው በምክንያት ነው-በተለመደው የሙከራ እና የስህተት መንገድ አልፈን ነበር ፣ እና ስለሆነም ይህንን ሁሉ መሳሪያ በአዲስ መድረክ ላይ የድሮውን መንኮራኩር ከመፍጠር ይልቅ በ Kubernetes ላይ በአዲሱ መሠረተ ልማት ውስጥ ማዋሃድ እንፈልጋለን። ሁሉም የማመልከቻ ድጋፍ ቀድሞውኑ ስላለ እና ከባዶ መፈጠር ስለማያስፈልገው ይህ አካሄድ በአጠቃላይ ፍልሰትን ቀለል አድርጎታል።

በሌላ በኩል በኩበርኔትስ ውስጥ ያለው የጭነት ትንበያ ሞዴሎች (እንደ ማሰማራት, ስራዎች እና የ Daemon ስብስቦች ያሉ) ለፕሮጀክታችን በቂ አይደሉም. እነዚህ የአጠቃቀም ችግሮች ወደ ኩበርኔትስ ለመሄድ ትልቅ እንቅፋት ናቸው። ለምሳሌ የአገልግሎት ገንቢዎች ስለጠፉ ወይም የተሳሳተ የመግቢያ ቅንብሮች ሲያጉረመርሙ ሰምተናል። በመቶዎች የሚቆጠሩ ቅጂዎች በተመሳሳዩ ዝርዝር መግለጫ እና ተግባር ሲፈጠሩ የተሳሳተ የአብነት ሞተሮችን አጠቃቀምም አጋጥሞናል፣ ይህም የቅዠት ማረም ችግሮች አስከትሏል።

በተመሳሳይ ዘለላ ውስጥ የተለያዩ ስሪቶችን ማቆየትም በጣም ከባድ ነበር። በተመሳሳዩ የሩጫ አከባቢ በበርካታ ስሪቶች ውስጥ በተመሳሳይ ጊዜ በሁሉም ችግሮች ፣ ስህተቶች እና ዝመናዎች መስራት ከፈለጉ የደንበኛ ድጋፍን ውስብስብነት ያስቡ።

የ Pinterest የተጠቃሚ ባህሪያት እና ተቆጣጣሪዎች

የእኛ መሐንዲሶች Kubernetesን ተግባራዊ ለማድረግ ቀላል ለማድረግ እና መሠረተ ልማታችንን ለማቃለል እና ለማፋጠን የራሳችንን ብጁ የመረጃ ፍቺዎች (ሲአርዲዎች) አዘጋጅተናል።

ሲአርዲዎች የሚከተሉትን ተግባራት ይሰጣሉ፡-

  1. እንደ ነጠላ የሥራ ጫና እንዲሠሩ የተለያዩ የኩበርኔትስ ሀብቶችን በማጣመር። ለምሳሌ፣ የPinterestService ግብአት ማሰማራትን፣ የመግቢያ አገልግሎትን እና የውቅረት ካርታን ያካትታል። ይህ ገንቢዎች ዲኤንኤስን ስለማዋቀር እንዳይጨነቁ ያስችላቸዋል።
  2. አስፈላጊ የመተግበሪያ ድጋፍን ተግባራዊ ያድርጉ። ተጠቃሚው በንግድ ስራ አመክንዮአቸው መሰረት በእቃ መያዣው ዝርዝር ላይ ብቻ ማተኮር ይኖርበታል፣ የሲአርዲ መቆጣጠሪያው ሁሉንም አስፈላጊ የኢንቴት ኮንቴይነሮችን፣ የአካባቢ ተለዋዋጮችን እና የፖድ ዝርዝሮችን ተግባራዊ ያደርጋል። ይህ ለገንቢዎች በመሠረቱ የተለየ ደረጃን ይሰጣል.
  3. የሲአርዲ ተቆጣጣሪዎች የሀገር በቀል ሀብቶችን የህይወት ኡደት ያስተዳድራሉ እና የአርም ተገኝነትን ያሻሽላሉ። ይህ የሚፈለጉትን እና ትክክለኛ ዝርዝሮችን ማስታረቅ፣ የCRD ሁኔታን ማዘመን እና የክስተት ምዝግብ ማስታወሻዎችን መጠበቅ እና ሌሎችንም ያካትታል። CRD ከሌለ ገንቢዎች ብዙ ሀብቶችን እንዲያስተዳድሩ ይገደዳሉ፣ ይህም የስህተት እድልን ብቻ ይጨምራል።

የPinterestService እና በእኛ ተቆጣጣሪ የሚተዳደር የውስጥ ግብዓት ምሳሌ እዚህ አለ፡-

Pinterest ላይ kubernetes መድረክ መፍጠር

ከላይ እንደሚታየው፣ ብጁ ኮንቴይነርን ለመደገፍ ደህንነትን፣ ታይነትን እና የአውታረ መረብ ትራፊክን ለማቅረብ የኢንት ኮንቴይነር እና በርካታ ተጨማሪዎችን ማዋሃድ አለብን። በተጨማሪም የማዋቀር ካርታ አብነቶችን ፈጠርን እና ለቡድን ስራዎች የ PVC አብነቶች ድጋፍን ተግባራዊ አድርገናል፣ እንዲሁም ማንነትን፣ የሀብት አጠቃቀምን እና የቆሻሻ አሰባሰብን ለመከታተል በርካታ የአካባቢ ተለዋዋጮችን እንከታተላለን።

አወቃቀሮችን የበለጠ ለመጠገን እና ለማረም ይቅርና ያለ CRD ድጋፍ ገንቢዎች እነዚህን የውቅረት ፋይሎች በእጅ ሊጽፉ እንደሚችሉ መገመት ከባድ ነው።

የመተግበሪያ ማሰማራት የስራ ፍሰት

Pinterest ላይ kubernetes መድረክ መፍጠር

ከላይ ያለው ምስል የPinterest ብጁ ግብዓትን ወደ ኩበርኔትስ ክላስተር እንዴት ማሰማራት እንደሚቻል ያሳያል፡-

  1. ገንቢዎች በCLI እና በተጠቃሚ በይነገጽ በኩል ከKubernetes ክላስተር ጋር ይገናኛሉ።
  2. የCLI/UI መሳሪያዎች የስራ ፍሰት አወቃቀሩን YAML ፋይሎችን እና ሌሎች የግንባታ ባህሪያትን (ተመሳሳይ ስሪት መታወቂያ) ከአርቲፊክተሪ ሰርስረው አውጥተው ለስራ ማስረከቢያ አገልግሎት ያስረክባሉ። ይህ እርምጃ የምርት ስሪቶች ብቻ ወደ ክላስተር መድረሱን ያረጋግጣል።
  3. JSS ኩበርኔትስን ጨምሮ ለተለያዩ መድረኮች መግቢያ በር ነው። እዚህ ተጠቃሚው ተረጋግጧል፣ ኮታዎች ተሰጥተዋል እና የCRD ውቅር በከፊል ተረጋግጧል።
  4. በJSS በኩል ሲአርዲውን ካጣራ በኋላ መረጃው ወደ k8s መድረክ ኤፒአይ ይላካል።
  5. የእኛ የሲአርዲ መቆጣጠሪያ በሁሉም የተጠቃሚ ሀብቶች ላይ ክስተቶችን ይከታተላል። በኮንቴይነር የተቀመጡ የተጠቃሚ አፕሊኬሽኖች በቂ የመሠረተ ልማት ድጋፍ እንዲኖራቸው ለማድረግ CRsን ወደ ቤተኛ k8s ሀብቶች ይለውጣል፣ አስፈላጊዎቹን ሞጁሎች ይጨምራል፣ ተገቢ የአካባቢ ተለዋዋጮችን ያዘጋጃል እና ሌሎች የድጋፍ ስራዎችን ያከናውናል።
  6. የ CRD መቆጣጠሪያው የተቀበለውን መረጃ ወደ Kubernetes ኤፒአይ ያስተላልፋል ይህም በጊዜ ሰሌዳው እንዲሰራ እና ወደ ምርት እንዲገባ ያደርጋል።

አመለከተይህ የቅድመ-መለቀቅ የስራ ፍሰት የማሰማራቱ ስራ የተፈጠረው ለአዲሱ k8s መድረክ ለመጀመሪያዎቹ ተጠቃሚዎች ነው። በአሁኑ ጊዜ ይህንን ሂደት ከአዲሱ CI/ሲዲ ጋር ሙሉ ለሙሉ ለማዋሃድ በማጣራት ላይ ነን። ይህ ማለት ከኩበርኔትስ ጋር የተያያዙ ሁሉንም ነገሮች ልንነግርዎ አንችልም. የኛን ልምድ እና የቡድኑን እድገት በዚህ አቅጣጫ በሚቀጥለው የብሎግ ልኡክ ጽሁፍ “CI/CD platform for Pinterest መገንባት” ለማካፈል እንጠባበቃለን።

የልዩ ሀብቶች ዓይነቶች

በPinterest ልዩ ፍላጎቶች ላይ በመመስረት ፣የተለያዩ የስራ ሂደቶችን ለማስማማት የሚከተሉትን ሲአርዲዎች አዘጋጅተናል።

  • PinterestService አገር አልባ አገልግሎቶች ሲሆኑ ለረጅም ጊዜ ሲሠሊ የቆዩ ናቸው። አብዛኛዎቹ የእኛ ዋና ስርዓቶች በእንደዚህ አይነት አገልግሎቶች ስብስብ ላይ የተመሰረቱ ናቸው.
  • PinterestJobSet የሙሉ ሳይክል ባች ስራዎችን ይቀርፃል። በ Pinterest ላይ የተለመደው ሁኔታ ሌሎች ተመሳሳይ ሂደቶች ምንም ቢሆኑም ብዙ ስራዎች ተመሳሳይ መያዣዎችን በትይዩ ይሰራሉ.
  • PinterestCronJob ከትንሽ ወቅታዊ ጭነቶች ጋር በጥምረት በሰፊው ጥቅም ላይ ይውላል። ይህ ለደህንነት ፣ ትራፊክ ፣ ሎግ እና ሜትሪክስ ኃላፊነት ከሚወስዱ የ Pinterest ድጋፍ ዘዴዎች ጋር ለ ቤተኛ ክሮን ሼል መጠቅለያ ነው።
  • PinterestDaemon መሠረተ ልማት ዴሞንን ያካትታል። ወደ ዘለላዎቻችን ተጨማሪ ድጋፍ ስንጨምር ይህ ቤተሰብ ማደጉን ይቀጥላል።
  • PinterestTrainingJob ወደ Tensorflow እና Pytorch ሂደቶች ይዘልቃል፣ይህም እንደሌሎች ሲአርዲዎች ተመሳሳይ የአሂድ ጊዜ ድጋፍ ይሰጣል። Pinterest Tensorflow እና ሌሎች የማሽን መማሪያ ስርዓቶችን በንቃት ስለሚጠቀም፣ በዙሪያቸው የተለየ ሲአርዲ ለመገንባት ምክንያት ነበረን።

እንዲሁም በPinterestStatefulSet ላይ እየሰራን ነው፣ እሱም በቅርቡ ለመረጃ መጋዘኖች እና ለሌሎች መንግስታዊ ስርዓቶች የሚስማማ ይሆናል።

የአሂድ ጊዜ ድጋፍ

አፕሊኬሽን ፖድ በኩበርኔትስ ላይ ሲሰራ እራሱን ለመለየት ሰርተፍኬት በራስ ሰር ይቀበላል። ይህ የምስክር ወረቀት ሚስጥራዊ ማከማቻን ለመድረስ ወይም ከሌሎች አገልግሎቶች ጋር በmTLS በኩል ለመገናኘት ስራ ላይ ይውላል። ይህ በእንዲህ እንዳለ፣ የኮንቴይነር ኢንት ኮንፊገሬተር እና ዴሞን በኮንቴይነር የተያዘውን መተግበሪያ ከማስኬድዎ በፊት ሁሉንም አስፈላጊ ጥገኞች ያወርዳሉ። ሁሉም ነገር ዝግጁ ሲሆን ደንበኞቻቸው እንዲያውቁት የትራፊክ መኪናው እና ዴሞን የሞጁሉን አይፒ አድራሻ ከ Zookeeper ጋር ይመዘግባሉ። ይህ ሁሉ ተግባራዊ ይሆናል ምክንያቱም የአውታረ መረብ ሞጁል አፕሊኬሽኑ ከመጀመሩ በፊት ተዋቅሯል።

ከላይ ያሉት ለሥራ ጫናዎች የአሂድ ጊዜ ድጋፍ ዓይነተኛ ምሳሌዎች ናቸው። ሌሎች የሥራ ጫናዎች ትንሽ ለየት ያለ ድጋፍ ሊፈልጉ ይችላሉ፣ ነገር ግን ሁሉም በፖድ-ደረጃ የጎን መኪናዎች፣ በመስቀለኛ ደረጃ ወይም በቨርቹዋል ማሽን ደረጃ ዴሞንስ መልክ ይመጣሉ። ይህ ሁሉ በአስተዳደር መሠረተ ልማት ውስጥ መሰማራቱን እና በሁሉም አፕሊኬሽኖች ውስጥ ወጥነት ያለው መሆኑን እናረጋግጣለን, ይህም በመጨረሻም በቴክኒካዊ ስራ እና የደንበኛ ድጋፍ ሸክሙን በእጅጉ ይቀንሳል.

ሙከራ እና QA

አሁን ባለው የኩበርኔትስ የሙከራ መሠረተ ልማት ላይ ከጫፍ እስከ ጫፍ የሙከራ ቧንቧ ገንብተናል። እነዚህ ፈተናዎች በሁሉም ዘለላዎቻችን ላይ ተፈጻሚ ይሆናሉ። የቧንቧ መስመራችን የምርት ክላስተር አካል ከመሆኑ በፊት ብዙ ክለሳዎችን አልፏል።

ከሙከራ ስርዓቶች በተጨማሪ የስርዓት አካላትን ፣የሀብትን ፍጆታ እና ሌሎች አስፈላጊ አመልካቾችን ሁኔታ በቋሚነት የሚቆጣጠሩ ፣የሰው ጣልቃገብነት አስፈላጊ በሚሆንበት ጊዜ ብቻ የሚያሳውቁን የክትትል እና የማንቂያ ስርዓቶች አሉን።

አማራጮች

እንደ ሚውቴሽን መዳረሻ ተቆጣጣሪዎች እና የአብነት ስርዓቶች ካሉ ከብጁ ሀብቶች አንዳንድ አማራጮችን ተመልክተናል። ሆኖም ግን፣ ሁሉም ከጉልህ የተግባር ተግዳሮቶች ጋር ይመጣሉ፣ ስለዚህ የCRD መንገድን መርጠናል::

የሚውቴሽናል መግቢያ መቆጣጠሪያ የጎን መኪናዎችን፣ የአካባቢ ተለዋዋጮችን እና ሌሎች የአሂድ ጊዜ ድጋፍን ለማስተዋወቅ ጥቅም ላይ ውሏል። ነገር ግን፣ በሲአርዲ ውስጥ እንደዚህ አይነት ችግሮች የማይከሰቱ እንደ ሃብት ትስስር እና የህይወት ኡደት አስተዳደር ያሉ የተለያዩ ችግሮች አጋጥመውታል።

ማስታወሻ: እንደ Helm ገበታዎች ያሉ የአብነት ስርዓቶች ተመሳሳይ ውቅረቶች ያላቸውን መተግበሪያዎች ለማሄድ በሰፊው ጥቅም ላይ ይውላሉ። ነገር ግን፣ የእኛ የስራ መተግበሪያ አብነቶችን በመጠቀም ለማስተዳደር በጣም የተለያዩ ናቸው። እንዲሁም በተከታታይ በሚሰማሩበት ጊዜ አብነቶችን ሲጠቀሙ በጣም ብዙ ስህተቶች ይኖራሉ።

መጪ ሥራ

በአሁኑ ጊዜ በሁሉም ዘለላዎቻችን ላይ የተደባለቀ ጭነት እያስተናገድን ነው። የተለያዩ ዓይነቶች እና መጠኖች እንደዚህ ያሉ ሂደቶችን ለመደገፍ በሚከተሉት አካባቢዎች እንሰራለን-

  • የክላስተር ስብስብ ትልቅ አፕሊኬሽኖችን በተለያዩ ዘለላዎች ያከፋፍላል።
  • የመተግበሪያ ግኑኝነትን እና SLAዎችን ለመፍጠር የክላስተር መረጋጋትን፣ መለካት እና ታይነትን ማረጋገጥ።
  • አፕሊኬሽኖች እርስ በርሳቸው እንዳይጋጩ ሀብቶችን እና ኮታዎችን ማስተዳደር እና የክላስተር ሚዛን በእኛ በኩል ቁጥጥር ይደረግበታል።
  • በ Kubernetes ላይ መተግበሪያዎችን ለመደገፍ እና ለማሰማራት አዲስ CI/CD መድረክ።

ምንጭ: hab.com

አስተያየት ያክሉ