ምርጥ 10 የ Kubernetes ዘዴዎች እና ምክሮች

ምርጥ 10 የ Kubernetes ዘዴዎች እና ምክሮች

በበይነመረብ ላይ ብዙ የማጣቀሻ ጽሑፎች አሉ, ነገር ግን አንዳንድ ጊዜ በጣም ቀላሉ ምክር በጣም ጠቃሚ ነው. ቡድን Kubernetes aaS ከ Mail.ru ተተርጉሟል የአስር ዘዴዎች እና ምክሮች ምርጫ, የጽሁፉ ደራሲ ከኩበርኔትስ ጋር ከሰራ ከአንድ አመት በኋላ የሰበሰበው. ምክሮቹ በአስፈላጊነት አልተደረደሩም, ነገር ግን ሁሉም ሰው ለራሱ ጠቃሚ ነገር እንደሚያገኝ እናስባለን.

ከ Kubernetes ጋር ለመስራት በጣም ቀላሉ ትእዛዝ

ለመጀመር ከኩበርኔትስ ጋር አብሮ በመስራት በጣም ቀላሉ እና በጣም ጠቃሚ እርምጃ ሊሆን ይችላል። የሚከተለው ትዕዛዝ ትዕዛዝ ማጠናቀቅን ያስችላል kubectl በ bash shell ውስጥ;

echo "source <(kubectl completion bash)" >> ~/.bashrc

ራስ-ሙላ kubectl ወደ .bashrc ፋይል ይጻፋል እና ዛጎሉ በተጀመረ ቁጥር በራስ-ሰር እንዲነቃ ይደረጋል። ይህ ረጅም ትዕዛዞችን እና እንደ መለኪያዎች መተየብ ያፋጥናል all-namespaces. ውስጥ የበለጠ ያንብቡ Kubernetes bash እርዳታ.

ነባሪ ማህደረ ትውስታ እና የሲፒዩ ገደቦች በስም ቦታ ውስጥ

አፕሊኬሽኑ በስህተት ከተፃፈ፣ ለምሳሌ በየሰከንዱ ከመረጃ ቋቱ ጋር አዲስ ግንኙነት ይከፍታል ነገር ግን በጭራሽ አይዘጋውም ፣እንግዲህ ክላስተር የማስታወሻ ፍሰት አለው። እና አፕሊኬሽኑ በሚሰማራበት ጊዜ የማህደረ ትውስታ ገደብ ከሌለው ይህ ወደ መስቀለኛ መንገድ ውድቀት ሊያመራ ይችላል።

ይህንን ለመከላከል Kubernetes በየስም ቦታ ላይ ነባሪ ገደቦችን እንዲያዘጋጁ ይፈቅድልዎታል. ለተወሰነ የስም ቦታ በያምል ፋይል ውስጥ ተጽፈዋል። የእንደዚህ አይነት ፋይል ምሳሌ እዚህ አለ

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

እንደዚህ ያለ yaml ይፍጠሩ እና በማንኛውም የስም ቦታ ላይ ይተግብሩ። ለምሳሌ, ወደ ስም ቦታ limit-example. አሁን በዚህ የስም ቦታ ላይ የሚዘረጋ ማንኛውም ኮንቴይነር የ512ሚ ገደብ ይኖረዋል፣ለዚህ መያዣ ሌላ የግለሰብ ገደብ ካልተዘጋጀ በስተቀር።

የቆሻሻ ማጠራቀሚያ በቀድሞ የኩበርኔትስ ስሪቶች ውስጥ

ኩቤሌት በነባሪነት የቆሻሻ መሰብሰብ የሚጀምረው መቼ ነው። var/lib/docker ካለው የዲስክ ቦታ 90% ይይዛል። ይህ በጣም ጥሩ ነው ፣ ግን እስከ Kubernetes 1.7 ድረስ በፋይል ስርዓቱ ውስጥ ካሉት የፋይሎች ብዛት ጋር በሚዛመዱ የኢኖዶች ብዛት ላይ ነባሪ ገደብ አልነበረውም ።

