Kubernetes: የሲፒዩ ገደቦችን በማስወገድ አገልግሎቶችዎን ያፋጥኑ

ወደ 2016 ተመለስን በ Buffer ወደ ኩበርኔትስ ተቀይሯልእና አሁን ወደ 60 የሚጠጉ ኖዶች (በAWS) እና 1500 ኮንቴይነሮች በእኛ k8s ክላስተር የሚተዳደረው ኮፕስ. ነገር ግን፣ በሙከራ እና በስህተት ወደ ማይክሮ ሰርቪስ ተንቀሳቅሰናል፣ እና ከበርካታ አመታት ከ k8s ጋር ከሰራን በኋላም አሁንም አዳዲስ ችግሮች እያጋጠሙን ነው። በዚህ ጽሑፍ ውስጥ እንነጋገራለን የማቀነባበሪያ ገደቦችለምን ጥሩ ልምምድ እንደሆኑ እና ለምን ጥሩ እንዳልሆኑ አስበው ነበር።

የአቀነባባሪ ገደቦች እና ስሮትሊንግ

ልክ እንደሌሎች የኩበርኔትስ ተጠቃሚዎች፣ ጉግል የሲፒዩ ገደቦችን ማቀናበር በጣም ይመክራል።. እንደዚህ አይነት ቅንብር ከሌለ በመስቀለኛ መንገድ ውስጥ ያሉ መያዣዎች ሁሉንም የማቀነባበሪያውን ኃይል ሊወስዱ ይችላሉ, ይህ ደግሞ አስፈላጊ የኩበርኔትስ ሂደቶችን ያስከትላል (ለምሳሌ. kubelet) ለጥያቄዎች ምላሽ መስጠት ያቆማል። ስለዚህ የሲፒዩ ገደቦችን ማቀናበር ኖዶችዎን ለመጠበቅ ጥሩ መንገድ ነው።

የአቀነባባሪ ገደቦች ለተወሰነ ጊዜ ሊጠቀምበት ከሚችለው ከፍተኛው የሲፒዩ ጊዜ (ነባሪው 100ms ነው) እና መያዣው ከዚህ ገደብ ፈጽሞ አይበልጥም። በኩበርኔትስ ለ ስሮትልንግ መያዣ እና ከገደቡ በላይ እንዳይሆን ይከላከሉ, ልዩ መሣሪያ ጥቅም ላይ ይውላል የሲኤፍኤስ ኮታነገር ግን እነዚህ አርቲፊሻል ሲፒዩ ገደቦች መጨረሻው አፈፃፀሙን ይጎዳሉ እና የእቃ መያዣዎ ምላሽ ጊዜ ይጨምራሉ።

የማቀነባበሪያ ገደቦችን ካላስቀመጥን ምን ሊፈጠር ይችላል?

እንደ አለመታደል ሆኖ እኛ ራሳችን ይህንን ችግር መጋፈጥ ነበረብን። እያንዳንዱ መስቀለኛ መንገድ መያዣዎችን የማስተዳደር ኃላፊነት ያለው ሂደት አለው kubelet, እና ለጥያቄዎች ምላሽ መስጠት አቆመ. መስቀለኛ መንገድ, ይህ በሚሆንበት ጊዜ, ወደ ግዛት ይገባል NotReady, እና ከእሱ የሚገኙ መያዣዎች ወደ ሌላ ቦታ እንዲዘዋወሩ እና በአዲስ አንጓዎች ላይ ተመሳሳይ ችግሮች ይፈጥራሉ. ቢያንስ ጥሩ ሁኔታ አይደለም።

የስሮትል እና ምላሽ ችግር መገለጫ

የመያዣ ክትትል ቁልፍ መለኪያ ነው። trottlingመያዣዎ ስንት ጊዜ እንደተዘጋ ያሳያል። የማቀነባበሪያው ጭነት ጽንፍ ቢሆንም ባይሆንም በአንዳንድ ኮንቴይነሮች ውስጥ ስሮትል መኖሩን በፍላጎት አስተውለናል። እንደ ምሳሌ፣ ከዋና ዋና ኤፒአይዎቻችን አንዱን እንይ፡-

Kubernetes: የሲፒዩ ገደቦችን በማስወገድ አገልግሎቶችዎን ያፋጥኑ

ከዚህ በታች እንደምታዩት ገደቡን አዘጋጅተናል 800m (0.8 ወይም 80% ኮር)፣ እና ከፍተኛ ዋጋዎች በጥሩ ሁኔታ ላይ 200m (20% ኮር)። አገልግሎቱን ከመቀነሱ በፊት ብዙ ፕሮሰሰር ሃይል ያለን ይመስላል ፣ ግን…

