Kupanga chowonjezera cha kube-scheduler chokhala ndi malamulo okonzekera

Kupanga chowonjezera cha kube-scheduler chokhala ndi malamulo okonzekera

Kube-scheduler ndi gawo lofunikira la Kubernetes, lomwe limayang'anira kukonza ma pods kudutsa ma node malinga ndi mfundo zomwe zafotokozedwa. Nthawi zambiri, pakugwira ntchito kwa gulu la Kubernetes, sitiyenera kuganiza kuti ndi mfundo ziti zomwe zimagwiritsidwa ntchito pokonza ma pod, popeza ndondomeko za pulogalamu ya kube-scheduler ndizoyenera ntchito zambiri za tsiku ndi tsiku. Komabe, pali nthawi zina zomwe zimakhala zofunikira kuti tikonze bwino njira yogawa ma pod, ndipo pali njira ziwiri zokwaniritsira ntchitoyi:

  1. Pangani kube-scheduler yokhala ndi malamulo okhazikika
  2. Lembani ndondomeko yanu ndikuphunzitsani kugwira ntchito ndi zopempha za seva ya API

M'nkhaniyi, ndikufotokozerani kukhazikitsidwa kwa mfundo yoyamba yothetsera vuto la kusalinganika kosagwirizana kwa misonkhano pa imodzi mwa ntchito zathu.

Chidziwitso chachidule cha momwe kube-scheduler amagwirira ntchito

Ndikoyenera kudziwa makamaka kuti kube-scheduler alibe udindo wokonza ma pod - ali ndi udindo wosankha node yoyikapo pod. Mwa kuyankhula kwina, zotsatira za ntchito ya kube-scheduler ndi dzina la node, yomwe imabwerera ku seva ya API pa pempho lokonzekera, ndipo ndi pamene ntchito yake imathera.

Choyamba, kube-scheduler amapanga mndandanda wamanodi omwe pod atha kukonzedwa molingana ndi mfundo zolosera. Chotsatira, node iliyonse kuchokera pamndandandawu imalandira chiwerengero china cha mfundo molingana ndi mfundo zofunika kwambiri. Chotsatira chake, node yokhala ndi chiwerengero chachikulu cha mfundo imasankhidwa. Ngati pali ma node omwe ali ndi mphambu yofanana, yosankhidwa mwachisawawa. Mndandanda ndi mafotokozedwe a predicates (sefa) ndi priorites (zigoli) ndondomeko angapezeke mu zolemba.

Kufotokozera za vuto la thupi

Ngakhale kuti magulu ambiri a Kubernetes akusungidwa ku Nixys, tinayamba kukumana ndi vuto lokonzekera ma pod posachedwapa, pamene imodzi mwa ntchito zathu inkafunika kuyendetsa ntchito zambiri za nthawi (~ 100 CronJob entities). Kuti tichepetse kufotokozera vutoli momwe tingathere, titenga mwachitsanzo microservice imodzi, momwe ntchito ya cron imayambika kamodzi pa mphindi, ndikupanga katundu pa CPU. Kuti mugwiritse ntchito cron, ma node atatu okhala ndi mawonekedwe ofanana adaperekedwa (24 vCPU iliyonse).

Panthawi imodzimodziyo, ndizosatheka kunena molondola kuti CronJob idzatenga nthawi yayitali bwanji kuti igwire ntchito, chifukwa kuchuluka kwa deta yolowera kumasintha nthawi zonse. Pafupifupi, pakugwira ntchito kwanthawi zonse kwa kube-scheduler, node iliyonse imagwira ntchito 3-4, zomwe zimapanga ~ 20-30% ya katundu pa CPU ya node iliyonse:

Kupanga chowonjezera cha kube-scheduler chokhala ndi malamulo okonzekera

Vuto lenilenilo ndikuti nthawi zina ma cron task pods amasiya kukonzedwa pa imodzi mwa mfundo zitatu. Ndiko kuti, panthawi ina, palibe poto imodzi yomwe inakonzedweratu pa imodzi mwa mfundozo, pamene pa mfundo zina ziwiri 6-8 makope a ntchitoyi anali akuyenda, kupanga ~ 40-60% ya katundu wa CPU:

Kupanga chowonjezera cha kube-scheduler chokhala ndi malamulo okonzekera

Vutoli lidabweranso pafupipafupi mwachisawawa ndipo nthawi zina limalumikizidwa ndi pomwe mtundu watsopano wa code udatulutsidwa.

