குபெர்னெட்டஸின் வளர்ந்து வரும் பிரபலத்தைப் பற்றி

ஹே ஹப்ர்!

கோடையின் முடிவில், நாங்கள் தலைப்பில் தொடர்ந்து பணியாற்றுகிறோம் என்பதை உங்களுக்கு நினைவூட்ட விரும்புகிறோம் Kubernetes ஜூன் மாத தொடக்கத்தில் இந்தத் திட்டத்தில் உள்ள விவகாரங்களின் நிலையை விளக்கும் ஸ்டாக்ஓவர்ஃப்ளோவில் இருந்து ஒரு கட்டுரையை வெளியிட முடிவு செய்தது.

குபெர்னெட்டஸின் வளர்ந்து வரும் பிரபலத்தைப் பற்றி

வாசிப்பு அனுபவியுங்கள்!

இந்தக் கட்டுரையை எழுதும் போது, ​​குபர்னெட்டஸின் வயது சுமார். ஆறு வயது, மற்றும் கடந்த இரண்டு ஆண்டுகளில் அதன் புகழ் மிகவும் வளர்ந்துள்ளது, அது தொடர்ந்து தரவரிசையில் உள்ளது மிகவும் பிடித்தது தளங்கள். குபெர்னெட்டஸ் இந்த ஆண்டு மூன்றாவது இடத்தில் உள்ளார். மறுபரிசீலனை செய்ய: குபெர்னெட்டஸ் என்பது கன்டெய்னரைஸ்டு பணிச்சுமைகளை இயக்கவும் ஒழுங்கமைக்கவும் வடிவமைக்கப்பட்ட ஒரு தளமாகும்.

Linux இல் செயல்முறைகளை தனிமைப்படுத்துவதற்கான ஒரு சிறப்பு வடிவமைப்பாக கொள்கலன்கள் தொடங்கப்பட்டன; கொள்கலன்கள் 2007 முதல் சேர்க்கப்பட்டுள்ளன cgroups, மற்றும் 2002 முதல் - பெயர்வெளிகள். கொள்கலன்கள் 2008 ஆம் ஆண்டளவில் இன்னும் சிறப்பாக வடிவமைக்கப்பட்டன, அது கிடைக்கும்போது எல்.எக்ஸ்.சி., மற்றும் கூகிள் அதன் சொந்த உள் நிறுவன பொறிமுறையை உருவாக்கியது போர்க், "எல்லா வேலைகளும் கொள்கலன்களில் செய்யப்படுகின்றன." டோக்கரின் முதல் வெளியீடு நடந்த 2013 ஆம் ஆண்டிற்கு இங்கிருந்து வேகமாக முன்னோக்கி செல்கிறோம், மேலும் கொள்கலன்கள் இறுதியாக ஒரு பிரபலமான வெகுஜன தீர்வாக மாறியது. அந்த நேரத்தில், கொள்கலன் ஆர்கெஸ்ட்ரேஷனுக்கான முக்கிய கருவி மெசோஸ், அவர் பெருமளவில் பிரபலமாக இல்லை என்றாலும். குபெர்னெட்டஸ் முதன்முதலில் 2015 இல் வெளியிடப்பட்டது, அதன் பிறகு இந்த கருவி கொள்கலன் ஆர்கெஸ்ட்ரேஷன் துறையில் நடைமுறை தரமாக மாறியது.

குபெர்னெட்டஸ் ஏன் மிகவும் பிரபலமானது என்பதைப் புரிந்து கொள்ள, சில கேள்விகளுக்கு பதிலளிக்க முயற்சிப்போம். கடைசியாக டெவலப்பர்கள் தயாரிப்பில் பயன்பாடுகளை எவ்வாறு வரிசைப்படுத்துவது என்பதை எப்போது ஒப்புக்கொள்ள முடிந்தது? பெட்டிக்கு வெளியே வழங்கப்பட்ட கருவிகளைப் பயன்படுத்தும் எத்தனை டெவலப்பர்கள் உங்களுக்குத் தெரியும்? பயன்பாடுகள் எவ்வாறு செயல்படுகின்றன என்பதைப் புரிந்து கொள்ளாத எத்தனை கிளவுட் நிர்வாகிகள் இன்று உள்ளனர்? இந்தக் கேள்விகளுக்கான பதில்களை இந்தக் கட்டுரையில் பார்ப்போம்.

YAML ஆக உள்கட்டமைப்பு

பப்பட் மற்றும் செஃப் முதல் குபெர்னெட்டஸ் வரை சென்ற உலகில், மிகப்பெரிய மாற்றங்களில் ஒன்று "குறியீடாக உள்கட்டமைப்பு" என்பதிலிருந்து "தரவுகளாக உள்கட்டமைப்பு"-குறிப்பாக, YAML போன்றது. குபெர்னெட்டஸில் உள்ள அனைத்து ஆதாரங்களும், இதில் காய்கள், உள்ளமைவுகள், பயன்படுத்தப்பட்ட நிகழ்வுகள், தொகுதிகள் போன்றவை, 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 களஞ்சியங்களில் வைத்திருக்க உங்களை அனுமதிக்கிறது, எனவே ஒரு மாற்றம் எப்போது செய்யப்பட்டது, யார் செய்தார்கள் மற்றும் சரியாக என்ன மாற்றப்பட்டது என்பதை நீங்கள் துல்லியமாக கண்காணிக்க முடியும். இது நிறுவனம் முழுவதும் செயல்பாட்டின் வெளிப்படைத்தன்மையை அதிகரிக்கிறது மற்றும் தெளிவின்மையை நீக்குவதன் மூலம் செயல்பாட்டுத் திறனை மேம்படுத்துகிறது, குறிப்பாக ஊழியர்கள் தங்களுக்குத் தேவையான ஆதாரங்களைத் தேட வேண்டிய இடத்தில். அதே நேரத்தில், இழுக்கும் கோரிக்கையை ஒன்றிணைப்பதன் மூலம் தானாகவே குபெர்னெட்ஸ் ஆதாரங்களில் மாற்றங்களைச் செய்வது எளிதாகிறது.
  • அளவீடல். வளங்கள் YAML என வரையறுக்கப்படும் போது, ​​க்ளஸ்டர் ஆபரேட்டர்கள் குபெர்னெட்ஸ் வளத்தில் ஒன்று அல்லது இரண்டு எண்களை மாற்றுவது மிகவும் எளிதாகிறது, இதன் மூலம் அது எவ்வாறு அளவிடப்படுகிறது என்பதை மாற்றுகிறது. குபெர்னெட்டஸ் காய்களின் கிடைமட்ட ஆட்டோஸ்கேலிங்கிற்கான ஒரு பொறிமுறையை வழங்குகிறது, இது குறைந்த மற்றும் அதிக அளவிலான போக்குவரத்தை கையாள ஒரு குறிப்பிட்ட வரிசைப்படுத்தல் கட்டமைப்பில் குறைந்தபட்ச மற்றும் அதிகபட்ச காய்களின் எண்ணிக்கை என்ன என்பதை வசதியாக தீர்மானிக்க பயன்படுகிறது. எடுத்துக்காட்டாக, டிராஃபிக்கில் திடீர் அதிகரிப்பு காரணமாக கூடுதல் திறன் தேவைப்படும் உள்ளமைவை நீங்கள் பயன்படுத்தியிருந்தால், 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 வேலிடேட்டர், பிளஸ் கொள்கை முகவரைத் திறக்கவும், சூழலை உறுதிப்படுத்தும் கொள்கை சரிபார்ப்பு பாதுகாப்பு சூழல் உங்கள் பணிச்சுமைகள், கன்டெய்னரை நிர்வாகி உரிமைகளுடன் இயக்க அனுமதிக்காது. இது தேவைப்பட்டால், பயனர்கள் ஒரு எளிய கொள்கையைப் பயன்படுத்தலாம் நான் பிராத்திக்கிறேன், இது போன்ற:

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இது தானாகவே சுமை சமநிலையை வழங்கும் அமேசான் எலாஸ்டிக் லோட் பேலன்சர்பயன்பாட்டு காய்களுக்கு போக்குவரத்தை திருப்பிவிட.

விரிவாக்கம்

குபெர்னெட்ஸ் மிகவும் விரிவாக்கக்கூடியது மற்றும் டெவலப்பர்கள் அதை விரும்புகிறார்கள். காய்கள், வரிசைப்படுத்தல்கள், போன்ற கிடைக்கக்கூடிய ஆதாரங்களின் தொகுப்பு உள்ளது. 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

குபெர்னெட்டஸில் நீட்டிப்புக்கான மற்றொரு விருப்பம் என்னவென்றால், டெவலப்பர் தனது சொந்த அறிக்கைகளை எழுதலாம். ஆபரேட்டர் குபெர்னெட்டஸ் கிளஸ்டரில் உள்ள ஒரு சிறப்பு செயல்முறையானது "கட்டுப்பாட்டு சுற்று" ஒரு ஆபரேட்டரின் உதவியுடன், குபெர்னெட்ஸ் API உடன் தகவலைப் பரிமாறிக்கொள்வதன் மூலம் பயனர் CRDகளின் (தனிப்பயன் வள வரையறைகள்) நிர்வாகத்தை தானியங்குபடுத்த முடியும்.

டெவலப்பர்கள் தங்கள் சொந்த ஆபரேட்டர்களை உருவாக்குவதை எளிதாக்கும் பல கருவிகள் சமூகத்தில் உள்ளன. அவர்களில் - ஆபரேட்டர் கட்டமைப்பு மற்றும் அவரது ஆபரேட்டர் SDK. இந்த SDK ஒரு டெவலப்பர் விரைவில் ஒரு ஆபரேட்டரை உருவாக்கத் தொடங்கும் அடித்தளத்தை வழங்குகிறது. கட்டளை வரியிலிருந்து இதுபோன்ற ஒன்றை நீங்கள் தொடங்கலாம் என்று வைத்துக்கொள்வோம்:

$ 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

பின், தேவையான 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 கோப்புகளை மட்டுமே பயன்படுத்தி அறிக்கைகளை உருவாக்க உங்களை அனுமதிக்கிறது. எடுத்துக்காட்டாக, அப்பாச்சி காஃப்காவுக்கான ஆபரேட்டர் தோராயமாக வரையறுக்கப்படும் எனவே. இதன் மூலம், குபெர்னெட்டஸின் மேல் காஃப்கா கிளஸ்டரை இரண்டு கட்டளைகளுடன் நிறுவலாம்:

$ 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

கண்டுபிடிப்புகள்

கடந்த சில ஆண்டுகளாக, குபெர்னெட்டஸின் முக்கிய வெளியீடுகள் சில மாதங்களுக்கு ஒருமுறை வெளிவருகின்றன - அதாவது வருடத்திற்கு மூன்று முதல் நான்கு பெரிய வெளியீடுகள். அவை ஒவ்வொன்றிலும் அறிமுகப்படுத்தப்பட்ட புதிய அம்சங்களின் எண்ணிக்கை குறையவில்லை. மேலும், இக்கட்டான காலத்திலும் வேகம் குறைவதற்கான அறிகுறிகள் தென்படவில்லை - இப்போது என்ன நிலைமை என்று பாருங்கள் கிதுப்பில் குபெர்னெட்ஸ் திட்ட செயல்பாடு.

புதிய திறன்கள் பல்வேறு பணிச்சுமைகள் முழுவதும் மிகவும் நெகிழ்வான கிளஸ்டர் செயல்பாடுகளை அனுமதிக்கின்றன. கூடுதலாக, புரோகிராமர்கள் நேரடியாக உற்பத்திக்கு பயன்பாடுகளை பயன்படுத்தும்போது அதிக கட்டுப்பாட்டை அனுபவிக்கிறார்கள்.

சமூகத்தில்

குபெர்னெட்டஸின் பிரபலத்தின் மற்றொரு முக்கிய அம்சம் அதன் சமூகத்தின் பலமாகும். 2015 இல், பதிப்பு 1.0 ஐ அடைந்ததும், Kubernetes ஸ்பான்சர் செய்யப்பட்டது கிளவுட் நேட்டிவ் கம்ப்யூட்டிங் அறக்கட்டளை.

பல்வேறு சமூகங்களும் உள்ளன SIG, (சிறப்பு ஆர்வக் குழுக்கள்) திட்டம் உருவாகும்போது குபெர்னெட்டின் பல்வேறு பகுதிகளில் வேலை செய்வதில் கவனம் செலுத்துகிறது. இந்த குழுக்கள் தொடர்ந்து புதிய அம்சங்களைச் சேர்ப்பதால், குபெர்னெட்டஸுடன் பணிபுரிவது மிகவும் வசதியானது மற்றும் வசதியானது.

கிளவுட் நேட்டிவ் அறக்கட்டளை CloudNativeCon/KubeCon ஐயும் வழங்குகிறது, இது எழுதும் நேரத்தில், உலகின் மிகப்பெரிய திறந்த மூல மாநாடாகும். பொதுவாக ஆண்டுக்கு மூன்று முறை நடைபெறும், இது குபெர்னெட்டஸ் மற்றும் அதன் சுற்றுச்சூழல் அமைப்பை மேம்படுத்த விரும்பும் ஆயிரக்கணக்கான நிபுணர்களை ஒன்றிணைக்கிறது, மேலும் ஒவ்வொரு மூன்று மாதங்களுக்கும் தோன்றும் புதிய அம்சங்களைக் கற்றுக்கொள்கிறது.

மேலும், கிளவுட் நேட்டிவ் அறக்கட்டளை உள்ளது தொழில்நுட்ப மேற்பார்வை குழு, இது, SIGகளுடன் சேர்ந்து, புதிய மற்றும் ஏற்கனவே உள்ளவற்றை மதிப்பாய்வு செய்கிறது திட்டங்கள் நிதிகள் கிளவுட் சுற்றுச்சூழல் அமைப்பில் கவனம் செலுத்துகின்றன. இந்த திட்டங்களில் பெரும்பாலானவை குபெர்னெட்டஸின் பலத்தை மேம்படுத்த உதவுகின்றன.

இறுதியாக, குபர்னெட்டஸ் முழு சமூகத்தின் நனவான முயற்சிகள் இல்லாமல் வெற்றிபெற முடியாது என்று நான் நம்புகிறேன், அங்கு மக்கள் ஒன்றாக ஒட்டிக்கொள்கிறார்கள், ஆனால் அதே நேரத்தில் புதியவர்களை மடியில் வரவேற்கிறார்கள்.

எதிர்கால

டெவலப்பர்கள் எதிர்காலத்தில் எதிர்கொள்ள வேண்டிய முக்கிய சவால்களில் ஒன்று, குறியீட்டின் விவரங்களில் கவனம் செலுத்தும் திறன் ஆகும், அது இயங்கும் உள்கட்டமைப்பில் அல்ல. இது இந்த போக்குகளை சந்திக்கிறது சர்வர்லெஸ் கட்டிடக்கலை முன்னுதாரணம், இது இன்று முன்னணியில் உள்ளது. மேம்பட்ட கட்டமைப்புகள் ஏற்கனவே உள்ளன, எ.கா. நேட்டிவ் и OpenFaas, இது டெவலப்பரிடமிருந்து உள்கட்டமைப்பை சுருக்கிக் கொள்ள குபெர்னெட்டஸைப் பயன்படுத்துகிறது.

இந்தக் கட்டுரையில், தற்போதைய குபெர்னெட்டஸ் மாநிலத்தின் மேற்பரப்பை மட்டுமே நாங்கள் கீறினோம்-உண்மையில், இது பனிப்பாறையின் முனை மட்டுமே. Kubernetes பயனர்கள் தங்கள் வசம் பல வளங்கள், திறன்கள் மற்றும் கட்டமைப்புகள் உள்ளன.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்