Kubernetes: የሲፒዩ ገደቦችን በማስወገድ አገልግሎቶችዎን ያፋጥኑ
የማቀነባበሪያው ጭነት ከተጠቀሰው ገደብ በታች ቢሆንም እንኳ - ጉልህ በሆነ መልኩ ከታች - ስሮትል አሁንም እንደሚከሰት አስተውለው ይሆናል.

ይህን ሲያጋጥመን ብዙም ሳይቆይ ብዙ ሀብቶችን አገኘን (በ github ላይ ችግር, zadano ላይ አቀራረብ, omio ላይ ይለጥፉ) በመግፋት ምክንያት የአገልግሎቶች አፈጻጸም እና የምላሽ ጊዜ መቀነስ።

በዝቅተኛ የሲፒዩ ጭነት ላይ ስሮትል ለምን እናያለን? አጭሩ እትም፡- “በሊኑክስ ከርነል ውስጥ የተወሰነ የአቀነባባሪ ገደብ ያለው አላስፈላጊ የመያዣዎች መሰባበርን የሚፈጥር ስህተት አለ። የችግሩን ተፈጥሮ ፍላጎት ካሎት, አቀራረቡን ማንበብ ይችላሉ (видео и ጽሑፍ አማራጮች) በዴቭ ቺሉክ

የሲፒዩ ገደቦችን በማስወገድ ላይ (በከፍተኛ ጥንቃቄ)

ከረጅም ውይይቶች በኋላ የፕሮሰሰር ገደቦችን በቀጥታም ሆነ በተዘዋዋሪ ለተጠቃሚዎቻችን ወሳኝ ተግባር ላይ ተጽዕኖ ከሚያሳድሩ ሁሉም አገልግሎቶች ላይ ለማስወገድ ወስነናል።

የክላስተር መረጋጋትን ከፍ አድርገን ስለምንሰጠው ውሳኔው ቀላል አልነበረም። ቀደም ባሉት ጊዜያት በክላስተር አለመረጋጋት ሞክረን ነበር፣ እና ከዚያም አገልግሎቶቹ ብዙ ሀብቶችን ወስደዋል እና የሙሉ የመስቀለኛ መንገዳቸውን ስራ አዘገዩት። አሁን ሁሉም ነገር በተወሰነ መልኩ የተለየ ነበር፡ ከስብስቦቻችን የምንጠብቀውን ነገር በግልፅ ተረድተናል፣ እንዲሁም የታቀዱትን ለውጦች ተግባራዊ ለማድረግ ጥሩ ስልት ነበረን።

Kubernetes: የሲፒዩ ገደቦችን በማስወገድ አገልግሎቶችዎን ያፋጥኑ
አጣዳፊ ጉዳይ ላይ የንግድ ልውውጥ።

እገዳዎች በሚነሱበት ጊዜ አንጓዎችዎን እንዴት እንደሚከላከሉ?

"ያልተገደቡ" አገልግሎቶችን ማግለል;

ከዚህ ቀደም አንዳንድ አንጓዎች ወደ አንድ ግዛት ሲገቡ አይተናል notReadyበዋነኛነት ብዙ ሀብቶችን በወሰዱ አገልግሎቶች ምክንያት።

እንደነዚህ ያሉ አገልግሎቶችን በ "ተዛማጅ" አገልግሎቶች ውስጥ ጣልቃ እንዳይገቡ በተለየ ("የተሰየመ") ኖዶች ውስጥ ለማስቀመጥ ወስነናል. በውጤቱም ፣ አንዳንድ አንጓዎችን ምልክት በማድረግ እና የመቻቻል መለኪያውን ወደ “ያልተገናኙ” አገልግሎቶች በማከል በክላስተር ላይ የበለጠ ቁጥጥር አግኝተናል ፣ እና በአንጓዎች ላይ ያሉ ችግሮችን ለመለየት ቀላል ሆነልን። ተመሳሳይ ሂደቶችን እራስዎ ለማከናወን, እራስዎን በደንብ ማወቅ ይችላሉ ሰነዶች.

Kubernetes: የሲፒዩ ገደቦችን በማስወገድ አገልግሎቶችዎን ያፋጥኑ

ትክክለኛ ፕሮሰሰር እና የማህደረ ትውስታ ጥያቄ መመደብ፡