Pokulitsa mulingo wodula mitengo wa kube-scheduler kufika pamlingo 10 (-v=10), tinayamba kulemba kuchuluka kwa mfundo zomwe node iliyonse idapeza panthawi yowunika. Panthawi yokonzekera bwino, zidziwitso zotsatirazi zitha kuwoneka muzolemba:

resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node03: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1387 millicores 4161694720 memory bytes, score 9
resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node02: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1347 millicores 4444810240 memory bytes, score 9
resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node03: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1387 millicores 4161694720 memory bytes, score 9
resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node01: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1687 millicores 4790840320 memory bytes, score 9
resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node02: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1347 millicores 4444810240 memory bytes, score 9
resource_allocation.go:78] cronjob-1574828880-mn7m4 -> Node01: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1687 millicores 4790840320 memory bytes, score 9
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node01: NodeAffinityPriority, Score: (0)                                                                                       
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node02: NodeAffinityPriority, Score: (0)                                                                                       
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node03: NodeAffinityPriority, Score: (0)                                                                                       
interpod_affinity.go:237] cronjob-1574828880-mn7m4 -> Node01: InterPodAffinityPriority, Score: (0)                                                                                                        
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node01: TaintTolerationPriority, Score: (10)                                                                                   
interpod_affinity.go:237] cronjob-1574828880-mn7m4 -> Node02: InterPodAffinityPriority, Score: (0)                                                                                                        
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node02: TaintTolerationPriority, Score: (10)                                                                                   
selector_spreading.go:146] cronjob-1574828880-mn7m4 -> Node01: SelectorSpreadPriority, Score: (10)                                                                                                        
interpod_affinity.go:237] cronjob-1574828880-mn7m4 -> Node03: InterPodAffinityPriority, Score: (0)                                                                                                        
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node03: TaintTolerationPriority, Score: (10)                                                                                   
selector_spreading.go:146] cronjob-1574828880-mn7m4 -> Node02: SelectorSpreadPriority, Score: (10)                                                                                                        
selector_spreading.go:146] cronjob-1574828880-mn7m4 -> Node03: SelectorSpreadPriority, Score: (10)                                                                                                        
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node01: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node02: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:726] cronjob-1574828880-mn7m4_project-stage -> Node03: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:781] Host Node01 => Score 100043                                                                                                                                                                        
generic_scheduler.go:781] Host Node02 => Score 100043                                                                                                                                                                        
generic_scheduler.go:781] Host Node03 => Score 100043

Iwo. poyang'anira chidziwitso chomwe chinapezedwa kuchokera ku zipika, node iliyonse inapeza chiwerengero chofanana cha mfundo zomaliza ndipo inasankhidwa mwachisawawa pokonzekera. Pa nthawi yokonzekera zovuta, zipika zinkawoneka motere:

resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node02: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1587 millicores 4581125120 memory bytes, score 9
resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node03: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1087 millicores 3532549120 memory bytes, score 9
resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node02: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1587 millicores 4581125120 memory bytes, score 9
resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node01: BalancedResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 987 millicores 3322833920 memory bytes, score 9
resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node01: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 987 millicores 3322833920 memory bytes, score 9 
resource_allocation.go:78] cronjob-1574211360-bzfkr -> Node03: LeastResourceAllocation, capacity 23900 millicores 67167186944 memory bytes, total request 1087 millicores 3532549120 memory bytes, score 9
interpod_affinity.go:237] cronjob-1574211360-bzfkr -> Node03: InterPodAffinityPriority, Score: (0)                                                                                                        
interpod_affinity.go:237] cronjob-1574211360-bzfkr -> Node02: InterPodAffinityPriority, Score: (0)                                                                                                        
interpod_affinity.go:237] cronjob-1574211360-bzfkr -> Node01: InterPodAffinityPriority, Score: (0)                                                                                                        
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node03: TaintTolerationPriority, Score: (10)                                                                                   
selector_spreading.go:146] cronjob-1574211360-bzfkr -> Node03: SelectorSpreadPriority, Score: (10)                                                                                                        
selector_spreading.go:146] cronjob-1574211360-bzfkr -> Node02: SelectorSpreadPriority, Score: (10)                                                                                                        
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node02: TaintTolerationPriority, Score: (10)                                                                                   
selector_spreading.go:146] cronjob-1574211360-bzfkr -> Node01: SelectorSpreadPriority, Score: (10)                                                                                                        
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node03: NodeAffinityPriority, Score: (0)                                                                                       
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node03: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node02: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node01: TaintTolerationPriority, Score: (10)                                                                                   
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node02: NodeAffinityPriority, Score: (0)                                                                                       
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node01: NodeAffinityPriority, Score: (0)                                                                                       
generic_scheduler.go:726] cronjob-1574211360-bzfkr_project-stage -> Node01: SelectorSpreadPriority, Score: (10)                                                                                    
generic_scheduler.go:781] Host Node03 => Score 100041                                                                                                                                                                        
generic_scheduler.go:781] Host Node02 => Score 100041                                                                                                                                                                        
generic_scheduler.go:781] Host Node01 => Score 100038

