Kubernetes වර්ධනය වන ජනප්රියත්වය ගැන

හෙලෝ, හබ්ර්!

ගිම්හානය අවසානයේ, අපි මාතෘකාව මත දිගටම වැඩ කරන බව ඔබට මතක් කිරීමට අවශ්යයි කුබර්නෙට්ස් සහ ජුනි මස මුලදී මෙම ව්‍යාපෘතියේ තත්ත්වය පෙන්නුම් කරමින් Stackoverflow වෙතින් ලිපියක් ප්‍රකාශයට පත් කිරීමට තීරණය කළේය.

Kubernetes වර්ධනය වන ජනප්රියත්වය ගැන

කියවන්න කියවන්න!

මෙම ලිපිය ලියන අවස්ථාව වන විට කුබර්නෙටස්ගේ වයස දළ වශයෙන් වේ. අවුරුදු හයයි, සහ පසුගිය වසර දෙක තුළ එහි ජනප්‍රියත්වය බොහෝ සෙයින් වර්ධනය වී ඇති අතර එය නිරන්තරයෙන් ශ්‍රේණිගත කර ඇත වඩාත්ම කැමති වේදිකා. Kubernetes මෙම වසරේ තුන්වන ස්ථානයට පත්ව ඇත. නැවත සලකා බැලීමට: Kubernetes යනු බහාලුම් කළ වැඩ බර ධාවනය කිරීම සහ සංවිධානය කිරීම සඳහා නිර්මාණය කර ඇති වේදිකාවකි.

Linux හි ක්‍රියාවලි හුදකලා කිරීම සඳහා විශේෂ සැලසුමක් ලෙස බහාලුම් ආරම්භ විය; 2007 සිට බහාලුම් ඇතුළත් කර ඇත cgroups, සහ 2002 සිට - නාම අවකාශයන්. 2008 වන විට එය ලබා ගත හැකි වූ විට බහාලුම් වඩාත් හොඳින් නිර්මාණය විය එල්එක්ස්, සහ Google විසින් තමන්ගේම අභ්‍යන්තර ආයතනික යාන්ත්‍රණයක් ලෙස හැදින්විය බෝර්ග්, "සියලු වැඩ බහාලුම්වල සිදු කෙරේ." මෙතැන් සිට අපි Docker හි පළමු නිකුතුව සිදු වූ 2013 වෙත වේගයෙන් ඉදිරියට යමු, සහ බහාලුම් අවසානයේ ජනප්‍රිය මහජන විසඳුමක් බවට පත් විය. එකල බහාලුම් වාද්‍ය වෘන්දයේ ප්‍රධාන මෙවලම විය මෙසෝස්, ඔහු අතිශයින් ජනප්‍රිය නොවූවත්. Kubernetes ප්‍රථම වරට 2015 දී නිකුත් කරන ලද අතර ඉන් පසුව මෙම මෙවලම බහාලුම් වාද්‍ය වෘන්ද ක්‍ෂේත්‍රයේ තථ්‍ය ප්‍රමිතිය බවට පත්විය.

Kubernetes මෙතරම් ජනප්‍රිය වන්නේ මන්දැයි තේරුම් ගැනීමට, අපි ප්‍රශ්න කිහිපයකට පිළිතුරු දීමට උත්සාහ කරමු. නිෂ්පාදනය සඳහා යෙදුම් යෙදවිය යුතු ආකාරය පිළිබඳව අවසන් වරට සංවර්ධකයින්ට එකඟ වීමට හැකි වූයේ කවදාද? මෙවලම් පෙට්ටියෙන් පිටත ලබා දී ඇති බැවින් ඒවා භාවිතා කරන සංවර්ධකයින් කී දෙනෙක් ඔබ දන්නවාද? යෙදුම් ක්‍රියා කරන ආකාරය නොතේරෙන ක්ලවුඩ් පරිපාලකයින් කී දෙනෙක් අද සිටිනවාද? මෙම ප්‍රශ්නවලට පිළිතුරු අපි මෙම ලිපියෙන් බලමු.

යටිතල පහසුකම් YAML ලෙස