የእኛ ትልቁ ፍራቻ ሂደቱ ብዙ ሀብቶችን እንደሚፈጅ እና መስቀለኛ መንገድ ለጥያቄዎች ምላሽ መስጠቱን ያቆማል። ከአሁን ጀምሮ (ለዳታዶግ ምስጋና ይግባው) በክላስተር ውስጥ ያሉትን ሁሉንም አገልግሎቶች በግልፅ መከታተል ስለምንችል “ያልተገናኙ” ብለን ልንሰየማቸው ያቀድናቸውን የብዙ ወራት አሠራር ተንትኛለሁ። በቀላሉ ከፍተኛውን የሲፒዩ አጠቃቀም በ20% ህዳግ አዘጋጅቻለሁ፣ እና k8s በመስቀለኛ መንገድ ላይ ሌሎች አገልግሎቶችን ለመመደብ ቢሞክር በመስቀለኛ መንገዱ ውስጥ ቦታ መደብኩ።

Kubernetes: የሲፒዩ ገደቦችን በማስወገድ አገልግሎቶችዎን ያፋጥኑ

በግራፉ ላይ እንደሚታየው በማቀነባበሪያው ላይ ያለው ከፍተኛው ጭነት ደርሷል 242m ሲፒዩ ኮሮች (0.242 ፕሮሰሰር ኮሮች)። ለአንድ ፕሮሰሰር ጥያቄ፣ ከዚህ ዋጋ ትንሽ የሚበልጥ ቁጥር መውሰድ በቂ ነው። እባክዎን አገልግሎቶቹ በተጠቃሚዎች ላይ ያተኮሩ በመሆናቸው ከፍተኛ ጭነት ዋጋዎች ከትራፊክ ጋር ይጣጣማሉ።

በማህደረ ትውስታ አጠቃቀም እና መጠይቆች እና ቮይላ ተመሳሳይ ነገር ያድርጉ - ዝግጁ ነዎት! ለበለጠ ደህንነት፣ አግድም ፖድ አውቶማቲክን ማከል ይችላሉ። ስለዚህ, የመርጃው ጭነት ከፍ ባለ ቁጥር, አውቶማቲክ ማድረጊያ አዲስ ፖዶች ይፈጥራል, እና kubernetes ነፃ ቦታ ወዳለው አንጓዎች ያሰራጫቸዋል. በክላስተር ውስጥ ምንም የቀረው ቦታ ከሌለ እራስዎን ማንቂያ ማዘጋጀት ወይም አዲስ ኖዶችን በራስ-ስኬል ማዋቀር ይችላሉ።

ከመቀነሱ መካከል፣ በ” ውስጥ መሸነፋችንን ልብ ሊባል ይገባል።የመያዣ ጥግግት"፣ i.e. በአንድ መስቀለኛ መንገድ ላይ የሚሄዱ መያዣዎች ብዛት. በዝቅተኛ የትራፊክ ጥግግት ላይ ብዙ "መዝናናት" ሊኖረን ይችላል፣ እና ከፍተኛ የአቀነባባሪ ጭነት ላይ የመድረስ እድልም አለ፣ ነገር ግን አውቶማቲክ ኖዶች በኋለኛው ላይ መርዳት አለባቸው።

ውጤቶች

ባለፉት ጥቂት ሳምንታት ውስጥ እነዚህን ምርጥ ውጤቶች በማተም ደስተኛ ነኝ፤ በሁሉም የተሻሻሉ አገልግሎቶች ላይ ጉልህ መሻሻሎችን አስቀድመን አይተናል፡

Kubernetes: የሲፒዩ ገደቦችን በማስወገድ አገልግሎቶችዎን ያፋጥኑ

በመነሻ ገፃችን ላይ ምርጥ ውጤቶችን አግኝተናል (buffer.com) እዚያ አገልግሎቱ ተፋጠነ ሃያ ሁለት ጊዜ!

Kubernetes: የሲፒዩ ገደቦችን በማስወገድ አገልግሎቶችዎን ያፋጥኑ

የሊኑክስ ከርነል ስህተት ተስተካክሏል?

, አዎ ስህተቱ ቀድሞውኑ ተስተካክሏል እና ማስተካከያው ወደ ከርነል ተጨምሯል። የስርጭት ስሪት 4.19 እና ከዚያ በላይ።

ሆኖም ፣ ሲያነቡ github ላይ kubernetes ችግሮች ለሴፕቴምበር 2020 ሁለተኛ አሁንም ተመሳሳይ ስህተት ስላላቸው አንዳንድ የሊኑክስ ፕሮጄክቶች መጥቀስ እንችላለን። አንዳንድ የሊኑክስ ስርጭቶች አሁንም ይህ ስህተት አላቸው እና እሱን ለማስተካከል እየሰሩ ነው ብዬ አምናለሁ።