መያዣዎ ሊሆን ይችላል። var/lib/docker የዲስክ ቦታ 50% ብቻ ሊጠቀም ይችላል፣ነገር ግን የኢኖዶች እጥረት ሊያልቅ ይችላል፣ይህም በሰራተኞች ላይ ችግር ይፈጥራል።

ከ 1.4 እስከ 1.6 ባለው የኩቤሌት ስሪቶች ውስጥ ይህንን ባንዲራ ማከል አለብዎት።

--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

በ1.7 እና በኋላ ስሪቶች ይህ ባንዲራ በነባሪነት ተቀናብሯል። ሆኖም የቀደሙት ስሪቶች የኢኖድ ገደብን አይቆጣጠሩም።

ሚኒኩቤ... ትንሽ ግን ኃይለኛ የአካባቢ ኩበርኔትስ

ሚኒኩቤ የአካባቢያዊ የኩበርኔትስ ክላስተር ለማሄድ ቀላሉ መንገድ ነው። በቀላል ትእዛዝ ነው የተጀመረው፡-

minikube start

ይህንን ትእዛዝ ማስኬድ በኮምፒተርዎ ላይ የሚሰራ እውነተኛ የኩበርኔትስ ክላስተር ያስከትላል።

ምርጥ 10 የ Kubernetes ዘዴዎች እና ምክሮች
ምሳሌያዊ ምንጭ

ዘዴው አፕሊኬሽኑን እንዴት መገንባት እና በዚያ ክላስተር ላይ በአካባቢው ማስኬድ ነው። በተለይ ካልታዘዙ በቀር የዶከር ምስሉ የሚገነባው በኮምፒውተርዎ ላይ እንጂ በክላስተር ላይ አይደለም።

ዶከር ምስሉን በአካባቢው ወደሚገኘው የኩበርኔትስ ክላስተር እንዲገፋ ለማስገደድ የመትከያ ማሽኑ የሚከተለው ትዕዛዝ ተሰጥቶታል።

eval $(minikube docker-env)

አሁን መተግበሪያዎችን በአካባቢያዊ የኩበርኔትስ ክላስተር መገንባት እንችላለን።

ለሁሉም ሰው የ kubectl መዳረሻን አትስጡ

ይህ ግልጽ ይመስላል፣ ነገር ግን ብዙ ቡድኖች ለመተግበሪያዎቻቸው አንድ አይነት ክላስተር እየተጠቀሙ ከሆነ (ለዚህም ኩበርኔትስ የተፈጠረበት ነው) ለሁሉም ሰው ብቻ መስጠት የለብዎትም። kubectl. ትእዛዞቹን መለየት ይሻላል, ለእያንዳንዳቸው የራሱ የሆነ የስም ቦታ በመመደብ እና የ RBAC ፖሊሲዎችን በመጠቀም መዳረሻን ይገድባል.

ለእያንዳንዱ ፖድ የመድረስ፣ የማንበብ፣ የመፍጠር፣ የመሰረዝ እና ሌሎች ስራዎችን የመጠቀም መብቶችን በመመደብ ግራ ሊጋቡ ይችላሉ። ነገር ግን ዋናው ነገር ሚስጥሮችን መድረስን መገደብ ነው, ለአስተዳዳሪዎች ብቻ ይፈቅዳል. በዚህ መንገድ ክላስተርን ማስተዳደር በሚችሉት እና በቀላሉ ወደ እሱ ማሰማራት የሚችሉትን እንለያለን።

የፖድ በጀቶችን ያስተዳድሩ

በ Kubernetes ክላስተር ውስጥ ላለው ማመልከቻ ምንም የእረፍት ጊዜ እንደሌለ እንዴት ማረጋገጥ እንደሚቻል? PodDisruptionBudget እና በድጋሚ PodDisruptionBudget።