Kumene kungawonedwe kuti imodzi mwa mfundozo inapeza mfundo zochepa zomaliza kusiyana ndi zina, choncho kukonzekera kunkachitika kokha pa mfundo ziwiri zomwe zagoletsa kwambiri. Chifukwa chake, tinali otsimikiza kuti vuto limakhala ndendende pakukonza makoko.

Njira yowonjezera yothetsera vutoli inali yodziwikiratu kwa ife - kusanthula zipika, kumvetsetsa ndi zomwe node sinapeze mfundo ndipo, ngati kuli kofunikira, sinthani ndondomeko za kube-scheduler. Komabe, apa tikukumana ndi zovuta ziwiri zazikulu:

  1. Pakudula mitengo kokwanira (10), mfundo zopezedwa pazofunikira zina zimawonekera. Pazolemba zomwe zili pamwambapa, mutha kuwona kuti pazofunikira zonse zomwe zikuwonetsedwa muzolembazo, ma node amapeza nambala yofananira yanthawi zonse komanso kukonza zovuta, koma zotsatira zomaliza pakukonzekera zovuta ndizosiyana. Chifukwa chake, titha kunena kuti pazofunikira zina, kugoletsa kumachitika "kumbuyo", ndipo tilibe njira yomvetsetsa kuti mfundoyi sinapeze mfundo. Tinafotokozera vutoli mwatsatanetsatane mu nkhani Kubernetes posungira pa Github. Panthawi yolemba, yankho linalandiridwa kuchokera kwa omanga kuti kuthandizira kudula mitengo kudzawonjezedwa mu Kubernetes v1.15,1.16, 1.17 ndi XNUMX zosintha.
  2. Palibe njira yosavuta yomvetsetsa kuti ndi ndondomeko ziti za kube-scheduler zomwe zikugwira ntchito pano. Inde, mu zolemba mndandanda watchulidwa, koma liribe zambiri za zolemera zenizeni amapatsidwa kwa aliyense wa mfundo zofunika kwambiri. Mutha kuwona zolemera kapena kusintha mfundo za kube-scheduler kokha mkati ma source kodi.

Ndikoyenera kudziwa kuti titakwanitsa kulemba kuti node sinalandire mfundo molingana ndi ndondomeko ya ImageLocarityPriority, yomwe imapereka mphoto ku node ngati ili kale ndi chithunzi chofunikira kuyendetsa ntchitoyo. Ndiye kuti, panthawi yomwe mtundu watsopano wa pulogalamuyo udatulutsidwa, ntchito ya cron idakwanitsa kuthamanga pama node awiri, kutsitsa chithunzi chatsopano kuchokera ku registry ya docker kupita kwa iwo, motero ma node awiri adalandira mphambu yomaliza yofananira ndi yachitatu. .

Monga ndalembera pamwambapa, mu zipika sitiwona zambiri za kuwunika kwa ImageLocarityPriority policy, kotero kuti tiwone zomwe tikuganiza, tidataya chithunzicho ndi mtundu watsopano wa pulogalamuyo pa node yachitatu, pambuyo pake kukonza kumagwira ntchito moyenera. . Zinali ndendende chifukwa cha mfundo ya ImageLocarityPriority kuti vuto lokonzekera silinawonekere kawirikawiri; nthawi zambiri limalumikizidwa ndi china chake. Chifukwa choti sitinathe kusintha ndondomeko iliyonse pamndandanda wazomwe zimayikidwa patsogolo pa kube-scheduler, tinali ndi kufunikira kosintha kasamalidwe ka malamulo a pod.

Kupanga kwa vuto

