በተለያዩ የመረጃ ቋቶች ውስጥ የኩበርኔትስ ስብስቦችን እንዴት ማገናኘት እንደሚቻል

በተለያዩ የመረጃ ቋቶች ውስጥ የኩበርኔትስ ስብስቦችን እንዴት ማገናኘት እንደሚቻል
እንኳን ወደ Kubernetes Quick Start Series እንኳን በደህና መጡ። ይህ በመስመር ላይ እና በስልጠናዎቻችን ውስጥ የምናገኛቸው በጣም አስደሳች ጥያቄዎች ያለው መደበኛ አምድ ነው። Kubernetes ባለሙያ መልሶች.

የዛሬው ባለሙያ ዳንኤል ፖልቺክ (እ.ኤ.አ.)ዳንኤል ፖለንቺክ). ዳንኤል ኢንስትራክተር እና ሶፍትዌር ገንቢ ሆኖ ይሰራል ተማር 8.

በሚቀጥለው ጽሁፍ ላይ ለጥያቄዎ መልስ ከፈለጉ, በኢሜል ያግኙን ወይም ትዊተር: @learnk8s.

ቀዳሚ ልጥፎች ጠፍተዋል? እዚህ ፈልጋቸው.

በተለያዩ የመረጃ ቋቶች ውስጥ የኩበርኔትስ ስብስቦችን እንዴት ማገናኘት ይቻላል?

በአጭሩ: ኩበፌድ v2 በቅርቡ ይመጣልእና እንዲያነቡ እመክራችኋለሁ መርከብ и ባለብዙ ክላስተር-መርሃግብር አዘጋጅ ፕሮጀክት.

ብዙ ጊዜ የመሠረተ ልማት አውታሮች ይባዛሉ እና በተለያዩ ክልሎች በተለይም በቁጥጥር ስር ባሉ አካባቢዎች ይሰራጫሉ።

አንድ ክልል ከሌለ መቆራረጥን ለማስወገድ ትራፊክ ወደ ሌላ አቅጣጫ ይዛወራል።

በ Kubernetes, ተመሳሳይ ስልት መጠቀም እና የስራ ጫናዎችን በተለያዩ ክልሎች ማሰራጨት ይችላሉ.

በአንድ ቡድን፣ ክልል፣ አካባቢ ወይም የእነዚህ ጥምረት አንድ ወይም ከዚያ በላይ ዘለላዎች ሊኖሩዎት ይችላሉ።

የእርስዎ ዘለላዎች በበርካታ ደመናዎች እና በግቢው ላይ ሊስተናገዱ ይችላሉ።

ግን ለእንደዚህ ዓይነቱ ጂኦግራፊያዊ ስርጭት መሠረተ ልማት እንዴት ማቀድ እንደሚቻል?
በአንድ አውታረ መረብ ላይ ለብዙ የደመና አካባቢዎች አንድ ትልቅ ዘለላ መፍጠር አለቦት?
ወይም ብዙ ትናንሽ ዘለላዎች አሉዎት እና እነሱን ለመቆጣጠር እና ለማመሳሰል መንገድ ይፈልጉ?

አንድ የአመራር ስብስብ

በአንድ አውታረ መረብ ላይ አንድ ዘለላ መፍጠር በጣም ቀላል አይደለም።

አደጋ አጋጥሞህ አስብ፣ በክላስተር ክፍሎች መካከል ያለው ግንኙነት ጠፍቷል።

አንድ ዋና አገልጋይ ካለህ፣ ከሀብቱ ውስጥ ግማሹ አዲስ ትዕዛዞችን መቀበል አይችሉም ምክንያቱም ጌታውን ማግኘት አይችሉም።

እና በተመሳሳይ ጊዜ የድሮ ማዞሪያ ጠረጴዛዎች አሉዎት (kube-proxy አዳዲሶችን ማውረድ አይችልም) እና ምንም ተጨማሪ ፖድ (kubelet ለዝማኔዎች መጠይቅ አይችልም)።