Puppet සහ Chef සිට Kubernetes දක්වා ගිය ලෝකයේ, විශාලතම වෙනස්කම් වලින් එකක් වූයේ "කේතය ලෙස යටිතල පහසුකම්" සිට "යටිතල පහසුකම් දත්ත ලෙස" දක්වා-විශේෂයෙන්, YAML වැනි. Kubernetes හි ඇති සියලුම සම්පත්, කරල්, වින්‍යාස කිරීම්, යෙදවූ අවස්ථා, වෙළුම් යනාදිය, YAML ගොනුවකින් පහසුවෙන් විස්තර කළ හැක. උදාහරණ වශයෙන්:

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

මෙම දර්ශනය DevOps හෝ SRE වෘත්තිකයන්ට පයිතන් හෝ ජාවාස්ක්‍රිප්ට් වැනි භාෂාවලින් කේත ලිවීමකින් තොරව ඔවුන්ගේ වැඩ බර සම්පූර්ණයෙන්ම ප්‍රකාශ කිරීමට පහසු කරයි.

දත්ත ලෙස යටිතල පහසුකම් සංවිධානය කිරීමේ අනෙකුත් වාසිවලට ඇතුළත් වන්නේ:

  • GitOps හෝ Git මෙහෙයුම් අනුවාද පාලනය. මෙම ප්‍රවේශය ඔබට සියලුම Kubernetes YAML ගොනු git ගබඩාවල තබා ගැනීමට ඉඩ සලසයි, එවිට ඔබට වෙනසක් සිදු කළේ කවදාද, එය කළේ කවුරුන්ද සහ හරියටම වෙනස් වූ දේ නිරීක්ෂණය කළ හැකිය. මෙමගින් ආයතනය පුරා ක්‍රියාකාරීත්වයේ විනිවිද භාවය වැඩි කරන අතර, විශේෂයෙන්ම සේවකයින් ඔවුන්ට අවශ්‍ය සම්පත් සෙවිය යුතු තැන්වල අපැහැදිලි බව දුරුකරමින් මෙහෙයුම් කාර්යක්ෂමතාව වැඩි දියුණු කරයි. ඒ අතරම, හුදෙක් ඇදීමේ ඉල්ලීමක් ඒකාබද්ධ කිරීමෙන් Kubernetes සම්පත් වෙත ස්වයංක්‍රීයව වෙනස්කම් සිදු කිරීම පහසු වේ.
  • පරිමාණය. සම්පත් YAML ලෙස නිර්වචනය කළ විට, පොකුරු ක්‍රියාකරුවන්ට Kubernetes සම්පතක අංක එකක් හෝ දෙකක් වෙනස් කිරීම අතිශය පහසු වන අතර එමඟින් එය පරිමාණය වන ආකාරය වෙනස් වේ. Kubernetes කරල්වල තිරස් ස්වයං පරිමාණය සඳහා යාන්ත්‍රණයක් සපයන අතර, අඩු සහ ඉහළ මට්ටමේ ගමනාගමනය හැසිරවීමට විශේෂිත යෙදවුම් වින්‍යාසයකදී අවශ්‍ය අවම සහ උපරිම කරල් සංඛ්‍යාව කුමක්දැයි පහසුවෙන් තීරණය කිරීමට භාවිතා කළ හැක. උදාහරණයක් ලෙස, ඔබ හදිසි තදබදයක් හේතුවෙන් අමතර ධාරිතාවක් අවශ්‍ය වින්‍යාසයක් යොදවා ඇත්නම්, 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

  • ආරක්ෂාව සහ කළමනාකරණය. Kubernetes හි දේවල් යොදවා ඇති ආකාරය ඇගයීමට YAML විශිෂ්ටයි. උදාහරණයක් ලෙස, ඔබගේ කාර්ය භාරය පරිපාලක නොවන පරිශීලකයෙකු ලෙස ක්‍රියාත්මක වන්නේද යන්න ප්‍රධාන ආරක්ෂක ගැටළුවක් වේ. මෙම අවස්ථාවේදී, අපට වැනි මෙවලම් අවශ්ය විය හැකිය ගැටුම, YAML/JSON වලංගුකාරකය, ප්ලස් විවෘත ප්‍රතිපත්ති නියෝජිතයා, සන්දර්භය සහතික කිරීම සඳහා ප්‍රතිපත්ති වලංගුකාරකයකි ආරක්ෂක සන්දර්භය පරිපාලක වරප්‍රසාද සහිතව කන්ටේනරය ක්‍රියාත්මක වීමට ඔබගේ කාර්ය භාරය ඉඩ නොදේ. මෙය අවශ්‍ය නම්, පරිශීලකයින්ට සරල ප්‍රතිපත්තියක් යෙදිය හැක අගල්, මෙවැනි:

package main

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

  • වලාකුළු සපයන්නා සමඟ ඒකාබද්ධ කිරීම සඳහා විකල්ප. වර්තමාන උසස් තාක්‍ෂණයේ වඩාත්ම කැපී පෙනෙන ප්‍රවණතාවක් වන්නේ පොදු වලාකුළු සපයන්නන් මත වැඩ බර ක්‍රියාත්මක කිරීමයි. සංරචකය භාවිතා කිරීම වලාකුළු සපයන්නා Kubernetes ඕනෑම පොකුරකට එය ක්‍රියාත්මක වන වලාකුළු සපයන්නා සමඟ ඒකාබද්ධ වීමට ඉඩ දෙයි. උදාහරණයක් ලෙස, පරිශීලකයෙකු AWS හි Kubernetes හි යෙදුමක් ධාවනය කරන්නේ නම් සහ සේවාවක් හරහා එම යෙදුම හෙළිදරව් කිරීමට අවශ්‍ය නම්, ක්ලවුඩ් සපයන්නා ස්වයංක්‍රීයව සේවාව නිර්මාණය කිරීමට උදවු කරයි LoadBalancerස්වයංක්‍රීයව පැටවුම් ශේෂය සපයනු ඇත Amazon Elastic Load Balancerයෙදුම් පොඩ් වෙත ගමනාගමනය හරවා යැවීමට.

පුළුල් කිරීමේ හැකියාව

Kubernetes ඉතා පුළුල් වන අතර සංවර්ධකයින් එයට කැමතියි. කරල්, යෙදවීම්, වැනි පවතින සම්පත් සමූහයක් ඇත 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 සමඟ තොරතුරු හුවමාරු කර ගැනීමෙන් CRD (අභිරුචි සම්පත් අර්ථ දැක්වීම්) කළමනාකරණය ස්වයංක්‍රීය කළ හැක.

සංවර්ධකයින්ට ඔවුන්ගේම ක්‍රියාකරුවන් නිර්මාණය කිරීම පහසු කරන මෙවලම් කිහිපයක් ප්‍රජාව තුළ ඇත. ඒ අය අතරින් - ක්රියාකරු රාමුව සහ ඔහුගේ ක්රියාකරු SDK. මෙම SDK මඟින් සංවර්ධකයෙකුට ඉක්මනින් ක්‍රියාකරුවෙකු නිර්මාණය කිරීම ආරම්භ කළ හැකි පදනමක් සපයයි. ඔබට විධාන රේඛාවෙන් මෙවැනි දෙයක් ආරම්භ කළ හැකි යැයි සිතමු:

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

මෙය YAML ගොනු සහ Golang කේතය ඇතුළුව ඔබේ ක්‍රියාකරු සඳහා සියලුම බොයිලේරු තහඩු කේතය නිර්මාණය කරයි:

.
|____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

එවිට ඔබට අවශ්‍ය API සහ පාලකය එකතු කළ හැක, මේ වගේ:

$ 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 සඳහා ක්රියාකරු දළ වශයෙන් අර්ථ දක්වනු ඇත එසේ. එය සමඟ, ඔබට විධාන කිහිපයක් සමඟින් Kubernetes මුදුනේ 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

නවෝත්පාදනය

පසුගිය වසර කිහිපය තුළ, ප්‍රධාන Kubernetes නිකුතු සෑම මාස කිහිපයකට වරක් නිකුත් වෙමින් පවතී - එනම්, වසරකට ප්‍රධාන නිකුතු තුනක් හෝ හතරක්. ඒ එකින් එක හඳුන්වා දෙන අලුත් විශේෂාංග ගණන අඩු වෙන්නේ නැහැ. එපමණක්ද නොව, මෙම දුෂ්කර කාලවලදී පවා මන්දගාමී වීමේ ලකුණු නොමැත - දැන් තත්වය කුමක්දැයි බලන්න Github මත Kubernetes ව්‍යාපෘති ක්‍රියාකාරකම්.

