Kube-scheduler ืืื ืจืืื ืืื ืืืจืื ืฉื Kubernetes, ืืฉืจ ืืืจืื ืขื ืชืืืื ืคืืืื ืขื ืคื ื ืฆืืชืื ืืืชืื ืืืืื ืืืช ืฉืฆืืื ื. ืืขืชืื ืงืจืืืืช, ืืืืื ืืืคืขืื ืฉื ืืฉืืื Kubernetes, ืืื ื ื ืฆืจืืืื ืืืฉืื ืขื ืืืื ืืืื ืืืช ืืฉืืฉืืช ืืชืืืื ืคืืืื, ืืืืืื ืฉืืขืจืืช ืืืืื ืืืช ืฉื ืืจืืจืช ืืืืื ืฉื Kube-scheduler ืืชืืืื ืืจืื ืืืฉืืืืช ืืืืืืืืืืช. ืขื ืืืช, ืืฉื ื ืืฆืืื ืืื ืืฉืื ืื ื ืืืืื ื ืืช ืชืืืื ืืงืฆืืช ืืชืจืืืืื, ืืืฉ ืฉืชื ืืจืืื ืืืฆืข ืืฉืืื ืื:
- ืฆืืจ ืงืืื-ืชืืื ืขื ืืขืจืืช ืืืืื ืืืชืืืช ืืืฉืืช
- ืืชืื ืืช ืืชืืื ืืฉืื ืืืื ืืืชื ืืขืืื ืขื ืืงืฉืืช ืฉืจืช API
ืืืืืจ ืื ืืชืืจ ืืช ืืืฉืื ืื ืงืืื ืืจืืฉืื ื ืืคืชืจืื ืืืขืื ืฉื ืชืืืื ืื ืืืื ืฉื ืืืงืืื ืืืื ืืคืจืืืงืืื ืฉืื ื.
ืืงืืื ืงืฆืจื ืืืืคื ืืคืขืืื ืฉื kube-scheduler
ืจืืื ืืฆืืื ืืืืืื ืืช ืืขืืืื ืฉ-kube-scheduler ืืื ื ืืืจืื ืืชืืืื ืืฉืืจ ืฉื ืคืืืื - ืืื ืืืจืื ืจืง ืืงืืืขืช ืืฆืืืช ืฉืขืืื ืืืงื ืืช ืืคืื. ืืืืืื ืืืจืืช, ืืชืืฆืื ืฉื ืืขืืืื ืฉื kube-scheduler ืืื ืฉื ืืฆืืืช, ืฉืืื ืืืืืจ ืืฉืจืช ื-API ืืืงืฉืช ืชืืืื, ืืฉื ืืกืชืืืืช ืขืืืืชื.
ืจืืฉืืช, kube-scheduler ืืจืืื ืจืฉืืื ืฉื ืฆืืชืื ืขืืืื ื ืืชื ืืชืืื ืืช ืืคืื ืืืชืื ืืืืื ืืืช ืืคืจืืืงืืื. ืืืืจ ืืื, ืื ืฆืืืช ืืจืฉืืื ืื ืืงืื ืืกืคืจ ืืกืืื ืฉื ื ืงืืืืช ืืืชืื ืืืืื ืืืช ืืขืืืคืืืืช. ืืชืืฆืื ืืื, ืืฆืืืช ืขื ืืกืคืจ ืื ืงืืืืช ืืืจืื ื ืืืจ. ืื ืืฉ ืฆืืชืื ืืขืื ืืืชื ื ืืงืื ืืงืกืืืื, ื ืืืจ ืืื ืืงืจืื. ื ืืชื ืืืฆืื ืจืฉืืื ืืชืืืืจ ืฉื ืืืื ืืืช ืืคืจืืืงืืื (ืกืื ืื) ืืืขืืืคืืืืช (ื ืืงืื).
ืชืืืืจ ืืืฃ ืืืขืื
ืืืจืืช ืืืกืคืจ ืืืืื ืฉื ืืฉืืืืืช Kubernetes ืืฉืื ืื ืฉืืชืืืืงืื ื-Nixis, ื ืชืงืื ื ืืจืืฉืื ื ืืืขืื ืฉื ืชืืืื ืคืืืื ืจืง ืืืืจืื ื, ืืืฉืจ ืืื ืืคืจืืืงืืื ืฉืื ื ืืื ืฆืจืื ืืืคืขืื ืืกืคืจ ืจื ืฉื ืืฉืืืืช ืชืงืืคืชืืืช (~100 ืืฉืืืืช CronJob). ืืื ืืคืฉื ืืช ืชืืืืจ ืืืขืื ืืื ืืืคืฉืจ, ื ืืงื ืืืืืื ืืืงืจื-ืฉืืจืืช ืืื, ืฉืืชืืื ืืืคืขืืช ืืฉืืืช cron ืคืขื ืืืงื, ืืืืฆืจืช ืขืืืก ืืกืืื ืขื ื-CPU. ืืื ืืืคืขืื ืืช ืืฉืืืช ื-cron, ืืืงืฆื ืฉืืืฉื ืฆืืชืื ืืขืื ืืืคืืื ืื ืืืื ืืืืืืื (24 vCPUs ืืื ืืื).
ืืื ืขื ืืืช, ืื ืืคืฉืจ ืืืืจ ืืืืืืง ืืื ืืื ืืืงื ื-CronJob ืืืฆืข, ืฉืื ื ืคื ื ืชืื ื ืืงืื ืืฉืชื ื ืื ืืืื. ืืืืืฆืข, ืืืืื ืคืขืืื ืจืืืื ืฉื kube-scheduler, ืื ืฆืืืช ืืจืืฅ 3-4 ืืืคืขื ืขืืืื, ืฉืืืฆืจืื ~20-30% ืืืขืืืก ืขื ื-CPU ืฉื ืื ืฆืืืช:
ืืืขืื ืขืฆืื ืืื ืฉืืคืขืืื ืชืจืืืื ืืฉืืืืช cron ืืคืกืืงื ืืืืืช ืืชืืืื ืื ืืืื ืืฉืืืฉืช ืืฆืืชืื. ืืืืืจ, ืื ืงืืืช ืืื ืืกืืืืช, ืื ืชืืื ื ืคืื ืืื ืขืืืจ ืืื ืืฆืืชืื, ืืขืื ืฉืืฉื ื ืืฆืืชืื ืืืืจืื ืคืขืื 6-8 ืขืืชืงืื ืฉื ืืืฉืืื, ืืืฆืจื ~40-60% ืืขืืืก ืืืขืื:
ืืืขืื ืืืจื ืขื ืขืฆืื ืืชืืืจืืช ืืงืจืืืช ืืืืืืื ืืืขืชืื ืืืืชื ืืงืืจืืฆืื ืขื ืืจืืข ืฉืื ืืจืกื ืืืฉื ืฉื ืืงืื ืืืคืขืื.
ืขื ืืื ืืืืืช ืจืืช ืืจืืฉืื ืฉื kube-scheduler ืืจืื 10 (-v=10), ืืชืืื ื ืืชืขื ืืื ื ืงืืืืช ืฆืืจ ืื ืฆืืืช ืืืืื ืชืืืื ืืืขืจืื. ืืืืื ืคืขืืืช ืชืื ืื ืจืืืื, ื ืืชื ืืื ืืจืืืช ืืช ืืืืืข ืืื ืืืืื ืื:
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
ืึธืึตื. ืื ืืฉืคืื ืืคื ืืืืืข ืฉืืชืงืื ืืืืืื ืื, ืื ืืื ืืืฆืืชืื ืืื ืืืกืคืจ ืฉืืื ืฉื ื ืงืืืืช ืกืืคืืืช ืืืืช ืืงืจืืืช ื ืืืจื ืืชืื ืื. ืืืื ืชืื ืื ืืขืืืชื, ืืืืื ืื ื ืจืื ืื:
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
ืืื ื ื ืืชื ืืจืืืช ืฉืืื ืืฆืืชืื ืงืืข ืคืืืช ื ืงืืืืช ืกืืคืืืช ืืืืืจืื, ืืืื ืืืฆืข ืชืื ืื ืจืง ืขืืืจ ืฉื ื ืืฆืืชืื ืฉืฆืืจื ืืช ืื ืืงืื ืืืงืกืืืื. ืืคืืื, ืืืืื ืืฉืชืื ืขื ื ืฉืืืขืื ืืืื ื ืืืืงื ืืชืืืื ืืชืจืืืืื.
ืืืืืืจืืชื ืื ืืกืฃ ืืคืชืจืื ืืืขืื ืืื ืืจืืจ ืื ื - ื ืชื ืืช ืืืืื ืื, ืืื ืืืืื ืขืืืคืืช ืืฆืืืช ืื ืฆืืจ ื ืงืืืืช ืืืืืืช ืืฆืืจื, ืืชืื ืืช ืืืืื ืืืช ืฉื ืืจืืจืช ืืืืื ืฉื ืืชืืื kube. ืืืื, ืืื ืื ื ืขืืืืื ืืคื ื ืฉื ื ืงืฉืืื ืืฉืืขืืชืืื:
- ืืจืืช ืืจืืฉืื ืืืงืกืืืืืช (10), ื ืงืืืืช ืฉื ืฆืืจื ืจืง ืขืืืจ ืืื ืกืืจื ืขืืืคืืืืช ืืืื ืืืื ืืืืื. ืืงืืข ืฉื ืืืื ืื ืืขืื, ื ืืชื ืืจืืืช ืฉืืื ืกืืจื ืืขืืืคืืืืช ืืืฉืชืงืคืื ืืืืื ืื, ืฆืืชืื ืืืืื ืืืืชื ืืกืคืจ ื ืงืืืืช ืืชืืืื ืจืืื ืืืชืืืื ืืขืืืช, ืื ืืชืืฆืื ืืกืืคืืช ืืืงืจื ืฉื ืชืื ืื ืืขืื ืฉืื ื. ืืคืืื, ืื ื ืืืืืื ืืืกืืง ืฉืืกืืจื ืขืืืคืืืืช ืืกืืืืื, ืื ืืงืื ืืชืจืืฉ "ืืืืืจื ืืงืืขืื", ืืืื ืื ื ืืจื ืืืืื ืขื ืืืื ืขืืืคืืช ืืฆืืืช ืื ืงืืื ื ืงืืืืช. ืชืืืจื ื ืืช ืืืขืื ืืื ืืคืืจืื ื
ืกืืืื ืืืืจ Kubernetes ื- Github. ืืืื ืืชืืืช ืฉืืจืืช ืืื ืืชืงืืื ืชืืืื ืืืืคืชืืื ืืคืื ืชืชืืืกืฃ ืชืืืื ืืจืืฉืื ืืขืืืื ื Kubernetes v1.15,1.16, 1.17 ื-XNUMX. - ืืื ืืจื ืงืื ืืืืื ืขื ืืืื ืกื ืกืคืฆืืคื ืฉื ืืืื ืืืช kube-scheduler ืขืืื ืืขืช. ืื ื
ืชืืขืื ืจืฉืืื ืื ืืืคืืขื ืืจืฉืืื, ืื ืืื ืืื ื ืืืืื ืืืืข ืขื ืืืฉืงืืื ืืกืคืฆืืคืืื ืืืืงืฆืื ืืื ืืืช ืืืืื ืืืช ืืขืืืคืืืืช. ืืชื ืืืื ืืจืืืช ืืช ืืืฉืงืืืืช ืื ืืขืจืื ืืช ืืืืื ืืืช ืฉื ืืจืืจืช ืืืืื ืฉื ืืชืืื ืืงืืืืื ืจืง โโืืงืืื ืืงืืจ .
ืจืืื ืืฆืืื ืฉืคืขื ืืฆืืื ื ืืจืฉืื ืฉืฆืืืช ืื ืงืืื ื ืงืืืืช ืืคื ืืืื ืืืช ImageLocalityPriority, ืืืขื ืืงื ื ืงืืืืช ืืฆืืืช ืื ืืืจ ืืฉ ืื ืืช ืืชืืื ื ืืืจืืฉื ืืืคืขืืช ืืืคืืืงืฆืื. ืืืืืจ, ืืืื ืฉืืืฉืงื ืืจืกื ืืืฉื ืฉื ืืืคืืืงืฆืื, ืืฉืืืช ื-cron ืืฆืืืื ืืจืืฅ ืขื ืฉื ื ืฆืืชืื, ืืืืจืื ืืื ืชืืื ื ืืืฉื ืื-docer registry, ืืื ืฉื ื ืฆืืชืื ืงืืืื ืฆืืื ืกืืคื ืืืื ืืืชืจ ืืืืก ืืฉืืืฉื. .
ืืคื ืฉืืชืืชื ืืืขืื, ืืืืื ืื ืืื ื ื ืจืืืื ืืืืข ืขื ืืขืจืืช ืืืื ืืืช ImageLocalityPriority, ืื ืืื ืืืืืง ืืช ืืื ืื ืฉืื ื, ืืจืงื ื ืืช ืืชืืื ื ืขื ืืืจืกื ืืืืฉื ืฉื ืืืคืืืงืฆืื ืืฆืืืช ืืฉืืืฉื, ืืืืืจ ืืื ืืชืืืื ืขืื ืืื ืฉืฆืจืื . ืืืืืง ืืืื ืืืื ืืืช ImageLocalityPriority ืืขืืืช ืืชืืืื ื ืฆืคืชื ืืขืชืื ืจืืืงืืช ืืืื; ืืขืชืื ืงืจืืืืช ืืืชืจ ืืื ืืืืชื ืงืฉืืจื ืืืฉืื ืืืจ. ืืฉื ืืขืืืื ืฉืื ืืืืื ื ืื ืคืืช ืืืืื ืืื ืืื ืืืช ืืืืืื ืืืช ืืจืฉืืืช ืืขืืืคืืืืช ืฉื ืืจืืจืช ืืืืื ืฉื kube-scheduler, ืืื ืื ื ืฆืืจื ืื ืืืื ืืืืฉ ืฉื ืืืื ืืืช ืชืืืื ืืคืื.
ืืฆืืจืช ืืืขืื
ืจืฆืื ื ืฉืืคืชืจืื ืืืขืื ืืืื ืืื ืฉืืืชืจ ืกืคืฆืืคื, ืืืืืจ, ืืืฉืืืืช ืืขืืงืจืืืช ืฉื Kubernetes (ืืื ืื ืื ื ืืชืืืื ืื ื-kube-scheduler ืืจืืจืช ืืืืื) ืฆืจืืืืช ืืืืฉืืจ ืืื ืฉืื ืื. ืื ืจืฆืื ื ืืคืชืืจ ืืขืื ืืืงืื ืืื ืืืืฆืืจ ืืืชื ืืืงืื ืืืจ. ืื ืืืขื ื ืืฉืชื ืืคืฉืจืืืืช ืืคืชืจืื ืืืขืื, ืฉืืืืจืื ืืืืื ืืืชืื โ ืืฆืืจืช ืืชืืื ื ืืกืฃ ืื ืืชืืื ืืฉืืื. ืืืจืืฉื ืืขืืงืจืืช ืืชืืืื ืืฉืืืืช cron ืืื ืืืืงืช ืืขืืืก ืืืืคื ืฉืืื ืขื ืคื ื ืฉืืืฉื ืฆืืชืื. ืืจืืฉื ืื ืืืืื ืืืืืช ืืจืืฆื ืขื ืืื ืืืื ืืืช Kube- Scheduler ืืงืืืืช, ืื ืืื ืืคืชืืจ ืืช ืืืขืื ืฉืื ื ืืื ืืขื ืืืชืื ืืช ืืืชืืื ืฉืื.
ืืืจืืืช ืืืฆืืจื ืืคืจืืกื ืฉื ืืชืืื kube ื ืืกืฃ ืืชืืืจืืช ื
- ืืฉ ืืคืจืืก ืืช ืืฉืืจืืช ื-Static Pod ืืื ืืืกืืจื ืืืฉืืืืืช
- ืืฉ ืืกืคืง ืกืืืื ืืช ืืชืงืืืช ืืืงืจื ืฉืืคืื ืืคืขืื ืขื kube-scheduler ืืื ื ืืืื
- ืืขืืืคืืช ืืขืืงืจืืช ืืขืช ืชืื ืื ืฆืจืืื ืืืืืช ืืกืคืจ ืืืฉืืืื ืืืืื ืื ืืฆืืืช (LeastRequestedPriority)
ืคืชืจืื ืืช ืืืืขื
ืจืืื ืืฆืืื ืืื ืฉืื ื ื ืืฆืข ืืช ืื ืืขืืืื ื-Kubernetes v1.14.7, ืืืืืื ืื ืืืจืกื ืฉืฉืืืฉื ืืคืจืืืงื. ืืืื ื ืชืืื ืืืชืืืช ืื ืืคืกื ืืืื ืืืื ืื ืืืืฉ ืฉืื ื. ืืืื ื ืืงื ืืช ืืจืืจืช ืืืืื ืฉื ืื ืืคืกื (/etc/kubernetes/manifests/kube-scheduler.yaml) ืืืกืืก ืื ืืื ืืืชื ืืืืคืก ืืื:
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
ืืงืฆืจื ืขื ืืฉืื ืืืื ืืขืืงืจืืื:
- ืฉืื ื ืืช ืืฉื ืฉื ืืคืื ืืืืืื ื-kube-scheduler-cron
- ืฆืืื ืืช ืืฉืืืืฉ ืืืฆืืืืช 10151 ื-10159 ืืคื ืฉืืืืืจื ืืืคืฉืจืืช
hostNetwork: true
ืืืื ื ื ืืืืืื ืืืฉืชืืฉ ืืืืชื ืืฆืืืืช ืืื ืืจืืจืช ืืืืื ืฉื kube-scheduler (10251 ื-10259) - ืืืืฆืขืืช ืืคืจืืืจ --config, ืฆืืื ื ืืช ืงืืืฅ ืืชืฆืืจื ืฉืืืชื ืืฉ ืืืคืขืื ืืช ืืฉืืจืืช
- ืืจืืื ืืืืืจืช ืฉื ืงืืืฅ ืืชืฆืืจื (scheduler-custom.conf) ืืงืืืฅ ืืืื ืืืช ืืชืืืื (scheduler-custom-policy-config.json) ืืืืืจื
ืื ืชืฉืื ืฉืืชืืื ืืงืืื ืฉืื ื ืืฆืืจื ืืืืืืช ืืืืืช ืืืจืืจืช ืืืืื. ืขืจืื ืืช ืชืคืงืื ืืืฉืืื ืฉืื:
kubectl edit clusterrole system:kube-scheduler
...
resourceNames:
- kube-scheduler
- kube-scheduler-cron
...
ืขืืฉืื ืืืื ื ืืืจ ืขื ืื ืฉืฆืจืื ืืืืื ืืงืืืฅ ืืชืฆืืจื ืืืงืืืฅ ืืืื ืืืช ืืชืืืื:
- ืงืืืฅ ืชืฆืืจื (scheduler-custom.conf)
ืืื ืืงืื ืืช ืชืฆืืจืช ืืจืืจืช ืืืืื ืฉื kube-scheduler, ืขืืื ืืืฉืชืืฉ ืืคืจืืืจ--write-config-to
ืฉืืชืืขืื . ื ืืงื ืืช ืืชืฆืืจื ืืืชืงืืืช ืืงืืืฅ /etc/kubernetes/scheduler-custom.conf ืื ืคืืืช ืืืชื ืืฆืืจื ืืืื:
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"
ืืงืฆืจื ืขื ืืฉืื ืืืื ืืขืืงืจืืื:
- ืืืืจื ื ืืช schedulerName ืืฉื ืฉื ืฉืืจืืช kube-scheduler-cron ืฉืื ื.
- ืืคืจืืืจ
lockObjectName
ืืชื ืื ืฆืจืื ืืืืืืจ ืืช ืฉื ืืฉืืจืืช ืฉืื ื ืืืืืื ืฉืืคืจืืืจleaderElect
ืืืืืจ ื-true (ืื ืืฉ ืื ืฆืืืช ืืืกืืจ ืืื, ืืชื ืืืื ืืืืืืจ ืืืชื ื-false). - ืฆืืื ืืช ืื ืชืื ืืงืืืฅ ืขื ืชืืืืจ ืฉื ืืืื ืืืช ืืชืืืื ืืคืจืืืจ
algorithmSource
.
ืืืื ืืืกืชืื ืืงืจืื ืขื ืื ืงืืื ืืฉื ืืื, ืฉืื ืื ื ืขืืจืืื ืืช ืืคืจืืืจืื ืฉื ืืืคืชื leaderElection
. ืืื ืืืืืื ืกืืืื ืืช ืืชืงืืืช, ืืคืขืื ื (leaderElect
) ืชืืืื ืืืืจืช ืื ืืื (ืืืกืืจ) ืืื ืืชืจืืืืื ืฉื ืืชืืื ื-kube-scheduler ืฉืื ื ืืืืฆืขืืช ื ืงืืืช ืงืฆื ืืืช ืขืืืจื (resourceLock
) ืืฉื kube-scheduler-cron (lockObjectName
) ืืืจืื ืืฉืืืช ืฉื ืืขืจืืช kube (lockObjectNamespace
). ืืืฆื Kubernetes ืืืืื ืืืื ืืช ืืืืื ืฉื ืืจืืืืื ืืขืืงืจืืื (ืืืื kube-scheduler) ื ืืชื ืืืฆืื ื
- ืงืืืฅ ืืืื ืืืช ืชืืืื (scheduler-custom-policy-config.json)
ืืคื ืฉืืชืืชื ืงืืื, ืื ื ืืืืืื ืืืืืช ืขื ืืืื ืืืื ืืืช ืกืคืฆืืคืืช ืคืืขื ืืจืืจืช ืืืืื ืฉื kube-scheduler ืจืง ืขื ืืื ื ืืชืื ืืงืื ืฉืื. ืืืืืจ, ืื ื ืืื ืืืฉืื ืงืืืฅ ืขื ืืืื ืืืช ืชืืืื ืขืืืจ ืืจืืจืช ืืืืื ืฉื kube-scheduler ืืืืชื ืืืคื ืืื ืงืืืฅ ืชืฆืืจื. ืืื ื ืชืืจ ืืช ืืืื ืืืช ืืชืืืื ืฉืื ืื ื ืืขืื ืืื ืื ืืงืืืฅ /etc/kubernetes/scheduler-custom-policy-config.json ืืืืคื ืืื:
{
"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
}
ืืคืืื, kube-scheduler ืืจืืื ืชืืืื ืจืฉืืื ืฉื ืฆืืชืื ืืืืื ื ืืชื ืืชืืื ืคืื ืืืชืื ืืืืื ืืืช GeneralPredicates (ืืืืืืช ืงืืืฆื ืฉื ืืืื ืืืช PodFitsResources, PodFitsHostPorts, HostName ื-MatchNodeSelector). ืืื ืื ืฆืืืช ืืืขืจื ืืืชืื ืืืขืจื ืืืืื ืืืช ืืืขืจื ืืขืืืคืืืืช. ืืื ืืืื ืืช ืชื ืื ืืฉืืืชื ื, ืกืืจื ื ืฉืืขืจืืช ืืืื ืืืช ืืื ืชืืื ืืคืชืจืื ืืืืคืืืืื. ืืจืฉื ืื ืืืืืืจ ืืื ืฉืืขืจืืช ืืืื ืืืช ืขื ืืชืืืืจืื ืืืคืืจืืื ืฉืื ืืืื ื ื
ืืื ื ืงืจื ืืื ืืคืกื ืฉื ื-kube-scheduler ืืืืฉ, ืฉืืฆืจื ื ืืชืืืืช ืืคืจืง, kube-scheduler-custom.yaml ืื ืืงื ืืืชื ืื ืชืื ืืื /etc/kubernetes/manifests ืืฉืืืฉื ืฆืืชืื ืืืกืืจ. ืื ืืื ื ืขืฉื ืืืืื, Kubelet ืืฉืืง ืคืื ืืื ืฆืืืช, ืืืืืื ืื ืฉื kube-scheduler ืืืืฉ ืฉืื ื ื ืจืื ืืืืข ืฉืงืืืฅ ืืืืื ืืืช ืฉืื ื ืืืื ืืืฆืืื:
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:{}]'
ืืขืช ืื ืฉื ืืชืจ ืืื ืืฆืืื ืืืคืจื ืฉื CronJob ืฉืื ื ืฉืื ืืืงืฉืืช ืืชืืืื ืืชืจืืืืื ืฉืื ืฆืจืืืืช ืืืืืช ืืขืืืืืช ืขื ืืื ืืชืืื ืืงืืืืื ืืืืฉ ืฉืื ื:
...
jobTemplate:
spec:
template:
spec:
schedulerName: kube-scheduler-cron
...
ืืกืงื ื
ืืกืืคื ืฉื ืืืจ, ืงืืืื ื ืงืืื-ืชืืืื ื ืืกืฃ ืขื ืกื ืืืืืื ืฉื ืืืื ืืืช ืชืืืื, ืฉืขืืืืชื ืืคืืงืืช ืืฉืืจืืช ืขื ืืื ืืงืืืื. ืื ืืกืฃ, ืงืืขื ื ืืช ืืืืจืชื ืฉื ืื ืืื ืืืฉ ืืื ืืชืจืืืืื ืฉื ืืื ืืืื ืื ืฉืื ื ืืืงืจื ืฉืืื ืืื ืืืฉื ืื ืืืื ืืืื ืืกืืื ืืืฉืื.
ืืืฉืืืื ืืฉืืจืืชืื ืจืืืืื ืืืฉืืืื ืืืืืช ืืชืืืื ืื ืืจื ืืจืืจืช ืืืืื ืฉื kube-scheduler, ืืื ืืฉืืืืช ื-cron ืืืขืืจื ืืืืืืื ืืืฉืืืืช ืืืืฉืืช. ืืขืืืก ืฉื ืืฆืจ ืขื ืืื ืืฉืืืืช cron ืืืคืฅ ืืขืช ืืืืคื ืฉืืื ืขื ืคื ื ืื ืืฆืืชืื. ืืืชืืฉื ืืื ืฉืจืื ืืฉืืืืช ื-cron ืืืืฆืขืืช ืืืืชื ืฆืืชืื ืืื ืืืืฉืืืื ืืขืืงืจืืื ืฉื ืืคืจืืืงื, ืืืืจ ืืคืืืช ืืฉืืขืืชืืช ืืช ืืกืืืื ืืืืืช ืคืืืื ืขืงื ืืืกืืจ ืืืฉืืืื. ืืืืจ ืืฆืืช ื-kube-scheduler ืื ืืกืฃ, ืืืจ ืื ืืชืขืืจืจื ืืขืืืช ืืชืืืื ืื ืืืื ืฉื ืืฉืืืืช cron.
ืงืจื ืื ืืืืจืื ืืืจืื ืืืืื ืฉืื ื:
ื ืืืื ืชื ืืขื ืืืฉืืื Kubernetes ืขื Calico ืืื ืช ืืคืฉืจืืืืช ืืืื ืืืช ืืจืฉืช ืขื Calico ืืืฉืจ Linux conntrack ืืื ืืืจ ืื ืืืจ ืฉืื 4 ืืืืืืืช ืืืขืืจืืช iota ืฉืืจืื ืืฉืืื Kubernetes ืืื ืืฉืืชื ืืคืก ืคืจืืกืช ืืื ืืฉืืชื ืืืกืื ื ืชืื ืื Kubernetes: ืืืืข ืื ืื ืืฉืื ืืืืืืจ ืืช ื ืืืื ืืฉืืื ืืืขืจืืช?
ืืงืืจ: www.habr.com