ይባስ ብሎ ኩበርኔትስ መስቀለኛ መንገድን ማየት ካልቻለ ወላጅ አልባ መሆኑን ይጠቁማል እና የጎደሉትን እንክብሎችን አሁን ባሉት አንጓዎች ያከፋፍላል።

በውጤቱም, ሁለት እጥፍ ፖድሎች አሉዎት.

በየክልሉ አንድ ዋና አገልጋይ ከሰሩ፣ በ etcd ዳታቤዝ ውስጥ ባለው የጋራ ስምምነት ስልተ ቀመር ላይ ችግሮች ይኖራሉ። (በግምት እትም። - እንደ እውነቱ ከሆነ የ etcd ዳታቤዝ በዋና አገልጋዮች ላይ መቀመጥ የለበትም. በተመሳሳይ ክልል ውስጥ በተለየ የአገልጋዮች ቡድን ላይ ሊሰራ ይችላል. ሆኖም፣ በተመሳሳይ ጊዜ የክላስተር ውድቀት ነጥብ ተቀብሏል። ግን በፍጥነት።)

ወዘተ ይጠቀማል ራፍት አልጎሪዝምወደ ዲስክ ከመጻፍዎ በፊት በአንድ እሴት ላይ ለመስማማት.
ማለትም፣ ግዛቱ ወደ ወዘተ ከመጻፉ በፊት አብዛኞቹ ጉዳዮች ስምምነት ላይ መድረስ አለባቸው።

በ etcd አጋጣሚዎች መካከል ያለው መዘግየት ከሰማይ ከሰማይ ፣በተለያዩ ክልሎች ውስጥ በሶስት etcd አጋጣሚዎች እንደሚታየው ፣ በአንድ እሴት ላይ ለመስማማት እና ወደ ዲስክ ለመፃፍ ረጅም ጊዜ ይወስዳል።
ይህ በኩበርኔትስ መቆጣጠሪያዎች ውስጥም ይንጸባረቃል.

የመቆጣጠሪያው አስተዳዳሪ ስለ ለውጡ ለማወቅ እና ምላሹን ወደ ዳታቤዝ ለመጻፍ ተጨማሪ ጊዜ ይፈልጋል።

እና ተቆጣጣሪው አንድ ስላልሆነ ፣ ግን ብዙ ፣ የሰንሰለት ምላሽ ተገኝቷል፣ እና አጠቃላይ ክላስተር በጣም በዝግታ መስራት ይጀምራል.

etcd በጣም የመዘግየት ስሜት አለው ኦፊሴላዊው ሰነድ ከመደበኛ ሃርድ ድራይቭ ይልቅ ኤስኤስዲ መጠቀምን ይመክራል።.

በአሁኑ ጊዜ ለአንድ ዘለላ የአንድ ትልቅ አውታረ መረብ ጥሩ ምሳሌዎች የሉም።

በመሠረቱ፣ የገንቢው ማህበረሰብ እና የ SIG-cluster ቡድን ኩበርኔትስ ኮንቴይነሮችን በሚያቀናጅበት መንገድ ክላስተርን እንዴት ማቀናጀት እንደሚቻል ለማወቅ እየሞከሩ ነው።

አማራጭ 1፡ የፌዴሬሽን ዘለላዎች በኩቤፌድ

ይፋዊ መልስ ከ SIG-cluster - kubefed2፣ የዋናው የኩቤ ፌዴሬሽን ደንበኛ እና ኦፕሬተር አዲስ ስሪት.

ለመጀመሪያ ጊዜ የኩቤ ፌደሬሽን መሳሪያ በመጠቀም የክላስተር ስብስቦችን እንደ አንድ ነገር ለማስተዳደር ሞክረናል።

አጀማመሩ ጥሩ ነበር በስተመጨረሻ ግን የቁቤ ፌደሬሽን ተወዳጅነት አላገኘም ምክንያቱም ሁሉንም ሀብት አልደገፈም።

የፌዴራል አቅርቦቶችን እና አገልግሎቶችን ይደግፋል፣ ግን ለምሳሌ StatefulSetsን አይደግፍም።
እንዲሁም የፌዴሬሽኑ ውቅር በማብራሪያ መልክ ተላልፏል እና ተለዋዋጭ አልነበረም.

በፌዴሬሽኑ ውስጥ ለእያንዳንዱ ክላስተር የተባዛ ክፍፍልን አንድ ማብራሪያ በመጠቀም እንዴት እንደሚገልጹ አስቡት።

ሙሉ ለሙሉ የተመሰቃቀለ ሆነ።

SIG-cluster ከ kubefed v1 በኋላ ጥሩ ስራ ሰርቶ ችግሩን ከተለየ አቅጣጫ ለመቅረብ ወሰነ።

ከማብራሪያዎች ይልቅ, በክላስተር ላይ የተጫነ መቆጣጠሪያ ለመልቀቅ ወሰኑ. ብጁ የመረጃ ፍቺዎችን (ብጁ የመረጃ ፍቺ፣ ሲአርዲ) በመጠቀም ሊዋቀር ይችላል።

ለእያንዳንዱ ለሚደረገው ሃብት፣ ብጁ የሲአርዲ ፍቺ በሦስት ክፍሎች አለዎት፡

  • እንደ ማሰማራት የመሰለ የንብረት መደበኛ ትርጉም;
  • ክፍል placement, ሀብቱ በፌዴሬሽኑ ውስጥ እንዴት እንደሚከፋፈል በሚገልጹበት;
  • ክፍል override, ለአንድ የተወሰነ ምንጭ ክብደትን እና መለኪያዎችን ከምደባ መሻር ይችላሉ.

ከአቀማመጥ እና ከመሻር ክፍሎች ጋር የተጠቃለለ ማድረስ ምሳሌ እዚህ አለ።

apiVersion: types.federation.k8s.io/v1alpha1
kind: FederatedDeployment
metadata:
  name: test-deployment
  namespace: test-namespace
spec:
  template:
    metadata:
      labels:
        app: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
            - image: nginx
              name: nginx
  placement:
    clusterNames:
      - cluster2
      - cluster1
  overrides:
    - clusterName: cluster2
      clusterOverrides:
        - path: spec.replicas
          value: 5

እንደምታየው አቅርቦቱ በሁለት ስብስቦች የተከፈለ ነው። cluster1 и cluster2.

የመጀመሪያው ክላስተር ሶስት ቅጂዎችን ያቀርባል, ሁለተኛው ደግሞ 5 ዋጋ አለው.

በቅጂዎች ብዛት ላይ ተጨማሪ ቁጥጥር ከፈለጉ፣ kubefed2 ቅጂዎች የሚመዘኑበት አዲስ ReplicaSchedulingPreference ነገር ያቀርባል፡-

apiVersion: scheduling.federation.k8s.io/v1alpha1
kind: ReplicaSchedulingPreference
metadata:
  name: test-deployment
  namespace: test-ns
spec:
  targetKind: FederatedDeployment
  totalReplicas: 9
  clusters:
    A:
      weight: 1
    B:
      weight: 2

የሲአርዲ መዋቅር እና ኤፒአይ ገና ዝግጁ አይደሉም፣ እና በይፋዊው የፕሮጀክት ማከማቻ ውስጥ ንቁ ስራ በመካሄድ ላይ ነው።

ለ kubefed2 ይከታተሉ፣ ግን ለምርት አካባቢ ገና በቂ እንዳልሆነ ያስታውሱ።

ስለ kubefed2 ከ የበለጠ ይወቁ ስለ kubefed2 ኦፊሴላዊ ጽሑፍ በ Kubernetes ብሎግ እና የኩቤፌድ ፕሮጀክት ኦፊሴላዊ ማከማቻ.

አማራጭ 2፡ ክላስተር ቡኪንግ.ኮም ዘይቤ

የBooking.com ገንቢዎች ከ kubefed v2 ጋር አልተገናኙም፣ ነገር ግን በብዙ ዘለላዎች፣ በርካታ ክልሎች እና በርካታ ደመናዎች ላይ ለማድረስ ኦፕሬተር የሆነውን Shipperን ይዘው መጡ።

መርከብ ከ kubefed2 ጋር በተወሰነ መልኩ ይመሳሰላል።

ሁለቱም መሳሪያዎች የብዝሃ-ክላስተር ማሰማራት ስልትዎን (የትኞቹ ስብስቦች ጥቅም ላይ እንደሚውሉ እና ምን ያህል ቅጂዎች እንዳሏቸው) እንዲያበጁ ያስችሉዎታል።

ግን የላኪው ተግባር የመላኪያ ስህተቶችን አደጋ መቀነስ ነው።

በ Shipper ውስጥ በቀድሞው እና በአሁን ጊዜ ማሰማራቶች እና በመጪው ትራፊክ መጠን መካከል የተባዛዎችን ክፍፍል የሚገልጹ ተከታታይ እርምጃዎችን መግለፅ ይችላሉ።

ሀብትን ወደ ክላስተር ሲገፉ፣ የላኪው ተቆጣጣሪው ለውጡን ወደ ሁሉም የፌዴራል ዘለላዎች እየጨመረ ያሰፋል።

እንዲሁም ላኪ በጣም ውስን ነው።

ለምሳሌ ያህል, የ Helm ገበታዎችን እንደ ግብአት ይወስዳል እና የቫኒላ ሀብቶችን አይደግፍም.
በአጠቃላይ ቃላቶች, Shipper እንደሚከተለው ይሰራል.

ከመደበኛ ስርጭት ይልቅ የ Helm ቻርትን የሚያካትት የመተግበሪያ ግብዓት መፍጠር ያስፈልግዎታል፡-

apiVersion: shipper.booking.com/v1alpha1
kind: Application
metadata:
  name: super-server
spec:
  revisionHistoryLimit: 3
  template:
    chart:
      name: nginx
      repoUrl: https://storage.googleapis.com/shipper-demo
      version: 0.0.1
    clusterRequirements:
      regions:
        - name: local
    strategy:
      steps:
        - capacity:
            contender: 1
            incumbent: 100
          name: staging
          traffic:
            contender: 0
            incumbent: 100
        - capacity:
            contender: 100
            incumbent: 0
          name: full on
          traffic:
            contender: 100
            incumbent: 0
    values:
      replicaCount: 3

ላኪ ብዙ ዘለላዎችን ለማስተዳደር ጥሩ አማራጭ ነው፣ ነገር ግን ከሄልም ጋር ያለው የቅርብ ግኑኝነት መንገዱን ብቻ ያመጣል።

ሁላችንም ከሄልም ወደ ብንቀየርስ? ማበጀት ወይም ካፒታን?

ስለ Shipper እና ስለ ፍልስፍናው በ ላይ የበለጠ ይረዱ ይህ ኦፊሴላዊ ጋዜጣዊ መግለጫ.

ኮዱን ለመቆፈር ከፈለጉ ፣ ወደ ኦፊሴላዊው የፕሮጀክት ማከማቻ ይሂዱ.

አማራጭ 3፡ "አስማት" የክላስተር ውህደት

ኩቤፌድ v2 እና ላኪ ከክላስተር ፌደሬሽን ጋር በብጁ የመርጃ ፍቺ አማካኝነት አዳዲስ ግብአቶችን ለክላስተሮች በማቅረብ ይሰራሉ።

ግን ሁሉንም አቅርቦቶች ፣ StatefulSets ፣ DaemonSets ፣ ወዘተ ለመዋሃድ እንደገና መጻፍ ካልፈለጉስ?

YAML ን ሳይቀይሩ በፌዴሬሽኑ ውስጥ ያለውን ክላስተር እንዴት ማካተት ይቻላል?

መልቲ-ክላስተር-መርሐግብር አዘጋጅ የአድሚራሊቲ ፕሮጀክት ነው።በክላስተር ላይ ያሉ የሥራ ጫናዎችን መርሐግብር የሚመለከት።

ነገር ግን በብጁ ፍቺዎች ውስጥ ከክላስተር እና የመጠቅለያ ሀብቶች ጋር ለመገናኘት አዲስ መንገድ ከመፍጠር ይልቅ መልቲ-ክላስተር-መርሐግብር አውጪ ወደ መደበኛው የኩበርኔትስ የሕይወት ዑደት ውስጥ ገብቷል እና ፖድ የሚፈጥሩ ሁሉንም ጥሪዎች ይቋረጣል።

እያንዳንዱ የተፈጠረ ፖድ ወዲያውኑ በዱሚ ይተካል.

ባለብዙ ክላስተር-መርሐግብር አጠቃቀሞች መዳረሻን ለመቀየር የድር መንጠቆዎችጥሪውን ለመጥለፍ እና ስራ ፈት የዱሚ ፖድ ለመፍጠር።

ዋናው ፖድ በሌላ የመርሐግብር ዑደት ውስጥ ያልፋል፣ ጠቅላላ ፌዴሬሽኑን ከምርጫ በኋላ የማስተናገጃ ውሳኔ ይሰጣል።

በመጨረሻም, ፖድ ወደ ዒላማው ስብስብ ይደርሳል.

በውጤቱም, ምንም የማይሰራ, ቦታ የሚይዝ ተጨማሪ ፖድ አለዎት.

ጥቅሙ አቅርቦቶችን ለማጣመር አዲስ ሀብቶችን መጻፍ አያስፈልግዎትም።

ፖድ የሚፈጥር እያንዳንዱ ምንጭ በቀጥታ ለመቀላቀል ዝግጁ ነው።

ይህ አስደሳች ነው፣ ምክንያቱም በድንገት በተለያዩ ክልሎች የተከፋፈሉ አቅርቦቶች ስላሎት እና እርስዎ አላስተዋሉም። ሆኖም ፣ ይህ በጣም አደገኛ ነው ፣ ምክንያቱም እዚህ ሁሉም ነገር በአስማት ላይ ነው።

ነገር ግን Shipper በዋናነት የማጓጓዣ ውጤቶችን ለመቀነስ እየሞከረ ሳለ፣ ባለብዙ ክላስተር-መርሐግብር ተቆጣጣሪ የበለጠ አጠቃላይ እና ምናልባትም ለቡድን ስራዎች የበለጠ ተስማሚ ነው።

የላቀ ቀስ በቀስ የማድረስ ዘዴ የለውም።

ስለ መልቲ-ክላስተር-መርሐግብር አዘጋጅ የበለጠ በ ላይ ይገኛል። ኦፊሴላዊ ማከማቻ ገጽ.

ስለ መልቲ-ክላስተር-መርሃግብር በድርጊት ማንበብ ከፈለጉ አድሚራልቲ አለው። አስደሳች አጠቃቀም ከአርጎ ጋር - የስራ ፍሰቶች፣ ዝግጅቶች፣ CI እና ሲዲ Kubernetes።

ሌሎች መሳሪያዎች እና መፍትሄዎች

ብዙ ዘለላዎችን ማገናኘት እና ማስተዳደር ውስብስብ ስራ ነው፣ እና ለሁሉም የሚስማማ መፍትሄ የለም።

ስለዚህ ርዕስ የበለጠ ለማወቅ ከፈለጉ አንዳንድ ምንጮች እነኚሁና፡-

ለዛሬ ያ ብቻ ነው።

እስከ መጨረሻው ስላነበቡ እናመሰግናለን!

ብዙ ዘለላዎችን እንዴት በብቃት ማገናኘት እንደሚችሉ ካወቁ፣ ንገረን.

የእርስዎን ዘዴ ወደ ማገናኛዎች እንጨምራለን.

ልዩ ምስጋና ለ Chris Nesbitt-Smith (Chris Nesbitt-Smithቪንሰንት ዴ ስሜ (እ.ኤ.አ.)ቪንሰንት ደ Smet) (ለአስተማማኝ መሐንዲስ በ swatmobile.io) ጽሑፉን ለማንበብ እና ፌዴሬሽኑ እንዴት እንደሚሰራ ጠቃሚ መረጃዎችን ለማካፈል።

ምንጭ: hab.com

አስተያየት ያክሉ