Tinkafuna kuti yankho la vutoli likhale lachindunji momwe tingathere, ndiye kuti, mabungwe akuluakulu a Kubernetes (apa tikutanthauza kuti kukhala-scheduler) ayenera kukhala osasintha. Sitinafune kuthetsa vuto pamalo amodzi ndikulipanga kumalo ena. Chifukwa chake, tapeza njira ziwiri zothetsera vutoli, zomwe zidalengezedwa koyambirira kwa nkhaniyi - kupanga ndandanda yowonjezera kapena kulemba zanu. Chofunikira chachikulu pakukonza ntchito za cron ndikugawa katunduyo mofanana pamagulu atatu. Izi zitha kukhutitsidwa ndi mfundo za kube-scheduler, kotero kuti muthane ndi vuto lathu palibe chifukwa cholembera ndandanda yanu.

Malangizo pakupanga ndi Kutumiza kwa kube-scheduler yowonjezera akufotokozedwa mu zolemba. Komabe, zikuwoneka kwa ife kuti bungwe la Deployment silinali lokwanira kuwonetsetsa kulolerana kolakwika pakugwira ntchito kwautumiki wovuta kwambiri monga kube-scheduler, kotero tinaganiza zotumiza kube-scheduler watsopano ngati Static Pod, yomwe imayang'aniridwa mwachindunji. by Kubelet. Chifukwa chake, tili ndi zofunika izi za kube-scheduler watsopano:

  1. Ntchitoyi iyenera kutumizidwa ngati Static Pod pamagulu onse amgulu
  2. Kulekerera zolakwika kuyenera kuperekedwa ngati pod yogwira ntchito yokhala ndi kube-scheduler palibe
  3. Chofunika kwambiri pokonzekera chiyenera kukhala kuchuluka kwa zinthu zomwe zilipo pa node (LeastRequestedPriority)

Kukhazikitsa Mayankho

Ndizoyenera kudziwa nthawi yomweyo kuti tigwira ntchito zonse Kubernetes v1.14.7, chifukwa Uwu ndiye mtundu womwe unagwiritsidwa ntchito pantchitoyi. Tiyeni tiyambe ndi kulemba manifesto ya kube-scheduler wathu watsopano. Tiyeni titenge chiwonetsero chosasinthika (/etc/kubernetes/manifests/kube-scheduler.yaml) ngati maziko ndikubweretsa motere:

kind: Pod
metadata:
  labels:
    component: scheduler
    tier: control-plane
  name: kube-scheduler-cron
  namespace: kube-system
spec:
      containers:
      - command:
        - /usr/local/bin/kube-scheduler
        - --address=0.0.0.0
        - --port=10151
        - --secure-port=10159
        - --config=/etc/kubernetes/scheduler-custom.conf
        - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf
        - --authorization-kubeconfig=/etc/kubernetes/scheduler.conf
        - --v=2
        image: gcr.io/google-containers/kube-scheduler:v1.14.7
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 8
          httpGet:
            host: 127.0.0.1
            path: /healthz
            port: 10151
            scheme: HTTP
          initialDelaySeconds: 15
          timeoutSeconds: 15
        name: kube-scheduler-cron-container
        resources:
          requests:
            cpu: '0.1'
        volumeMounts:
        - mountPath: /etc/kubernetes/scheduler.conf
          name: kube-config
          readOnly: true
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - mountPath: /etc/kubernetes/scheduler-custom.conf
          name: scheduler-config
          readOnly: true
        - mountPath: /etc/kubernetes/scheduler-custom-policy-config.json
          name: policy-config
          readOnly: true
      hostNetwork: true
      priorityClassName: system-cluster-critical
      volumes:
      - hostPath:
          path: /etc/kubernetes/scheduler.conf
          type: FileOrCreate
        name: kube-config
      - hostPath:
          path: /etc/localtime
        name: localtime
      - hostPath:
          path: /etc/kubernetes/scheduler-custom.conf
          type: FileOrCreate
        name: scheduler-config
      - hostPath:
          path: /etc/kubernetes/scheduler-custom-policy-config.json
          type: FileOrCreate
        name: policy-config

Mwachidule za zosintha zazikulu:

  1. Anasintha dzina la pod ndi chidebe kukhala kube-scheduler-cron
  2. Ananenanso kugwiritsa ntchito madoko 10151 ndi 10159 momwe njirayo idafotokozera hostNetwork: true ndipo sitingagwiritse ntchito madoko omwewo monga kube-scheduler (10251 ndi 10259)
  3. Pogwiritsa ntchito --config parameter, tidatchula fayilo yosinthira yomwe ntchitoyo iyenera kuyambika
  4. Kuyika kokhazikika kwa fayilo yosinthira (scheduler-custom.conf) ndi ndondomeko yamafayilo (scheduler-custom-policy-config.json) kuchokera kwa wogwirizira