විවිධ කාර්ය භාරයන් හරහා වඩාත් නම්‍යශීලීව පොකුරු මෙහෙයුම් කිරීමට නව හැකියාවන් ඔබට ඉඩ සලසයි. ඊට අමතරව, යෙදුම් සෘජුවම නිෂ්පාදනයට යෙදවීමේදී ක්‍රමලේඛකයින් වැඩි පාලනයක් භුක්ති විඳිති.

ප්රජාව

කුබර්නෙට්ස්ගේ ජනප්‍රියත්වයේ තවත් ප්‍රධාන අංගයක් වන්නේ එහි ප්‍රජාවේ ශක්තියයි. 2015 දී, 1.0 අනුවාදයට ළඟා වූ පසු, Kubernetes විසින් අනුග්‍රහය දක්වන ලදී වලාකුළු ස්වදේශීය පරිගණක පදනම.

විවිධ ප්රජාවන් ද ඇත SIG (විශේෂ උනන්දුවක් දක්වන කණ්ඩායම්) ව්‍යාපෘතිය විකාශනය වන විට Kubernetes හි විවිධ ප්‍රදේශවල වැඩ කිරීමට අවධානය යොමු කළේය. මෙම කණ්ඩායම් නිරන්තරයෙන් නව විශේෂාංග එකතු කරමින් Kubernetes සමඟ වැඩ කිරීම වඩාත් පහසු සහ පහසු කරයි.

Cloud Native පදනම විසින් CloudNativeCon/KubeCon සත්කාරකත්වය දරයි, එය ලියන අවස්ථාව වන විට, ලොව විශාලතම විවෘත මූලාශ්‍ර සම්මන්ත්‍රණය වේ. සාමාන්‍යයෙන් වසරකට තුන් වතාවක් පවත්වනු ලබන, එය Kubernetes සහ එහි පරිසර පද්ධතිය වැඩිදියුණු කිරීමට මෙන්ම සෑම මාස තුනකට වරක් දිස්වන නව විශේෂාංග ඉගෙන ගැනීමට කැමති දහස් ගණනක් වෘත්තිකයන් එක් කරයි.

එපමණක් නොව, Cloud Native පදනම සතුව ඇත තාක්ෂණික අධීක්ෂණ කමිටුව, SIGs සමඟ එක්ව, නව සහ පවතින සමාලෝචනය කරයි ව්යාපෘති අරමුදල් වලාකුළු පරිසර පද්ධතිය කෙරෙහි අවධානය යොමු කර ඇත. මෙම ව්‍යාපෘති බොහොමයක් Kubernetes හි ශක්තීන් වැඩිදියුණු කිරීමට උපකාරී වේ.

අවසාන වශයෙන්, මිනිසුන් එකට බැඳී සිටින නමුත් ඒ සමඟම නවකයින් කණ්ඩායමට සාදරයෙන් පිළිගන්නා සමස්ත ප්‍රජාවගේ සවිඥානික උත්සාහයකින් තොරව Kubernetes තරම් සාර්ථක නොවනු ඇතැයි මම විශ්වාස කරමි.

අනාගතය

සංවර්ධකයින්ට අනාගතයේදී මුහුණ දීමට සිදුවනු ඇති ප්‍රධාන අභියෝගයක් වන්නේ එය ක්‍රියාත්මක වන යටිතල පහසුකම් කෙරෙහි නොව, කේතයේ විස්තර කෙරෙහි අවධානය යොමු කිරීමේ හැකියාවයි. එය මෙම ප්‍රවණතා සපුරාලයි සර්වර් රහිත වාස්තුවිද්‍යාත්මක ආදර්ශය, අද ප්‍රමුඛ පෙළේ එකක්. උසස් රාමු දැනටමත් පවතී, උදා. නයිට් и OpenFaas, සංවර්ධකයාගෙන් යටිතල පහසුකම් වියුක්ත කිරීමට Kubernetes භාවිතා කරයි.

මෙම ලිපියෙන් අපි සීරීමට ලක් කළේ වර්තමාන කුබර්නෙටස් රාජ්‍යයේ මතුපිට පමණි - ඇත්ත වශයෙන්ම එය අයිස් කුට්ටියේ කෙළවර පමණි. Kubernetes පරිශීලකයින්ට වෙනත් බොහෝ සම්පත්, හැකියාවන් සහ වින්‍යාසයන් ඔවුන් සතුව ඇත.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න