የስርጭትዎ ስሪት ከ 4.19 በታች ከሆነ ወደ የቅርብ ጊዜ እንዲዘምኑ እመክራለሁ ነገር ግን በማንኛውም ሁኔታ የአቀነባባሪ ገደቦችን ለማስወገድ ይሞክሩ እና ስሮትሉ እንደቀጠለ ይመልከቱ። ከዚህ በታች የኩበርኔትስ አስተዳደር አገልግሎቶችን እና የሊኑክስ ስርጭቶችን ከፊል ዝርዝር ማየት ይችላሉ፡

  • ዴቢያን: ወደ የቅርብ ጊዜው የስርጭት ስሪት የተቀናጀ አስተካክል፣ አውቶቡስእና በጣም ትኩስ ይመስላል (ነሐሴ 2020 ዓ.ም.). አንዳንድ የቀደሙ ስሪቶችም ሊስተካከሉ ይችላሉ።
  • ኡቡንቱ፡ ወደ የቅርብ ጊዜው ስሪት የተቀናጀ አስተካክል። ኡቡንቱ ፎካል ፎሳ 20.04
  • EKS ገና ማስተካከያ አግኝቷል በታህሳስ ወር 2019. የእርስዎ ስሪት ከዚህ ያነሰ ከሆነ ኤኤምአይን ማዘመን አለብዎት።
  • ኮፕስ፡ ከሰኔ 2020 ጀምሮ у kops 1.18+ ዋናው አስተናጋጅ ምስል ኡቡንቱ 20.04 ይሆናል. የእርስዎ የ kops ስሪት የቆየ ከሆነ፣ ለመጠገን መጠበቅ ሊኖርብዎ ይችላል። እኛ እራሳችን አሁን እየጠበቅን ነው።
  • GKE (Google ክላውድ)፡ የተጠናከረ አስተካክል። በጥር 2020ይሁን እንጂ በጉሮሮ ውስጥ ችግሮች አሉ አሁንም ይስተዋላል.

ማስተካከያው የጉሮሮውን ችግር ካስተካከለ ምን ማድረግ አለበት?

ችግሩ ሙሉ በሙሉ እንደተፈታ እርግጠኛ አይደለሁም። ከማስተካከያው ጋር ወደ የከርነል ስሪቱ ስንደርስ ክላስተርን ፈትጬ ልጥፉን አዘምነዋለሁ። ማንም ሰው አስቀድሞ ያዘመነ ከሆነ፣ የእርስዎን ውጤቶች ማንበብ እፈልጋለሁ።

መደምደሚያ

  • ከዶከር ኮንቴይነሮች ጋር በሊኑክስ ውስጥ የሚሰሩ ከሆነ (ኩበርኔትስ፣ ሜሶስ፣ ስዋርም ወይም ሌሎች ምንም ቢሆኑም) ኮንቴይነሮችዎ በመዝጋት ምክንያት አፈጻጸማቸውን ሊያጡ ይችላሉ።
  • ስህተቱ አስቀድሞ ተስተካክሏል በሚል ተስፋ ወደ አዲሱ የስርጭትዎ ስሪት ለማዘመን ይሞክሩ።
  • የማቀነባበሪያ ገደቦችን ማስወገድ ችግሩን ይፈታል, ነገር ግን ይህ በከፍተኛ ጥንቃቄ ጥቅም ላይ መዋል ያለበት አደገኛ ዘዴ ነው (መጀመሪያ ከርነሉን ማዘመን እና ውጤቱን ማወዳደር የተሻለ ነው);
  • የሲፒዩ ገደቦችን ካስወገዱ የሲፒዩ እና የማህደረ ትውስታ አጠቃቀምን በጥንቃቄ ይቆጣጠሩ እና የሲፒዩ ሃብቶች ከ ፍጆታዎ በላይ መሆናቸውን ያረጋግጡ;
  • አስተማማኝ አማራጭ ከፍተኛ የሃርድዌር ጭነት በሚኖርበት ጊዜ አዲስ ፖዶችን ለመፍጠር አውቶማቲክ ማሰሪያዎችን ማዘጋጀት ነው, ስለዚህም kubernetes ወደ ነጻ አንጓዎች ይመድቧቸዋል.

ይህ ልጥፍ የመያዣ ስርዓቶችዎን አፈፃፀም ለማሻሻል እንደሚረዳዎት ተስፋ አደርጋለሁ።

PS ይህ ነው ደራሲው ከአንባቢዎች እና ተንታኞች (በእንግሊዘኛ) ጋር ይዛመዳል።


ምንጭ: hab.com

አስተያየት ያክሉ