Musaiwale kuti kube-scheduler wathu adzafuna ufulu wofanana ndi wosasinthika. Sinthani ntchito yake yamagulu:

kubectl edit clusterrole system:kube-scheduler

...
   resourceNames:
    - kube-scheduler
    - kube-scheduler-cron
...

Tsopano tiyeni tikambirane zomwe ziyenera kukhala mu fayilo yosinthira ndi fayilo yokonzekera ndondomeko:

  • Fayilo yosinthira (scheduler-custom.conf)
    Kuti mupeze kasinthidwe ka kube-scheduler, muyenera kugwiritsa ntchito parameter --write-config-to kuchokera zolemba. Tiyika masanjidwewo mufayilo /etc/kubernetes/scheduler-custom.conf ndikuchepetsa kukhala motere:

apiVersion: kubescheduler.config.k8s.io/v1alpha1
kind: KubeSchedulerConfiguration
schedulerName: kube-scheduler-cron
bindTimeoutSeconds: 600
clientConnection:
  acceptContentTypes: ""
  burst: 100
  contentType: application/vnd.kubernetes.protobuf
  kubeconfig: /etc/kubernetes/scheduler.conf
  qps: 50
disablePreemption: false
enableContentionProfiling: false
enableProfiling: false
failureDomains: kubernetes.io/hostname,failure-domain.beta.kubernetes.io/zone,failure-domain.beta.kubernetes.io/region
hardPodAffinitySymmetricWeight: 1
healthzBindAddress: 0.0.0.0:10151
leaderElection:
  leaderElect: true
  leaseDuration: 15s
  lockObjectName: kube-scheduler-cron
  lockObjectNamespace: kube-system
  renewDeadline: 10s
  resourceLock: endpoints
  retryPeriod: 2s
metricsBindAddress: 0.0.0.0:10151
percentageOfNodesToScore: 0
algorithmSource:
   policy:
     file:
       path: "/etc/kubernetes/scheduler-custom-policy-config.json"

Mwachidule za zosintha zazikulu:

  1. Timayika schedulerName ku dzina la ntchito yathu ya kube-scheduler-cron.
  2. Mu parameter lockObjectName muyeneranso kukhazikitsa dzina la utumiki wathu ndi kuonetsetsa kuti chizindikiro leaderElect khalani zoona (ngati muli ndi node imodzi, mutha kuyiyika kukhala yabodza).
  3. Kufotokozera njira yopita ku fayilo ndi kufotokozera ndondomeko za ndondomeko mu parameter algorithmSource.

Ndikoyenera kuyang'anitsitsa mfundo yachiwiri, pomwe timasintha magawo a fungulo leaderElection. Kuti tiwonetsetse kulekerera zolakwika, tathandizira (leaderElect) njira yosankha mtsogoleri (mbuye) pakati pa ma pod a kube-scheduler pogwiritsa ntchito mapeto amodzi kwa iwo (resourceLock) wotchedwa kube-scheduler-cron (lockObjectName) mu kube-system namespace (lockObjectNamespace). Momwe Kubernetes amatsimikizira kupezeka kwakukulu kwa zigawo zazikulu (kuphatikiza kube-scheduler) zitha kupezeka mu nkhani.

  • Fayilo yokonza ndondomeko (scheduler-custom-policy-config.json)
    Monga ndidalemba kale, titha kudziwa kuti ndi mfundo ziti zomwe kube-scheduler amagwirira ntchito posanthula khodi yake. Ndiko kuti, sitingathe kupeza fayilo yokhala ndi ndondomeko zokonzekera za kube-scheduler mofanana ndi fayilo yokonzekera. Tiyeni tifotokoze ndondomeko zomwe timakonda pa fayilo ya /etc/kubernetes/scheduler-custom-policy-config.json motere:

{
  "kind": "Policy",
  "apiVersion": "v1",
  "predicates": [
    {
      "name": "GeneralPredicates"
    }
  ],
  "priorities": [
    {
      "name": "ServiceSpreadingPriority",
      "weight": 1
    },
    {
      "name": "EqualPriority",
      "weight": 1
    },
    {
      "name": "LeastRequestedPriority",
      "weight": 1
    },
    {
      "name": "NodePreferAvoidPodsPriority",
      "weight": 10000
    },
    {
      "name": "NodeAffinityPriority",
      "weight": 1
    }
  ],
  "hardPodAffinitySymmetricWeight" : 10,
  "alwaysCheckAllPredicates" : false
}

