Kube-scheduler ααΊααΆαααΆαααΆαα»ααααΆαααα½ααα Kubernetes αααααα½ααα»αααααΌααααα»αααΆααααααααΆααα·ααΆα pods αα ααΌααΆαα nodes αααα’αα»αααααΆααααααΆααααααααΆααααααΆααα ααΆααΉααα αααα»αα’αα‘α»ααααααααα·ααααα·ααΆαααα ααααα Kubernetes ααΎααα·αα αΆαααΆα ααα·αα’αααΈαααααΆαααααΆαα½ααααααααΌαααΆαααααΎααΎααααΈαααααααΆααα·ααΆααααα αααααΆααααα»ααααααααΆααααααααααα·ααΈααααααααααααΆ kube-default ααΊαααααααααααΆαααα·α αα ααΆααααα αΆαααααααΆαα αααΎαα ααααααΆαααΆααααα ααΆαααααΆαααΆααα ααααααααΆααΆαααΆααααααΆαααααααΆααααΎααααα»αααΆαααααααα½αααααΎαααΆαααααΆααααα αααα α αΎαααΆααα·ααΈααΈααααΆαααΎααααΈαααααα αα·α αα ααΆααααα
- αααααΎααααααα·ααΈααααααααααααΆ kube ααΆαα½αααΉααααα»αα αααΆααααααΆαααααα½α
- ααααααααααα·ααΈααααααααααααΆαααααα½αααααα’ααα α αΎαααααααααΆα±ααααααΎααΆαααΆαα½αααααΎαααΆαααΈααα API
αα αααα»αα’αααααααα αααα»αααΉααααααΆααα’αααΈααΆαα’αα»ααααα ααα»α ααΈαα½α ααΎααααΈαααααααΆααααα αΆααααΆααααααααααα·αααααΎααααΆαα hearth ααΎαααααααα½αααααααΎαα
ααΆαααααΆαααααΈαα’αααΈααααααα kube-scheduler ααααΎαααΆα
ααΆαα½αα±ααααααααααΆααααΆαα·αααα ααααααΆααα·ααααααΆ kube-scheduler αα·αααα½ααα»αααααΌαα ααααααΆααααααααΆααα·ααΆααααααααΆαααα - ααΆααα½ααα»αααααΌααααααα»αααΆααααααααααΆαααααααααΌαααΆαα pods ααα»αααααα αααααΆααα·αααα ααααααααααΆαααΆααααα kube-scheduler ααΊααΆαααααααααΆαα αααααΆαααα‘αααα αααΆαααΈααα API αααααΆααααΆαααααΎαα»ααααααααα α αΎααααααΆαααααααααααΆαααΆαααααααΆαααα ααα
ααααΌα kube-scheduler α
ααααααααααΈααααΆααααα pod α’αΆα
ααααΌαααΆααααααααααααα’αα»αααααΆααααααΆααα predicates α αααααΆαααα ααααΆααααΈαα½ααααΈαααααΈαααααα½αααΆααα·αααα»ααΆααααΆαααα½αααααααΆααααααΆαααα’αΆαα·ααΆαα ααΆαααααα ααααΆαααααααΆαα
ααα½ααα·αααα»α’αα·ααααΆααααΌαααΆαααααΎαααΎαα ααααα·αααΎααΆαααααΆαααααααΆααα·αααα»α’αα·ααααΆααΌα
ααααΆ α
ααααααα½αααααΌαααΆαααααΎαααΎαα αααααΈ αα·αααΆααα·αααααΆα’αααΈαααααΆαααααααΆαααα (ααΆααααα) αα·αα’αΆαα·ααΆα (ααΆαααΆαααα·αααα») α’αΆα
ααααΆααα
αααα»α
ααΆααα·αααααΆα’αααΈααΆαααΆααααα αΆ
αααααΈααΆααΆαα ααααα Kubernetes ααααααααααΆααΆα αααΎαααααααα»αααααΌαααΆααααααΆαα Nixys ααααα ααααααΌαα‘αΎα ααΎαααΆααα½αααααααααα αΆααααΆααααααααΆααα·ααΆααα αααααααΈαααα αα αααααααααααααα½αααααααΎαααααΌαααΆαααΎααααΈααααΎαααΆααα·α αα ααΆαααΆαααΆαααααααα½αα ααα½ααα (~100 CronJob entities)α ααΎααααΈααααα½αααΆααα·αααααΆα’αααΈαααα αΆα±ααααΆαα αααΎαααΆαααα’αΆα ααααΎαα ααΆα ααΎαααΉαααΎαα§ααΆα ααααα½α ααΈααααΌααΊααΈα ααααα αααα»αααααα·α αα ααΆα cron ααααΌαααΆαααΆααα±ααααααΎαααΆααααααααα»ααα½αααΆααΈ ααααααααΎαααααα»ααααααα ααΎαααΈααΈααΌα ααΎααααΈααααΎαααΆααα·α αα ααΆα cron ααααΆααααΈαααααΆαααααααααΌα ααααΆααααα·αααααΌαααΆααααα αα (24 vCPUs αα ααΎααΈαα½αα)α
αααα»ααααααΆαα½αααααΆααα ααΆαα·αα’αΆα αα αα½α αααααα»αααΆααα·ααΆααααααΆαααααΉαααααΌαααΆααΎααααααααα»ααααΆαααα CronJob ααΉαααααΌαα’αα»αααααααααααΆααα·ααΆααααα·αααααααααα αΌααααα»αααααΆααααααΌαα₯ααααααα ααΆααααααααα»αα’αα‘α»ααααααααα·ααααα·ααΆαααααααΆαααα kube-scheduler ααααΆααααΈαα½ααααααΎαααΆαααΆαααΆα 3-4 ααααααααΎα ~ 20-30% ααααααα»ααα ααΎ CPU αα node ααΈαα½ααα
αααα αΆααααααα½αααΆααΊααΆααααααα cron task pods αααααααΌαααΆααααααααααα ααΎααααΆαααα½ααααα»αα ααααααααΆααααΆααααΈα αααααΊαα αααααΆαα½αααα αα·αααΆααααααα½αααααΌαααΆαααααααα»ααααααΆααααααΆαααα½ααα αααααααα ααΎααααΆααααΈααααααααα 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-default α ααααααΆαααΆααααα αα ααΈαααααΎαααααααα»αααΉαααΆαααααΆαααααΆαααα ααα½αααΈαα
- αα
ααααα·αααααΆααααααααΆα’αα·ααααΆ (10) αα·αααα»αααααα½αααΆααααααΆααααα’αΆαα·ααΆααα½αα
ααα½αααααΌαααΆααααα»ααααα
αΆααα αα
αααα»αααΆααααααααααΆαααΎαααααααα ααα» α’αααα’αΆα
ααΎαααΎαααΆαααααΆααα’αΆαα·ααΆαααΆααα’αααααααΆααααα»ααααα
αΆαααα
αααα»ααααααα ααα» ααααΆααααα½αααΆααα·αααα»ααΌα
ααααΆαααα»αααΆααααααααΆααα·ααΆαααααααΆ αα·ααααα αΆ ααα»ααααααααααα
α»αααααααα
αααα»αααααΈααααΆααααα
ααααααΆααααα αΆααΊαα»αααααΆα ααΌα
ααααα αΎα ααΎαα’αΆα
ααααα·ααααΆαααΆαααΆ αααααΆααα’αΆαα·ααΆααα½αα
ααα½α ααΆαααΆαααα·αααα»ααΎαα‘αΎα "αα
ααΈαααααααΆα" α αΎαααΎααα·αααΆααα·ααΈαααααΆ α’αΆαα·ααΆαααΆαααααααΆαααα·αααα½αααΆααα·αααα»αααααα ααΎαααΆααα·αααααΆα’αααΈαααα αΆααααααΆαααα’α·ααα
αααα»α
issue ααααΆαα Kubernetes αα ααΎ Github α αα αααααααα ααΆαααααΎαααααααΌαααΆαααα½αααΈα’αααα’αα·ααααααααΆ ααΆαααΆααααααΆααααααααΆααΉαααααΌαααΆααααααααα αααα»αααΆαα’αΆααααα Kubernetes v1.15,1.16, 1.17 αα·α XNUMX α - αα·αααΆααα·ααΈααΆααααα½ααααα»αααΆααααααΆααΎααΆααααααααΆααααΆααααΆαα½αααααααααααΆα kube-scheduler αα
αα
α»αααααααααα»αααααΎααΆαααΆαα½ααααααα ααΆα αα
α―αααΆα αααααΈαααααααΌαααΆαααΆααααααΈ ααα»ααααααΆαα·αααΆαααααααΆαα’αααΈααααααααΆααααΆααααΆαα½ααααααααΌαααΆααααααα αααααααααΆαααα’αΆαα·ααΆαααΈαα½αααααααα α’αααβα’αΆα βααΎαβααΎαβαααααα α¬βααβααααα½αβαααααΆαααβααααβαααααα·ααΈβαααααβααΆαβααααα kube-schedule ααααΆαααΎαβααβαααα»αβααα»ααααααααΌαααααα .
αα½αααααααααΆααααΆαα ααααααααΎαα’αΆα αααααααΆααΆααααΆαααα·αααΆαααα½ααα·αααα»ααααα ααΆααααααΆααα ImageLocalityPriority αααααααααααααΆααα ααα’α»ααα ααααΆααααααα·αααΎααΆααΆαααΌαααΆααααα αΆαααΆα ααααααΆααααααΎαααΆααααααα·ααΈαα½α α αΎαα αααααΊαα αααααααααααΈαααααααα·ααΈααααΌαααΆαααΆααα±ααααααΎαααΆα αα·α αα ααΆα cron ααΆααααααααααααΎααααΈααααΎαααΆαααΎααααΆααααΈα αααααΆαααααΌαααΆαααααΈααΈαααααΈααααα docker αα ααΆαααα½ααα α αΎαααΌα ααααααααΆααααΈαααΆαααα½ααα·αααα»α α»αααααααααααααΆαααΆαααααα ααΉαααΈααΈα .
ααΌα ααααααα»αααΆααααααααΆαααΎ αα αααα»ααααααα ααα» ααΎααα·αααΎαααααααΆαα’αααΈααΆαααΆααααααααααααααααΆα ImageLocalityPriority ααΌα ααααααΎααααΈαα·αα·αααααΎαααΆαααααααααααααΎα ααΎαααΆααααα ααααΌαααΆαααΆαα½αααΉαααααααααΈαααααααα·ααΈαα ααΎααααΆααααΈααΈ αααααΆααααΈαααααΆααα·ααΆαααααΎαααΆαααΆαααααΉαααααΌαα . ααΆα αααΆααααΆαααααααΆααααααααΆααααα ImageLocalityPriority ααααααα αΆααααααααααααΌαααΆαααααααααααΎαααααααΆαα ααΆααΉαααΆααααΆααααΌαααΆαααααΆααααΆαα½αα’αααΈααααααααα αααααΆαααααΆααα·ααααααΆααΎααα·αα’αΆα ααααΆααααα α»αααΆαααααα»αααΌααααααΆαααααΈαα½αααα αααα»ααααααΈα’αΆαα·ααΆααααααααα·ααΈααααααααααααΆ kube ααααΆαααΎα ααΎαααΆααααααΌαααΆααααααΆααααΆαααααααααααααα’αΆα ααααααααΆααααααααΆααααααααααα pod α
ααΆααααααΎααααα αΆ
ααΎαα ααα±αααααααααααΆαα αααααααα αΆααΆαααΆαααΆααααΆααααΆααααα’αΆα ααααΎααΆα αααααΊα’αααααΆαααααΆαααααα Kubernetes (αα ααΈαααααΎαααΆααααααΆ default kube-scheduler) αα½ααααα αααα·αααααΆααααααΌαα ααΎααα·αα αααααααααΆααααα αΆαα αααααααα½α α αΎααααααΎαααΆαα αααααααααααααα ααΌα ααααα αΎα ααΎαααΆαααααααααααΎαααΈααααααΆααααΆααααααααΆααααα αΆ αααααααΌαααΆααααααΆααα αααα»αααΆαααααΆαα’αααΈα’ααααα - αααααΎααααααα·ααΈαααααααααααααα α¬αααααααααααα½αα―αα αααααΌαααΆαα αααααααααΆααααααααααααΆααα·α αα cron ααΊααααΌαα ααα αΆαααααα»αα±ααααααΎαααααΆααΎααααΆααααΈα αααααΌαααΆααααα’αΆα αααααααΆαααααααααΆααααααααα·ααΈααααααααααααΆ kube αααααΆαααααΆαα ααΌα ααααααΎααααΈαααααααΆααααα αΆααααααΎα ααΆααααΆαα ααα»α ααΆαααα»αααΆαααααααααααα·ααΈααααααααααααΆαααααα½αααααα’αααααα
ααα
ααααΈααααΆααααααΆαααααααΎα αα·αααΆαααααααΆααααααα·ααΈααααααααααααΆ kube ααααααααααΌαααΆααα·αααααΆαα
αααα»α
- ααααΆαααααααααααΌαααααΆααα±ααααααΎααααΆααααΆ Static Pod ααΎα’ααααααααααααα αααααααΆααα’ααα
- ααΆαα’ααα±αα ααααααα α»αααααΌααααααααααΌααααα»αααααΈααααααααααααΆαα½αα§αααααααααααααααααΆ kube αα·αα’αΆα ααααΎααΆα
- α’αΆαα·ααΆαα αααααα αααααααΎαααααΆααα½αααααΆα ααα½αααααΆααααααΆααα ααΎααααΆαα (LeastRequestedPriority)
αααααααααΆαααΆαα’αα»αααα
ααΆαα½αα±ααααααααααΆααααααΆααααΆααΎαααΉαα’αα»ααααααΆαααΆαααΆααα’αααα αααα»α Kubernetes v1.14.7 ααΈααααα αααααΊααΆαααααααααααΌαααΆαααααΎαα αααα»αααααααα α αΌαα αΆααααααΎααααααΆαααααα manifesto αααααΆαααααααα·ααΈ kube-scheduler ααααΈααααααΎαα α αΌαααααααΆαααΎα manifest (/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
α αΎαβααΎαβαα·αβα’αΆα βααααΎβα αααβααΌα ααααΆβααΉαβ default kube-scheduler (10251 αα·α 10259) - αααααααΎαααΆαααΆαααααα --config ααΎαααΆααααααΆααα―αααΆαααααααα ααΆαααααααααααααααΆαααααα½αααααααΌαααΆαα αΆααααααΎα
- ααΆαααα‘αΎαα―αααΆαααααααα ααΆαααααααα (scheduler-custom.conf) αα·αα―αααΆααααααΆααααααααααα (scheduler-custom-policy-config.json) ααΈαααΆαααΈα
αα»αααααα ααΆαααααα·ααΈααααααααααααΆ kube ααααααΎαααΉαααααΌαααΆααα·αααα·ααααααααΉαααααΆαααΎαα ααααααα½ααα½ααΆααΈα αααααααααααΆα
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"
ααααααα’αααΈααΆαααααΆααααααΌαααααΆαααα
- ααΎααααααααααααααααα·ααΈαααααααααα ααΆαααααααααΆαααα kube-scheduler-cron ααααααΎαα
- αα
αααα»ααααΆαααΆαααααα
lockObjectName
α’αααααααααΌαααααααααααααααΆααααααααααΎα α αΎαααααΌαααααΆααααΆαααΆαααΆααααααααααleaderElect
ααααααα αα·α (ααααα·αααΎα’αααααΆαααααΆαααααααα½α α’αααα’αΆα αααααααΆαα ααΆαα·ααα·α)α - αααααΆααααααΌααα
ααΆααα―αααΆαααΆαα½αααΉαααΆααα·αααααΆα’αααΈαααααΆααααααααααααααα»ααααΆαααΆαααααα
algorithmSource
.
ααΆααΆαααααααααα»αααΆααα·αα·αααααΎαα±ααααΆαααααα·ααααααΌαα
ααα»α
ααΈααΈα αααααΎαααααααα½ααααΆαααΆαααααααααααΆαααα leaderElection
. ααΎααααΈααΆααΆααΆαααΌαααΆαα’ααα±αα
ααααααα α»α ααΎαααΆαααΎα (leaderElect
(resourceLock
) αααααΆααααααααΆ kube-scheduler-cron (lockObjectName
) αα
αααα»αααα ααααααααααααα kube (lockObjectNamespace
) ααααααα Kubernetes ααΆααΆααΆαα’αΆα
ααααΆαααααααααααΆαααΆαα»ααααΆααα (αα½αααΆαααααααα·ααΈαααααααα kube) α’αΆα
ααααΆααα
αααα»α
- α―αααΆαααααααααΆααααααααα (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 policy)α α αΎααααααΆααααααααΆααααΈαα½ααααααΌαααΆαααΆαααααααααα’αα»αααααΆαααΆααααααααααααααΆααα
αααα»αα’αΆααα’αΆαα·ααΆαα ααΎααααΈααααααααααααααααα·α
αα
ααΆαααααααΎα ααΎαααΆααα·α
αΆαααΆααΆ αααα»αααααααααααΆααααααα ααΊααΆαααααααααΆααααααααΎααααα»αα αααα»αααΌαααααΉαα’αααααΆ αααα»ααααααααΆαααααΆαα½αααΉαααΆααα·αααααΆαααα’α·ααααααα½αααααΆααα
αααα»α
α αΌαα α manifest αα kube-scheduler ααααΈαααααΎαααΆααααααΎααα ααΎαααααΌα kube-scheduler-custom.yaml α αΎαααΆααααΆαααα»αααααΌαααΆαααααα /etc/kubernetes/manifests ααΎααααΆααααααΈα ααααα·αααΎα’αααΈαααααααααΆαααααΌαααΆαααααΎααΆαααααΉαααααΌα Kubelet ααΉαααΎαααααΎαααΆααααα ααΎααααΆααααΈαα½αα α αΎααα αααα»ααααααα ααα»αααααααα·ααΈααααααααααααΆ kube ααααΈααααααΎα ααΎαααΉαααΎαααααααΆααααα―αααΆααααααΆαααααααααΎαααααΌαααΆαα’αα»αααααααααααααα
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 ααααααΎαααΆααΆααααααΎαααααΆααααΆααααααααα pods ααααααΆαα½αααααααΌαααΆαααααΎαααΆαααααααααα·ααΈ kube-scheduler ααααΈααααααΎα:
...
jobTemplate:
spec:
template:
spec:
schedulerName: kube-scheduler-cron
...
ααα ααααΈααααα·ααααΆα
αα ααΈαααα»α ααΎαααα½αααΆααααααα·ααΈααααααααααααΆ kube ααααααααΆαα½αααΉααααα»ααααααΆαααααααααααααααΆαααα½αααα αααααΆαααΆααααααααΌαααΆααααα½ααα·αα·ααααααααααΆααααα kubelet α ααΎαααΈααα ααΎαααΆααααα αααΆαααααααααααααΎαααΎαααααΉαααΆαααααΈαααΆαα’ααααααα ααααααα·ααΈ kube-scheduler ααααααΎα αααα»αααααΈαααααααΉαααΆαα αΆαααα·αα’αΆα ααααΎααΆααααα ααα»αααα½αα ααα½αα
αααααα·ααΈ αα·αααααΆααααααααααΆααααααααΌαααΆαααααααααααΆαααααααααα·ααΈ kube-scheduler ααααΆαααΎα α αΎααα·α αα ααΆα cron ααΆααα’ααααααΌαααΆααααααααΆαααααα»ααα αααααα·ααΈααααΈα ααααα»αααααααααΎαα‘αΎαααααα·α αα ααΆα cron α₯α‘αΌααααααααΌαααΆαα ααα αΆαααααΎαααααΆαα ααΌααΆααααααΆααααΆααα’ααα ααααα·α αΆαααΆααΆαα·α αα ααΆα cron ααΆαα αααΎαααααΌαααΆαααααα·ααααα·αα ααΎααααΆααααΌα ααααΆαα ααΉααααααα·ααΈααααΆαααααααααα αααααΆαααΆαααααααα αΆαα·αααααααΆαααααΆααααΈ pods αααΆαααααΆαααααααΆααααααααααααΆαα αααααΆααααΈααααΆααααααα·ααΈααααααααααααΆ kube αααααα αααα αΆααΆαα½αααΉαααΆααααααααααα·αααααΎααααΆαααα·α αα ααΆα cron αααααΎαα‘αΎααααα αΎαα
ααΌαα’αΆαα’ααααααααααααααα ααΎαααααααααααΎααααααα
ααΆααααααααααα ααΆα ααααα αααα»αα ααααα Kubernetes ααΆαα½α Calico ααΆααααααΉαα’αααΈαααααΎαααααΆαα’αα»ααααααααααααΆααααααΆαααΆαα½α Calico αα αααααα Linux conntrack αααααΆαα·αααααααα’ααααααα αΎα 4 α§ααΆα αααααααΆαααααα iota ααΆαα’αΆαααααα ααααα Kubernetes αααααααΆααααααααα ααΆαααΆαααααααΆαααααα·αααααΎαααΆα αα·αααΌαααααΆααα·αααααα Kubernetesα α ααα»α’αααΈααΆαααΆααΆααΆαααΆααααααΆααααααΆααααΆαααααα»αααΆαααααααα ααΆααααααααααΆααααααααααααααΆααααααααα?
ααααα: www.habr.com