ዘለላዎች በየጊዜው ይዘምናሉ እና አንጓዎች ባዶ ይሆናሉ። ምንም ነገር አልቆመም, እውነታው ይህ ነው. ከአንድ በላይ ምሳሌ ያለው እያንዳንዱ ማሰማራት PDB (PodDisruptionBudget) ማካተት አለበት። በክላስተር ላይ በሚተገበር ቀላል የያምል ፋይል ነው የተፈጠረው። የአንድ የተወሰነ የፒዲቢ ሽፋን የሚወሰነው በመለያ መራጮች ነው።

ማስታወሻ: የፒዲቢ በጀት ግምት ውስጥ የሚገባው የበጀት ጥሰት በሚቀለበስበት ጊዜ ብቻ ነው (በፈቃደኝነት መቋረጥ). እንደ ሃርድዌር ውድቀቶች ባሉ ሁኔታዎች PDB አይሰራም።

ምሳሌ ፒዲቢ፡

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: app-a-pdb
spec:
  minAvailable: 2
  selector:
      matchLabels:
        app: app-a

ሁለቱ ዋና መለኪያዎች ናቸው matchLabels и minAvailable. የመጀመሪያው መለኪያ በጀቱ በየትኞቹ መተግበሪያዎች ላይ እንደሚተገበር ይገልጻል። ለምሳሌ፣ ከስያሜዎች ጋር ማሰማራት ካሉኝ። app: app-a и app: app-b, ከዚያ ይህ ፒዲቢ ለመጀመሪያው ብቻ ተፈጻሚ ይሆናል.

መለኪያ minAvailable መስቀለኛ ክፍሉን ባዶ (ማጽዳት) ግምት ውስጥ ማስገባት. ለምሳሌ, በእኛ ምሳሌ, ባዶ በሚደረግበት ጊዜ, ሁሉም አጋጣሚዎች ይባረራሉ app: app-aከሁለት በቀር።

ይህ በማንኛውም ጊዜ ምን ያህል የመተግበሪያው አጋጣሚዎች መሮጥ እንዳለባቸው እንዲቆጣጠሩ ያስችልዎታል።

የመተግበሪያ የጤና ክትትል

እንዲህ ዓይነቱ ክትትል በሁለት መንገዶች ይቻላል-የዝግጁነት ወይም የቀጥታነት ፈተናዎችን በመጠቀም.

የመጀመሪያው ፍተሻ (ዝግጁነት) ኮንቴይነሩ ትራፊክ ለመቀበል ያለውን ዝግጁነት ይወስናል።

ሁለተኛው (ሕያውነት) ዕቃው ጤናማ መሆኑን ወይም እንደገና መጀመር እንዳለበት ያሳያል።

አግባብነት ያላቸው ውቅሮች በቀላሉ ለማሰማራት ወደ yaml ተጨምረዋል። እዚያ የጊዜ ማብቂያዎችን ፣ የዘገየ ጊዜዎችን እና የድጋሚ ሙከራዎችን ብዛት መግለጽ ይችላሉ። ስለእነሱ ተጨማሪ ዝርዝሮችን ይመልከቱ Kubernetes ሰነድ.

መለያዎች በሁሉም ቦታ አሉ።

መለያዎች በኩበርኔትስ ውስጥ ካሉት መሰረታዊ ፅንሰ-ሀሳቦች ውስጥ አንዱ ናቸው። ነገሮች እርስ በርስ በነፃነት እንዲግባቡ ያስችላቸዋል, እንዲሁም በመለያዎች ላይ ተመስርተው መጠይቆችን ይፈጥራሉ. በ Kubernetes ውስጥ፣ ወደ ደንበኛው መሄድ እና ለተወሰኑ መለያዎች ክስተቶችን ማየት ይችላሉ።

ከሞላ ጎደል ማንኛውንም ነገር በመለያዎች ማድረግ ይችላሉ፣ ግን ጥሩ ምሳሌ በአንድ ክላስተር ላይ ፕሮግራሞችን ለማስኬድ ብዙ አከባቢዎችን መፍጠር ነው።