Chifukwa chake, kube-scheduler choyamba amalemba mndandanda wamanode omwe pod angakonzedwe molingana ndi mfundo ya GeneralPredicates (yomwe imaphatikizapo ndondomeko za PodFitsResources, PodFitsHostPorts, HostName, ndi MatchNodeSelector). Ndiyeno mfundo iliyonse imawunikidwa motsatira ndondomeko zomwe zili zofunika kwambiri. Kuti tikwaniritse zofunikira za ntchito yathu, tidawona kuti ndondomeko yotereyi ingakhale yankho labwino kwambiri. Ndiroleni ndikukumbutseni kuti ndondomeko zofotokozera mwatsatanetsatane zilipo zolemba. Kuti mukwaniritse ntchito yanu, mutha kungosintha ndondomeko zomwe zimagwiritsidwa ntchito ndikuwapatsa zolemetsa zoyenera.

Tiyeni tiyitane chiwonetsero cha kube-scheduler chatsopano, chomwe tidachipanga koyambirira kwa mutu, kube-scheduler-custom.yaml ndikuchiyika munjira iyi /etc/kubernetes/manifests pa ma master node atatu. Ngati zonse zachitika molondola, Kubelet adzakhazikitsa pod pa node iliyonse, ndipo muzolemba za kube-scheduler yathu yatsopano tiwona zambiri zomwe fayilo yathu yamalamulo idagwiritsidwa ntchito bwino:

Creating scheduler from configuration: {{ } [{GeneralPredicates <nil>}] [{ServiceSpreadingPriority 1 <nil>} {EqualPriority 1 <nil>} {LeastRequestedPriority 1 <nil>} {NodePreferAvoidPodsPriority 10000 <nil>} {NodeAffinityPriority 1 <nil>}] [] 10 false}
Registering predicate: GeneralPredicates
Predicate type GeneralPredicates already registered, reusing.
Registering priority: ServiceSpreadingPriority
Priority type ServiceSpreadingPriority already registered, reusing.
Registering priority: EqualPriority
Priority type EqualPriority already registered, reusing.
Registering priority: LeastRequestedPriority
Priority type LeastRequestedPriority already registered, reusing.
Registering priority: NodePreferAvoidPodsPriority
Priority type NodePreferAvoidPodsPriority already registered, reusing.
Registering priority: NodeAffinityPriority
Priority type NodeAffinityPriority already registered, reusing.
Creating scheduler with fit predicates 'map[GeneralPredicates:{}]' and priority functions 'map[EqualPriority:{} LeastRequestedPriority:{} NodeAffinityPriority:{} NodePreferAvoidPodsPriority:{} ServiceSpreadingPriority:{}]'

Tsopano zomwe zatsala ndikuwonetsa muzambiri za CronJob yathu kuti zopempha zonse zokonzekera ma pod ake ziyenera kukonzedwa ndi kube-scheduler wathu watsopano:

...
 jobTemplate:
    spec:
      template:
        spec:
          schedulerName: kube-scheduler-cron
...

Pomaliza

Pamapeto pake, tinali ndi pulogalamu yowonjezera ya kube-schedule yokhala ndi ndondomeko zapadera zokonzekera, zomwe ntchito yake imayang'aniridwa mwachindunji ndi kubelet. Kuonjezera apo, takhazikitsa chisankho cha mtsogoleri watsopano pakati pa ma pod a kube-scheduler ngati mtsogoleri wakale sakupezeka pazifukwa zina.

Ntchito zokhazikika ndi ntchito zikupitilira kukonzedwa kudzera pa kube-scheduler, ndipo ntchito zonse za cron zasamutsidwa kwathunthu ku chatsopanocho. Katundu wopangidwa ndi ntchito za cron tsopano akugawidwa mofanana pamanode onse. Poganizira kuti ntchito zambiri za cron zimachitidwa pa mfundo zomwezo monga ntchito zazikulu za polojekitiyi, izi zachepetsa kwambiri chiopsezo cha kusuntha pods chifukwa cha kusowa kwazinthu. Pambuyo poyambitsa pulogalamu yowonjezera ya kube-scheduler, mavuto ndi kusalinganika kosagwirizana kwa ntchito za cron sanayambike.

Werenganinso zolemba zina pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga