የኩበርኔትስ ተወዳጅነት እየጨመረ ስለመጣ

ሃይ ሀብር!

በበጋው መጨረሻ ላይ, በርዕሱ ላይ መስራታችንን እንደቀጠልን ልናስታውስዎ እንፈልጋለን ኩባንያቶች እና በሰኔ ወር መጀመሪያ ላይ በዚህ ፕሮጀክት ውስጥ ያለውን ሁኔታ የሚያሳይ ጽሑፍ ከ Stackoverflow ለማተም ወስኗል።

የኩበርኔትስ ተወዳጅነት እየጨመረ ስለመጣ

በማንበብ ይደሰቱ!

ይህንን ጽሑፍ በሚጽፉበት ጊዜ የኩበርኔትስ ዕድሜ በግምት ነው። ስድስት አመት, እና ባለፉት ሁለት ዓመታት ውስጥ ታዋቂነቱ በጣም እየጨመረ በመምጣቱ በተከታታይ በመካከላቸው ደረጃ ላይ ይገኛል በጣም ተወዳጅ መድረኮች. ኩበርኔትስ በዚህ አመት ሶስተኛ ደረጃ ላይ ተቀምጧል። እንደገና ለማጠቃለል፡- ኩበርኔትስ በኮንቴይነር የተሰሩ የስራ ጫናዎችን ለማሄድ እና ለማቀናበር የተነደፈ መድረክ ነው።

መያዣዎች በሊኑክስ ውስጥ ሂደቶችን ለማግለል እንደ ልዩ ንድፍ ጀመሩ; ኮንቴይነሮች ከ 2007 ጀምሮ ተካትተዋል ቡድኖችእና ከ 2002 ጀምሮ - የስም ቦታዎች. ኮንቴይነሮች በ2008 በተሻለ ሁኔታ ተቀርፀው ነበር፣ ይህም ሲገኝ ኤል.ሲ.ሲ, እና Google የሚጠራው የራሱን የውስጥ ኮርፖሬሽን ዘዴ አዘጋጅቷል Borg“ሁሉም ሥራዎች የሚሠሩት በመያዣዎች ውስጥ ነው” ባለበት። ከዚህ በመነሳት ወደ 2013 በፍጥነት እንጓዛለን, የመጀመሪያው የዶከር መለቀቅ በተካሄደበት እና ኮንቴይነሮች በመጨረሻ ተወዳጅ የጅምላ መፍትሄ ሆነዋል. በዛን ጊዜ የእቃ መጫኛ ኦርኬስትራ ዋናው መሳሪያ ነበር ሜሶስምንም እንኳን እሱ በጣም ተወዳጅ ባይሆንም. ኩበርኔትስ ለመጀመሪያ ጊዜ የተለቀቀው እ.ኤ.አ. በ 2015 ነበር ፣ ከዚያ በኋላ ይህ መሳሪያ በእቃ መያዢያ ኦርኬስትራ መስክ ውስጥ መደበኛ ደረጃ ሆኗል ።

Kubernetes ለምን ተወዳጅ እንደሆነ ለመረዳት ጥቂት ጥያቄዎችን ለመመለስ እንሞክር። ለመጨረሻ ጊዜ ገንቢዎች ማመልከቻዎችን ወደ ምርት እንዴት ማሰማራት እንደሚችሉ መስማማት የቻሉት መቼ ነበር? ምን ያህል ገንቢዎች ከሳጥኑ ውጭ እንደሚቀርቡ መሣሪያዎቹን እንደሚጠቀሙ ያውቃሉ? አፕሊኬሽን እንዴት እንደሚሰራ ያልተረዱ ስንት የደመና አስተዳዳሪዎች አሉ? የእነዚህን ጥያቄዎች መልሶች በዚህ ርዕስ ውስጥ እንመለከታለን.

መሠረተ ልማት እንደ YAML

ከአሻንጉሊት እና ሼፍ ወደ ኩበርኔትስ በሄደው አለም፣ ከትልቅ ለውጦች አንዱ ከ"መሰረተ ልማት እንደ ኮድ" ወደ "መሰረተ ልማት እንደ ዳታ" በተለይም እንደ YAML። በKubernetes ውስጥ ያሉ ሁሉም ሀብቶች፣ ፖድ፣ ውቅሮች፣ የተዘረጉ ምሳሌዎች፣ ጥራዞች፣ ወዘተ ያካተቱ፣ በ YAML ፋይል ውስጥ በቀላሉ ሊገለጹ ይችላሉ። ለምሳሌ:

apiVersion: v1
kind: Pod
metadata:
  name: site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80

ይህ እይታ ለዴቭኦፕስ ወይም ለኤስአርኢ ባለሙያዎች እንደ ፒቲን ወይም ጃቫስክሪፕት ባሉ ቋንቋዎች ኮድ መጻፍ ሳያስፈልጋቸው የሥራ ጫናቸውን ሙሉ በሙሉ እንዲገልጹ ቀላል ያደርገዋል።

መሠረተ ልማትን እንደ መረጃ የማደራጀት ሌሎች ጥቅሞች የሚከተሉትን ያካትታሉ:

  • GitOps ወይም Git Operations ሥሪት ቁጥጥር። ይህ አካሄድ ሁሉንም የ Kubernetes YAML ፋይሎችን በgit repositories ውስጥ እንድታስቀምጡ ይፈቅድልሃል፣ ስለዚህ መቼ ለውጥ እንደተደረገ፣ ማን እንደሰራው እና ምን እንደተለወጠ በትክክል መከታተል ትችላለህ። ይህ በድርጅቱ ውስጥ ያሉትን ተግባራት ግልፅነት ያሳድጋል እና አሻሚነትን በማስወገድ በተለይም ሰራተኞች የሚያስፈልጋቸውን ሀብቶች በሚፈልጉበት ቦታ ላይ የአሰራር ቅልጥፍናን ያሻሽላል። በተመሳሳይ ጊዜ የመጎተት ጥያቄን በማዋሃድ በ Kubernetes ሀብቶች ላይ በራስ-ሰር ለውጦችን ማድረግ ቀላል ይሆናል።
  • የመጠን አቅም. ግብዓቶች እንደ YAML ሲገለጹ ለክላስተር ኦፕሬተሮች አንድ ወይም ሁለት ቁጥሮች በኩበርኔትስ ምንጭ ውስጥ መለወጥ እና እንዴት እንደሚዛን መለወጥ በጣም ቀላል ይሆናል። ኩበርኔትስ አነስተኛ እና ከፍተኛ የትራፊክ ፍሰትን ለመቆጣጠር በአንድ የተወሰነ የማሰማራት ውቅረት ውስጥ ምን ያህል ዝቅተኛ እና ከፍተኛ መጠን እንደሚያስፈልግ ለማወቅ የሚያስችል አግድም አውቶማቲካሊንግ ፖድ (pods) የማዘጋጀት ዘዴን ይሰጣል። ለምሳሌ፣ በትራፊክ ድንገተኛ መጨናነቅ ምክንያት ተጨማሪ አቅም የሚፈልግ ውቅረት ዘርግተው ከሆነ፣ maxReplicas ከ10 ወደ 20 ሊቀየር ይችላል።

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp-deployment
  minReplicas: 1
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

  • ደህንነት እና አስተዳደር. YAML ነገሮች በኩበርኔትስ ውስጥ እንዴት እንደሚሰማሩ ለመገምገም በጣም ጥሩ ነው። ለምሳሌ፣ ዋናው የደህንነት ስጋት የስራ ጫናዎችዎ እንደ አስተዳዳሪ ያልሆነ ተጠቃሚ እየሰሩ መሆኑን ነው። በዚህ አጋጣሚ እንደ መሳሪያዎች ያስፈልጉን ይሆናል ንቀት፣ YAML/JSON አረጋጋጭ፣ በተጨማሪም የፖሊሲ ወኪል ክፈት, የፖሊሲ ማረጋገጫ አውድ መሆኑን ለማረጋገጥ የደህንነት አውድ የሥራ ጫናዎ መያዣው ከአስተዳዳሪ መብቶች ጋር እንዲሄድ አይፈቅድም. ይህ የሚያስፈልግ ከሆነ ተጠቃሚዎች ቀላል ፖሊሲን መተግበር ይችላሉ። rego, ልክ እንደዚህ:

package main

deny[msg] {
  input.kind = "Deployment"
  not input.spec.template.spec.securityContext.runAsNonRoot = true
  msg = "Containers must not run as root"
}

  • ከደመና አቅራቢ ጋር የመዋሃድ አማራጮች። ዛሬ ባለው ከፍተኛ ቴክኖሎጂ ውስጥ በጣም ከሚታወቁት አዝማሚያዎች አንዱ በህዝብ ደመና አቅራቢዎች ላይ የስራ ጫናዎችን ማካሄድ ነው። ክፍሉን በመጠቀም ደመና አቅራቢ Kubernetes ማንኛውም ዘለላ ከሚሰራበት የደመና አቅራቢ ጋር እንዲዋሃድ ይፈቅዳል። ለምሳሌ፣ አንድ ተጠቃሚ በAWS ላይ በኩበርኔትስ አፕሊኬሽን ቢያካሂድ እና ያንን መተግበሪያ በአገልግሎት ማጋለጥ ከፈለገ፣ የደመና አቅራቢው አገልግሎቱን በራስ ሰር እንዲፈጥር ያግዛል። LoadBalancerየጭነት ሚዛንን በራስ-ሰር ያቀርባል Amazon Elastic Load Balancerትራፊክን ወደ ትግበራ ፖድ ለማዞር።

ከመጠን በላይ

Kubernetes በጣም extensible ነው እና ገንቢዎች ይወዳሉ. እንደ ፖድ ፣ ማሰማራት ፣ ያሉ ሀብቶች ስብስብ አለ ። StatefulSetsሚስጥሮች፣ ConfigMapsወዘተ. እውነት ነው፣ ተጠቃሚዎች እና ገንቢዎች በቅጹ ውስጥ ሌሎች ሀብቶችን ማከል ይችላሉ። ብጁ የንብረት መግለጫዎች.

ለምሳሌ፣ ሃብትን መግለፅ ከፈለግን። CronTab፣ ከዚያ እንደዚህ ያለ ነገር ማድረግ ይችላሉ-

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: crontabs.my.org
spec:
  group: my.org
  versions:
    - name: v1
      served: true
      storage: true
      Schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                  pattern: '^(d+|*)(/d+)?(s+(d+|*)(/d+)?){4}$'
                replicas:
                  type: integer
                  minimum: 1
                  maximum: 10
  scope: Namespaced
  names:
    plural: crontabs
    singular: crontab
    kind: CronTab
    shortNames:
    - ct

በኋላ የCronTab ምንጭ እንደዚህ ያለ ነገር መፍጠር እንችላለን፡-

apiVersion: "my.org/v1"
kind: CronTab
metadata:
  name: my-cron-object
spec:
  cronSpec: "* * * * */5"
  image: my-cron-image
  replicas: 5

በ Kubernetes ውስጥ ያለው ሌላው አማራጭ ገንቢው የራሱን መግለጫዎች መጻፍ ይችላል. ኦፕሬተር በ "" መሰረት የሚሰራ በኩበርኔትስ ክላስተር ውስጥ ልዩ ሂደት ነው.መቆጣጠሪያ ወረዳ" በኦፕሬተር እገዛ ተጠቃሚው ከ Kubernetes API ጋር መረጃ በመለዋወጥ የሲአርዲዎችን አስተዳደር (ብጁ የመረጃ ፍቺዎች) በራስ ሰር ማስተዳደር ይችላል።

በማህበረሰቡ ውስጥ ገንቢዎች የራሳቸውን ኦፕሬተሮች እንዲፈጥሩ ቀላል የሚያደርጉ ብዙ መሳሪያዎች አሉ። ከነሱ መካክል - ኦፕሬተር ማዕቀፍ እና የእሱ። ኦፕሬተር ኤስዲኬ. ይህ ኤስዲኬ አንድ ገንቢ ኦፕሬተርን በፍጥነት መፍጠር የሚጀምርበትን መሰረት ይሰጣል። ከትእዛዝ መስመሩ እንደዚህ ያለ ነገር መጀመር ይችላሉ እንበል።

$ operator-sdk new my-operator --repo github.com/myuser/my-operator

ይህ YAML ፋይሎችን እና የጎላንግ ኮድን ጨምሮ ለኦፕሬተርዎ ሁሉንም የቦይለር ኮድ ይፈጥራል።

.
|____cmd
| |____manager
| | |____main.go
|____go.mod
|____deploy
| |____role.yaml
| |____role_binding.yaml
| |____service_account.yaml
| |____operator.yaml
|____tools.go
|____go.sum
|____.gitignore
|____version
| |____version.go
|____build
| |____bin
| | |____user_setup
| | |____entrypoint
| |____Dockerfile
|____pkg
| |____apis
| | |____apis.go
| |____controller
| | |____controller.go

ከዚያ የሚፈለጉትን ኤፒአይዎች እና መቆጣጠሪያ ማከል ይችላሉ፣ እንደዚህ፡-

$ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService

$ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppService

ከዚያ በመጨረሻ ኦፕሬተሩን ሰብስበው ወደ መያዣዎ መዝገብ ይላኩት፡-

$ operator-sdk build your.container.registry/youruser/myapp-operator

ገንቢው የበለጠ ቁጥጥር ከፈለገ፣ በGo ፋይሎች ውስጥ ያለው የቦይለር ሰሌዳ ኮድ ሊቀየር ይችላል። ለምሳሌ, የመቆጣጠሪያውን ልዩ ነገሮች ለማሻሻል, በፋይሉ ላይ ለውጦችን ማድረግ ይችላሉ controller.go.

ሌላ ፕሮጀክት ኩዱ፣ ገላጭ YAML ፋይሎችን ብቻ በመጠቀም መግለጫዎችን እንዲፈጥሩ ያስችልዎታል። ለምሳሌ፣ የApache Kafka ኦፕሬተር በግምት ይገለጻል። እንደዚህ. በእሱ አማካኝነት በካፍካ ክላስተር በኩበርኔትስ ላይ በሁለት ትዕዛዞች ብቻ መጫን ይችላሉ፡

$ kubectl kudo install zookeeper
$ kubectl kudo install kafka

እና ከዚያ በሌላ ትዕዛዝ ያዋቅሩት፡-

$ kubectl kudo install kafka --instance=my-kafka-name 
            -p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181 
            -p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m 
            -p BROKER_COUNT=5 -p BROKER_MEM=4096m 
            -p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3 
            -p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20

ፈጠራ

ባለፉት ጥቂት አመታት፣ ዋና ዋና የኩበርኔትስ ልቀቶች በየጥቂት ወሩ እየወጡ ነው - ማለትም፣ በዓመት ከሶስት እስከ አራት ዋና ዋና ልቀቶች። በእያንዳንዳቸው ውስጥ የገቡት አዲስ ባህሪያት ቁጥር አይቀንስም. ከዚህም በላይ በእነዚህ አስቸጋሪ ጊዜያት እንኳን የመቀነስ ምልክቶች አይታዩም - አሁን ያለውን ሁኔታ ይመልከቱ በ Github ላይ የኩበርኔትስ የፕሮጀክት እንቅስቃሴ.

አዳዲስ ችሎታዎች በተለያዩ የስራ ጫናዎች ውስጥ ስራዎችን በተለዋዋጭነት እንዲሰበስቡ ያስችሉዎታል። በተጨማሪም ፕሮግራመሮች መተግበሪያዎችን በቀጥታ ወደ ምርት ሲያሰማሩ የበለጠ ቁጥጥር ይደሰታሉ።

ማህበረሰብ

ሌላው የኩበርኔትስ ተወዳጅነት ዋነኛ ገጽታ የማህበረሰቡ ጥንካሬ ነው። እ.ኤ.አ. በ2015፣ እትም 1.0 ላይ ሲደርስ ኩበርኔትስ በስፖንሰር ተደግፏል የደመና ቤተኛ ኮምፒተር ፋውንዴሽን.

የተለያዩ ማህበረሰቦችም አሉ። SIG (ልዩ የፍላጎት ቡድኖች) ፕሮጀክቱ እየተሻሻለ ሲመጣ በተለያዩ የኩበርኔትስ ቦታዎች ላይ በመስራት ላይ ያተኮረ ነበር። እነዚህ ቡድኖች ከ Kubernetes ጋር መስራት የበለጠ ምቹ እና ምቹ በማድረግ አዳዲስ ባህሪያትን በየጊዜው ይጨምራሉ.

የክላውድ ቤተኛ ፋውንዴሽን CloudNativeCon/KubeConን ያስተናግዳል፣ይህም በተጻፈበት ጊዜ በአለም ላይ ትልቁ የክፍት ምንጭ ኮንፈረንስ ነው። በተለምዶ በዓመት ሦስት ጊዜ የሚካሄደው, Kubernetes እና ስርዓተ-ምህዳሩን ለማሻሻል የሚፈልጉ በሺዎች የሚቆጠሩ ባለሙያዎችን ያሰባስባል, እንዲሁም በየሦስት ወሩ የሚታዩ አዳዲስ ባህሪያትን ይማራሉ.

ከዚህም በላይ የክላውድ ቤተኛ ፋውንዴሽን አለው። የቴክኒክ ቁጥጥር ኮሚቴ, ይህም, አብረው SIGs, ግምገማዎች አዳዲስ እና ነባር ፕሮጀክቶች ገንዘቦች በደመና ሥነ-ምህዳር ላይ ያተኮሩ ናቸው. አብዛኛዎቹ እነዚህ ፕሮጀክቶች የኩበርኔትስ ጥንካሬዎችን ለማሻሻል ይረዳሉ.

በመጨረሻም፣ እኔ ኩበርኔትስ ያለ መላው ማህበረሰብ ንቃተ-ህሊና ጥረቶች ስኬታማ እንደማይሆን አምናለሁ፣ ሰዎች አንድ ላይ ተጣብቀው ነገር ግን በተመሳሳይ ጊዜ አዲስ መጤዎችን ወደ መንጋው ይቀበላሉ።

የወደፊቱን

ገንቢዎች ወደፊት ሊያጋጥሟቸው ከሚችሉት ዋነኛ ተግዳሮቶች አንዱ በኮዱ ዝርዝር ጉዳዮች ላይ እንጂ በሚሰራባቸው መሰረተ ልማቶች ላይ ትኩረት ማድረግ አለመቻል ነው። እነዚህን አዝማሚያዎች ያሟላል አገልጋይ-አልባ የስነ-ህንፃ ምሳሌዛሬ ከሚመሩት አንዱ የሆነው። የላቁ ማዕቀፎች ቀድሞውኑ አሉ፣ ለምሳሌ. ቆጣቢ и ክፍትFaasመሠረተ ልማትን ከገንቢው ለማጠቃለል ኩበርኔትስ የሚጠቀሙ።

በዚህ ጽሑፍ ውስጥ፣ አሁን ያለውን የኩበርኔትስ ሁኔታ ላይ ብቻ ቧጨረነዋል—በእርግጥ ይህ የበረዶ ግግር ጫፍ ብቻ ነው። የኩበርኔትስ ተጠቃሚዎች ሌሎች ብዙ ሀብቶች፣ ችሎታዎች እና ውቅሮች በእጃቸው አላቸው።

ምንጭ: hab.com

አስተያየት ያክሉ