ተመሳሳዩን ዘለላ ትጠቀማለህ እንበል dev и qa. ይህ ማለት ማመልከቻ ሊኖርዎት ይችላል app-a, በአንድ ጊዜ በሁለቱም አካባቢዎች ውስጥ ይሰራል qa и dev. በዚህ አጋጣሚ ተገቢውን መለኪያ በመግለጽ በተለየ አካባቢ ውስጥ የመተግበሪያውን ምሳሌ በተናጠል ማግኘት እንችላለን environment. ለምሳሌ app: app-a и environment: dev ለአንድ አካባቢ, እና app: app-a и environment: qa ለሁለተኛው.

ይህ ሁለቱንም የመተግበሪያውን አጋጣሚዎች እንዲደርሱበት ይፈቅድልዎታል, ለምሳሌ, በአንድ ጊዜ ሙከራን ለማካሄድ.

ተደራጅ

ኩበርኔትስ በጣም ኃይለኛ ስርዓት ነው, ነገር ግን ማንኛውም ስርዓት ውሎ አድሮ ከብዙ ሂደቶች ጋር ሊዋሃድ ይችላል. ኩቤሌቱ እርስዎ የገለጹትን ሁሉንም ሂደቶች እና ቼኮች ያካሂዳል እንዲሁም የራሱ ነው።

እርግጥ ነው, አንድ ወላጅ አልባ አገልግሎት ስርዓቱን አይቀንሰውም, እና ኩበርኔትስ ከመሬት ተነስቶ ለመመዘን የተነደፈ ነው. ነገር ግን ከአንድ አገልግሎት ይልቅ አንድ ሚሊዮን ከታየ ኩቤሌቱ መታነቅ ይጀምራል።

በሆነ ምክንያት ማሰማራትን (ኮንቴይነር, ምስል, ማንኛውንም ነገር) ከሰረዙ, ሙሉ በሙሉ ማጽዳት ብቻ ያረጋግጡ.

ሂድን ተገናኙ

ዋናውን ምክር ለመጨረሻ ጊዜ አስቀምጠናል. የ Go ፕሮግራሚንግ ቋንቋን ተማር።

Kubernetes በ Go ውስጥ ተሰርቷል፣ ሁሉም ቅጥያዎች በ Go ውስጥ ተጽፈዋል፣ እና ደንበኛ-ሂድ ደንበኛ ቤተ-መጽሐፍትም እንዲሁ በይፋ ይደገፋል።

ለተለያዩ እና አስደሳች ነገሮች ጥቅም ላይ ሊውል ይችላል. ለምሳሌ የኩበርኔትስ ስርዓትን ወደ ጣዕምዎ ለማስፋት። ስለዚህ, ውሂብ ለመሰብሰብ, መተግበሪያዎችን ለማሰማራት ወይም በቀላሉ መያዣዎችን ለማጽዳት የራስዎን ፕሮግራሞች መጠቀም ይችላሉ.

የ Go ፕሮግራሚንግ ቋንቋን መማር እና ደንበኛ-ጎን መቆጣጠር ምናልባት ለአዲስ የኩበርኔትስ ተጠቃሚዎች ሊሰጡ የሚችሉት በጣም ጠቃሚ ምክር ነው።

በ Mail.ru Cloud Solutions ድጋፍ ተተርጉሟል

ሌላ ምን ማንበብ:

  1. በ Kubernetes ውስጥ ሶስት ደረጃዎች አውቶማቲክ እና እንዴት እነሱን በብቃት እንደሚጠቀሙባቸው.
  2. የኩበርኔትስ ሰራተኛ አንጓዎች: ብዙ ትናንሽ ወይም ጥቂት ትላልቅ?
  3. Kubernetes ለማሰማራት እና ለማስተዳደር 25 ጠቃሚ መሳሪያዎች.

ምንጭ: hab.com

አስተያየት ያክሉ