Information in this document may be out of date

This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Scheduler Configuration

์Šค์ผ€์ค„๋Ÿฌ ๊ตฌ์„ฑ

๊ธฐ๋Šฅ ์ƒํƒœ: Kubernetes v1.25 [stable]

๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ณ  ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ ์ปค๋งจ๋“œ ๋ผ์ธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜์—ฌ kube-scheduler ์˜ ๋™์ž‘์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์Šค์ผ€์ค„๋ง ํ”„๋กœํŒŒ์ผ(Profile)์„ ์‚ฌ์šฉํ•˜๋ฉด kube-scheduler์—์„œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ์Šค์ผ€์ค„๋ง์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„๋Š” ์ต์Šคํ…์…˜ ํฌ์ธํŠธ(extension point)๋ฅผ ํ†ตํ•ด ๋…ธ์ถœ๋œ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด๋Ÿฌํ•œ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ๊ตฌํ˜„ํ•˜์—ฌ ์Šค์ผ€์ค„๋ง ๋™์ž‘์„ ์ œ๊ณตํ•œ๋‹ค.

KubeSchedulerConfiguration (v1beta3 ๋˜๋Š” v1) ๊ตฌ์กฐ์— ๋งž๊ฒŒ ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๊ณ , kube-scheduler --config <filename>์„ ์‹คํ–‰ํ•˜์—ฌ ์Šค์ผ€์ค„๋ง ํ”„๋กœํŒŒ์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ตœ์†Œ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
clientConnection:
  kubeconfig: /etc/srv/kubernetes/kube-scheduler/kubeconfig

ํ”„๋กœํŒŒ์ผ

์Šค์ผ€์ค„๋ง ํ”„๋กœํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฉด kube-scheduler์—์„œ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ์Šค์ผ€์ค„๋ง์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„๋Š” ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ๋…ธ์ถœ๋œ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด๋Ÿฌํ•œ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ๊ตฌํ˜„ํ•˜์—ฌ ์Šค์ผ€์ค„๋ง ๋™์ž‘์„ ์ œ๊ณตํ•œ๋‹ค.

kube-scheduler ์˜ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ”„๋กœํŒŒ์ผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ต์Šคํ…์…˜ ํฌ์ธํŠธ

์Šค์ผ€์ค„๋ง์€ ๋‹ค์Œ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด ๋…ธ์ถœ๋˜๋Š” ์ผ๋ จ์˜ ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•œ๋‹ค.

  1. queueSort: ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์Šค์ผ€์ค„๋ง ๋Œ€๊ธฐ์—ด์—์„œ ๋ณด๋ฅ˜ ์ค‘์ธ ํŒŒ๋“œ๋ฅผ ์ •๋ ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ •๋ ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ๋Œ€๊ธฐ์—ด ์ •๋ ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ•œ ๋ฒˆ์— ๋‹จ ํ•˜๋‚˜๋งŒ ํ™œ์„ฑํ™”๋  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. preFilter: ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ•„ํ„ฐ๋งํ•˜๊ธฐ ์ „์— ํŒŒ๋“œ ๋˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์‚ฌ์ „ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ํ™•์ธํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํŒŒ๋“œ๋ฅผ unschedulable๋กœ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. filter: ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์Šค์ผ€์ค„๋ง ์ •์ฑ…์˜ ๋‹จ์ •(Predicates)๊ณผ ๋™์ผํ•˜๋ฉฐ ํŒŒ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๋…ธ๋“œ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ํ•„ํ„ฐ๋Š” ๊ตฌ์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœ๋œ๋‹ค. ๋…ธ๋“œ๊ฐ€ ๋ชจ๋“  ํ•„ํ„ฐ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ์•Š์œผ๋ฉด ํŒŒ๋“œ๋Š” unschedulable๋กœ ํ‘œ์‹œ๋œ๋‹ค.
  4. postFilter: ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํŒŒ๋“œ์˜ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋…ธ๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์„ ๋•Œ, ๊ตฌ์„ฑ๋œ ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœ๋œ๋‹ค. postFilter ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํŒŒ๋“œ schedulable ์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒฝ์šฐ, ๋‚˜๋จธ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ˜ธ์ถœ ๋˜์ง€ ์•Š๋Š”๋‹ค.
  5. preScore: ์ด๊ฒƒ์€ ์‚ฌ์ „ ์Šค์ฝ”์–ด๋ง ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์„ฑ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์ด๋‹ค.
  6. score: ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ•„ํ„ฐ๋ง ๋‹จ๊ณ„๋ฅผ ํ†ต๊ณผํ•œ ๊ฐ ๋…ธ๋“œ์— ์ ์ˆ˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ฐ€์ค‘์น˜ ํ•ฉ๊ณ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•œ๋‹ค.
  7. reserve: ์ง€์ •๋œ ํŒŒ๋“œ์— ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜ˆ์•ฝ๋œ ๊ฒฝ์šฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์•Œ๋ฆฌ๋Š” ์ •๋ณด์„ฑ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์ด๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋˜ํ•œ Reserve ๋„์ค‘ ๋˜๋Š” ์ดํ›„์— ์‹คํŒจํ•œ ๊ฒฝ์šฐ ํ˜ธ์ถœ ๋˜๋Š” Unreserve ํ˜ธ์ถœ์„ ๊ตฌํ˜„ํ•œ๋‹ค.
  8. permit: ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํŒŒ๋“œ ๋ฐ”์ธ๋”ฉ์„ ๋ฐฉ์ง€ํ•˜๊ฑฐ๋‚˜ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  9. preBind: ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํŒŒ๋“œ๊ฐ€ ๋ฐ”์ธ๋”ฉ๋˜๊ธฐ ์ „์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  10. bind: ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํŒŒ๋“œ๋ฅผ ๋…ธ๋“œ์— ๋ฐ”์ธ๋”ฉํ•œ๋‹ค. bind ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœ๋˜๋ฉฐ ์ผ๋‹จ ๋ฐ”์ธ๋”ฉ์ด ์™„๋ฃŒ๋˜๋ฉด ๋‚˜๋จธ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๊ฑด๋„ˆ๋›ด๋‹ค. bind ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ ์–ด๋„ ํ•˜๋‚˜ ์ด์ƒ ํ•„์š”ํ•˜๋‹ค.
  11. postBind: ํŒŒ๋“œ๊ฐ€ ๋ฐ”์ธ๋“œ๋œ ํ›„ ํ˜ธ์ถœ๋˜๋Š” ์ •๋ณด์„ฑ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์ด๋‹ค.
  12. multiPoint: ์ด ํ•„๋“œ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์˜ ๋ชจ๋“  ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ๋Œ€ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์„ ๋™์‹œ์— ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ™˜๊ฒฝ ์„ค์ • ์ „์šฉ ํ•„๋“œ์ด๋‹ค.

๊ฐ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ๋Œ€ํ•ด ํŠน์ • ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ์ž์ฒด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - plugins:
      score:
        disabled:
        - name: PodTopologySpread
        enabled:
        - name: MyCustomPluginA
          weight: 2
        - name: MyCustomPluginB
          weight: 1

๋น„ํ™œ์„ฑํ™”๋œ ๋ฐฐ์—ด์˜ ์ด๋ฆ„์œผ๋กœ * ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์›ํ•˜๋Š” ๊ฒฝ์šฐ, ํ”Œ๋Ÿฌ๊ทธ์ธ ์ˆœ์„œ๋ฅผ ์žฌ์ •๋ ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์Šค์ผ€์ค„๋ง ํ”Œ๋Ÿฌ๊ทธ์ธ

๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋œ ๋‹ค์Œ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์ด๋“ค ์ต์Šคํ…์…˜ ํฌ์ธํŠธ ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์„ ๊ตฌํ˜„ํ•œ๋‹ค.

  • ImageLocality: ํŒŒ๋“œ๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ์„ ํ˜ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: score.
  • TaintToleration: ํ…Œ์ธํŠธ(taint)์™€ ํ†จ๋Ÿฌ๋ ˆ์ด์…˜(toleration)์„ ๊ตฌํ˜„ํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ ๊ตฌํ˜„: filter, preScore, score.
  • NodeName: ํŒŒ๋“œ ๋ช…์„ธ ๋…ธ๋“œ ์ด๋ฆ„์ด ํ˜„์žฌ ๋…ธ๋“œ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: filter.
  • NodePorts: ๋…ธ๋“œ์— ์š”์ฒญ๋œ ํŒŒ๋“œ ํฌํŠธ์— ๋Œ€ํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํฌํŠธ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: preFilter, filter.
  • NodeAffinity: ๋…ธ๋“œ ์…€๋ ‰ํ„ฐ์™€ ๋…ธ๋“œ ์–ดํ”ผ๋‹ˆํ‹ฐ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: filter, score.
  • PodTopologySpread: ํŒŒ๋“œ ํ† ํด๋กœ์ง€ ๋ถ„๋ฐฐ ์ œ์•ฝ ์กฐ๊ฑด์„ ๊ตฌํ˜„ํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: preFilter, filter, preScore, score.
  • NodeUnschedulable: .spec.unschedulable ์ด true๋กœ ์„ค์ •๋œ ๋…ธ๋“œ๋ฅผ ํ•„ํ„ฐ๋งํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: filter.
  • NodeResourcesFit: ๋…ธ๋“œ์— ํŒŒ๋“œ๊ฐ€ ์š”์ฒญํ•˜๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ ์ˆ˜๋Š” LeastAllocated(๊ธฐ๋ณธ๊ฐ’), MostAllocated, RequestedToCapacityRatio ๋“ฑ 3๊ฐ€์ง€ ์ „๋žต ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: preFilter, filter, score.
  • NodeResourcesBalancedAllocation: ํŒŒ๋“œ๊ฐ€ ์Šค์ผ€์ค„๋œ ๊ฒฝ์šฐ, ๋ณด๋‹ค ๊ท ํ˜•์žกํžŒ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ์„ ํ˜ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: score.
  • VolumeBinding: ๋…ธ๋“œ์— ์š”์ฒญ๋œ ๋ณผ๋ฅจ์ด ์žˆ๋Š”์ง€ ๋˜๋Š” ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: preFilter, filter, reserve, preBind, score.
  • VolumeRestrictions: ๋…ธ๋“œ์— ๋งˆ์šดํŠธ๋œ ๋ณผ๋ฅจ์ด ๋ณผ๋ฅจ ์ œ๊ณต์ž์— ํŠน์ •ํ•œ ์ œํ•œ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: filter.
  • VolumeZone: ์š”์ฒญ๋œ ๋ณผ๋ฅจ์ด ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์˜์—ญ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: filter.
  • NodeVolumeLimits: ๋…ธ๋“œ์— ๋Œ€ํ•ด CSI ๋ณผ๋ฅจ ์ œํ•œ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: filter.
  • EBSLimits: ๋…ธ๋“œ์— ๋Œ€ํ•ด AWS EBS ๋ณผ๋ฅจ ์ œํ•œ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: filter.
  • GCEPDLimits: ๋…ธ๋“œ์— ๋Œ€ํ•ด GCP-PD ๋ณผ๋ฅจ ์ œํ•œ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: filter.
  • AzureDiskLimits: ๋…ธ๋“œ์— ๋Œ€ํ•ด Azure ๋””์Šคํฌ ๋ณผ๋ฅจ ์ œํ•œ์„ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: filter.
  • InterPodAffinity: ํŒŒ๋“œ ๊ฐ„ ์–ดํ”ผ๋‹ˆํ‹ฐ ๋ฐ ์•ˆํ‹ฐ-์–ดํ”ผ๋‹ˆํ‹ฐ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: preFilter, filter, preScore, score.
  • PrioritySort: ๊ธฐ๋ณธ ์šฐ์„  ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์ •๋ ฌ์„ ์ œ๊ณตํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: queueSort.
  • DefaultBinder: ๊ธฐ๋ณธ ๋ฐ”์ธ๋”ฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: bind.
  • DefaultPreemption: ๊ธฐ๋ณธ ์„ ์  ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: postFilter.

๊ธฐ๋ณธ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์ง€ ์•Š๋Š” ๋‹ค์Œ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์„ฑ API๋ฅผ ํ†ตํ•ด ํ™œ์„ฑํ™”ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

  • CinderLimits: ๋…ธ๋“œ์— ๋Œ€ํ•ด OpenStack Cinder ๋ณผ๋ฅจ ์ œํ•œ์ด ์ถฉ์กฑ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ต์Šคํ…์…˜ ํฌ์ธํŠธ: filter.

์—ฌ๋Ÿฌ ํ”„๋กœํŒŒ์ผ

๋‘˜ ์ด์ƒ์˜ ํ”„๋กœํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋„๋ก kube-scheduler ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ํ”„๋กœํŒŒ์ผ์—๋Š” ์—ฐ๊ด€๋œ ์Šค์ผ€์ค„๋Ÿฌ ์ด๋ฆ„์ด ์žˆ์œผ๋ฉฐ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ๊ตฌ์„ฑ๋œ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ธํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ์˜ ์ƒ˜ํ”Œ ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด, ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋Š” ํ”„๋กœํŒŒ์ผ๊ณผ ๋ชจ๋“  ์Šค์ฝ”์–ด๋ง ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋น„ํ™œ์„ฑํ™”๋œ ํ”„๋กœํŒŒ์ผ์˜ ๋‘ ๊ฐ€์ง€ ํ”„๋กœํŒŒ์ผ๋กœ ์‹คํ–‰๋œ๋‹ค.

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: default-scheduler
  - schedulerName: no-scoring-scheduler
    plugins:
      preScore:
        disabled:
        - name: '*'
      score:
        disabled:
        - name: '*'

ํŠน์ • ํ”„๋กœํŒŒ์ผ์— ๋”ฐ๋ผ ์Šค์ผ€์ค„ํ•˜๋ ค๋Š” ํŒŒ๋“œ๋Š” .spec.schedulerName ์— ํ•ด๋‹น ์Šค์ผ€์ค„๋Ÿฌ ์ด๋ฆ„์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ, ์Šค์ผ€์ค„๋Ÿฌ ์ด๋ฆ„ default-scheduler ๋ฅผ ๊ฐ€์ง„ ํ•˜๋‚˜์˜ ํ”„๋กœํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. ์ด ํ”„๋กœํŒŒ์ผ์—๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ๋‘˜ ์ด์ƒ์˜ ํ”„๋กœํŒŒ์ผ์„ ์„ ์–ธํ•  ๋•Œ, ๊ฐ๊ฐ์— ๋Œ€ํ•œ ๊ณ ์œ ํ•œ ์Šค์ผ€์ค„๋Ÿฌ ์ด๋ฆ„์ด ํ•„์š”ํ•˜๋‹ค.

ํŒŒ๋“œ๊ฐ€ ์Šค์ผ€์ค„๋Ÿฌ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด, kube-apiserver๋Š” ์ด๋ฅผ default-scheduler ๋กœ ์„ค์ •ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ํ•ด๋‹น ํŒŒ๋“œ๋ฅผ ์Šค์ผ€์ค„ํ•˜๋ ค๋ฉด ์ด ์Šค์ผ€์ค„๋Ÿฌ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ”„๋กœํŒŒ์ผ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๋‹ค์ˆ˜์˜ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ํ”Œ๋Ÿฌ๊ทธ์ธ ์ ์šฉํ•˜๊ธฐ

kubescheduler.config.k8s.io/v1beta3 ๋ถ€ํ„ฐ, ๋‹ค์ˆ˜์˜ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ๋Œ€ํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‰ฝ๊ฒŒ ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ”„๋กœํŒŒ์ผ ํ™˜๊ฒฝ ์„ค์ • multiPoint ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์™€ ๊ด€๋ฆฌ์ž๊ฐ€ ์ปค์Šคํ…€ ํ”„๋กœํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ๋•Œ ํ™˜๊ฒฝ ์„ค์ •์„ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

preScore, score, preFilter, filter ์ต์Šคํ…์…˜ ํฌ์ธํŠธ๊ฐ€ ์žˆ๋Š” MyPlugin ์ด๋ผ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๋ชจ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ๋Œ€ํ•ด MyPlugin ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ”„๋กœํŒŒ์ผ ํ™˜๊ฒฝ ์„ค์ •์„ ์‚ฌ์šฉํ•œ๋‹ค.

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: multipoint-scheduler
    plugins:
      multiPoint:
        enabled:
        - name: MyPlugin

์œ„์˜ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ชจ๋“  ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ๋Œ€ํ•ด MyPlugin ์„ ์ˆ˜๋™์œผ๋กœ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ๊ฐ–๋Š”๋‹ค.

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: non-multipoint-scheduler
    plugins:
      preScore:
        enabled:
        - name: MyPlugin
      score:
        enabled:
        - name: MyPlugin
      preFilter:
        enabled:
        - name: MyPlugin
      filter:
        enabled:
        - name: MyPlugin

์—ฌ๊ธฐ์„œ multiPoint ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์˜ ์ด์ ์€, ์ถ”ํ›„ MyPlugin ์ด ๋‹ค๋ฅธ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ๋Œ€ํ•œ ๊ตฌํ˜„์„ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ, ์ƒˆ๋กœ์šด ์ต์Šคํ…์…˜์— ๋Œ€ํ•ด์„œ๋„ multiPoint ํ™˜๊ฒฝ ์„ค์ •์ด ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”๋  ๊ฒƒ์ด๋ผ๋Š” ์ ์ด๋‹ค.

disabled ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, MultiPoint ํ™•์žฅ์œผ๋กœ๋ถ€ํ„ฐ ํŠน์ • ์ต์Šคํ…์…˜ ํฌ์ธํŠธ๋ฅผ ์ œ์™ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜, ๊ธฐ๋ณธ์ด ์•„๋‹Œ(non-default) ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ฑฐ๋‚˜, ์™€์ผ๋“œ์นด๋“œ('*')๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ์€ Score ์™€ PreScore ์— ๋Œ€ํ•ด ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์˜ˆ์‹œ์ด๋‹ค.

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: non-multipoint-scheduler
    plugins:
      multiPoint:
        enabled:
        - name: 'MyPlugin'
      preScore:
        disabled:
        - name: '*'
      score:
        disabled:
        - name: '*'

kubescheduler.config.k8s.io/v1beta3 ๋ถ€ํ„ฐ, MultiPoint ํ•„๋“œ๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ๋ชจ๋“  ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ™œ์„ฑํ™”๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๊ฐœ๋ณ„ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์— ๋Œ€ํ•ด ๊ธฐ๋ณธ๊ฐ’(์˜ˆ: ์ˆœ์„œ, Score ๊ฐ€์ค‘์น˜)์„ ์œ ์—ฐํ•˜๊ฒŒ ์žฌ์„ค์ •ํ•˜๋Š” ๊ฒƒ๋„ ์—ฌ์ „ํžˆ ๊ฐ€๋Šฅํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2๊ฐœ์˜ Score ํ”Œ๋Ÿฌ๊ทธ์ธ DefaultScore1 ๊ณผ DefaultScore2 ๊ฐ€ ์žˆ๊ณ  ๊ฐ๊ฐ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ 1 ์ด๋ผ๊ณ  ํ•˜์ž. ์ด ๋•Œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ€์ค‘์น˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜์—ฌ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: multipoint-scheduler
    plugins:
      score:
        enabled:
        - name: 'DefaultScore2'
          weight: 5

์ด ์˜ˆ์ œ์—์„œ, ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์„ MultiPoint ์— ๋ช…์‹œํ•  ํ•„์š”๋Š” ์—†๋Š”๋ฐ, ์ด๋Š” ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์ด ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  Score ์—๋Š” DefaultScore2 ํ”Œ๋Ÿฌ๊ทธ์ธ๋งŒ ๋ช…์‹œ๋˜์—ˆ๋‹ค. ์ด๋Š” ์ต์Šคํ…์…˜ ํฌ์ธํŠธ๋ฅผ ๋ช…์‹œํ•˜์—ฌ ์„ค์ •๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ์–ธ์ œ๋‚˜ MultiPoint ํ”Œ๋Ÿฌ๊ทธ์ธ๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ, ์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” ๋‘ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋ชจ๋‘ ๋ช…์‹œํ•˜์ง€ ์•Š๊ณ ๋„ ๋‘ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ˆœ์„œ๋ฅผ ์กฐ์ •ํ•˜์˜€๋‹ค.

MultiPoint ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์ •ํ•  ๋•Œ, ์ผ๋ฐ˜์ ์ธ ์šฐ์„  ์ˆœ์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ๋ช…์‹œ๋œ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๋ฉฐ, ์—ฌ๊ธฐ์— ๋ช…์‹œ๋œ ํ™˜๊ฒฝ ์„ค์ •์€ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ณณ์— ์„ค์ •๋œ ๋‚ด์šฉ๋ณด๋‹ค ์šฐ์„ ํ•œ๋‹ค.
  2. MultiPoint ๋ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ค์ •์„ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ
  3. ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ธฐ๋ณธ ์„ค์ •

์œ„์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ์‹œ๋ฅผ ๊ฐ€์ •ํ•œ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์ต์Šคํ…์…˜ ํฌ์ธํŠธ
DefaultQueueSortQueueSort
CustomQueueSortQueueSort
DefaultPlugin1Score, Filter
DefaultPlugin2Score
CustomPlugin1Score, Filter
CustomPlugin2Score, Filter

์ด๋“ค ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ ์œ ํšจํ•œ ์˜ˆ์‹œ ํ™˜๊ฒฝ ์„ค์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: multipoint-scheduler
    plugins:
      multiPoint:
        enabled:
        - name: 'CustomQueueSort'
        - name: 'CustomPlugin1'
          weight: 3
        - name: 'CustomPlugin2'
        disabled:
        - name: 'DefaultQueueSort'
      filter:
        disabled:
        - name: 'DefaultPlugin1'
      score:
        enabled:
        - name: 'DefaultPlugin2'

๋ช…์‹œํ•œ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ ๋‚ด์— MultiPoint ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์žฌ์ •์˜ํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ์— ์œ ์˜ํ•œ๋‹ค. ๋ช…์‹œํ•œ ์ต์Šคํ…์…˜ ํฌ์ธํŠธ์˜ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋” ๋†’์œผ๋ฏ€๋กœ, ์ด ์žฌ์ •์˜๋Š” ๋ฌด์‹œ๋˜๊ณ  ๋กœ๊ทธ์—๋งŒ ๊ธฐ๋ก๋œ๋‹ค.

๋Œ€๋ถ€๋ถ„์˜ ํ™˜๊ฒฝ ์„ค์ •์„ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ ๋ง๊ณ ๋„, ์ด ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ํฌํ•จํ•œ๋‹ค.

  • ์ปค์Šคํ…€ queueSort ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ๊ธฐ์กด์˜ ๊ธฐ๋ณธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•œ๋‹ค
  • CustomPlugin1 ๊ณผ CustomPlugin2 ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ™œ์„ฑํ™”ํ•˜๋ฉฐ, ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์ต์Šคํ…์…˜ ํฌ์ธํŠธ๋ฅผ ์œ„ํ•ด ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์ด ๋จผ์ € ์‹คํ–‰๋œ๋‹ค
  • filter ์— ๋Œ€ํ•ด์„œ๋งŒ DefaultPlugin1 ์„ ๋น„ํ™œ์„ฑํ™”ํ•œ๋‹ค
  • score ์— ๋Œ€ํ•ด, DefaultPlugin2 ํ”Œ๋Ÿฌ๊ทธ์ธ์ด (์‹ฌ์ง€์–ด ์ปค์Šคํ…€ ํ”Œ๋Ÿฌ๊ทธ์ธ๋ณด๋‹ค๋„) ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰๋˜๋„๋ก ์ˆœ์„œ๋ฅผ ์กฐ์ •ํ•œ๋‹ค

multiPoint ํ•„๋“œ๊ฐ€ ์—†๋Š” v1beta3 ์ด์ „ ๋ฒ„์ „์˜ ํ™˜๊ฒฝ ์„ค์ •์—์„œ๋Š”, ์œ„์˜ ์Šค๋‹ˆํŽซ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

apiVersion: kubescheduler.config.k8s.io/v1beta2
kind: KubeSchedulerConfiguration
profiles:
  - schedulerName: multipoint-scheduler
    plugins:

      # ๊ธฐ๋ณธ QueueSort ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋น„ํ™œ์„ฑํ™”ํ•œ๋‹ค
      queueSort:
        enabled:
        - name: 'CustomQueueSort'
        disabled:
        - name: 'DefaultQueueSort'

      # ์ปค์Šคํ…€ Filter ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ™œ์„ฑํ™”ํ•œ๋‹ค
      filter:
        enabled:
        - name: 'CustomPlugin1'
        - name: 'CustomPlugin2'
        - name: 'DefaultPlugin2'
        disabled:
        - name: 'DefaultPlugin1'

      # ์ปค์Šคํ…€ score ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์ˆœ์„œ๋ฅผ ์กฐ์ •ํ•œ๋‹ค
      score:
        enabled:
        - name: 'DefaultPlugin2'
          weight: 1
        - name: 'DefaultPlugin1'
          weight: 3

๋‹ค์†Œ ๋ณต์žกํ•œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด, ์ต์Šคํ…์…˜ ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•จ์— ์žˆ์–ด์„œ MultiPoint ํ™˜๊ฒฝ ์„ค์ •์˜ ์œ ์—ฐ์„ฑ๊ณผ ๊ธฐ์กด ๋ฐฉ๋ฒ•๊ณผ์˜ ๋Š๊น€์—†๋Š” ํ†ตํ•ฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์Šค์ผ€์ค„๋Ÿฌ ์„ค์ • ์ „ํ™˜

  • ์„ค์ • ๋ฒ„์ „ v1beta2 ์—์„œ๋Š”, NodeResourcesFit ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์Šค์ฝ”์–ด๋ง ํ™•์žฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ ํ™•์žฅ์€ NodeResourcesLeastAllocated, NodeResourcesMostAllocated, RequestedToCapacityRatio ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ธฐ๋Šฅ์„ ํ†ตํ•ฉํ•˜์—ฌ ์ œ๊ณตํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด์ „์— NodeResourcesMostAllocated ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด, ๋Œ€์‹  NodeResourcesFit(๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Œ)์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด scoreStrategy๋ฅผ ํฌํ•จํ•˜๋Š” pluginConfig๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

    apiVersion: kubescheduler.config.k8s.io/v1beta2
    kind: KubeSchedulerConfiguration
    profiles:
    - pluginConfig:
      - args:
          scoringStrategy:
            resources:
            - name: cpu
              weight: 1
            type: MostAllocated
        name: NodeResourcesFit
    
  • ์Šค์ผ€์ค„๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ NodeLabel์€ ์‚ฌ์šฉ ์ค‘๋‹จ๋˜์—ˆ๋‹ค. ๋Œ€์‹ , ๋น„์Šทํ•œ ํšจ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด NodeAffinity ํ”Œ๋Ÿฌ๊ทธ์ธ(๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Œ)์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์Šค์ผ€์ค„๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ServiceAffinity์€ ์‚ฌ์šฉ ์ค‘๋‹จ๋˜์—ˆ๋‹ค. ๋Œ€์‹ , ๋น„์Šทํ•œ ํšจ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด InterPodAffinity ํ”Œ๋Ÿฌ๊ทธ์ธ(๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Œ)์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์Šค์ผ€์ค„๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ NodePreferAvoidPods์€ ์‚ฌ์šฉ ์ค‘๋‹จ๋˜์—ˆ๋‹ค. ๋Œ€์‹ , ๋น„์Šทํ•œ ํšจ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ ํ…Œ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • v1beta2 ์„ค์ • ํŒŒ์ผ์—์„œ ํ™œ์„ฑํ™”๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ธฐ๋ณธ ์„ค์ •๊ฐ’๋ณด๋‹ค v1beta2 ์„ค์ • ํŒŒ์ผ์˜ ๊ฐ’์ด ์šฐ์„  ์ ์šฉ๋œ๋‹ค.

  • ์Šค์ผ€์ค„๋Ÿฌ healthz์™€ metrics ๋ฐ”์ธ๋“œ ์ฃผ์†Œ์— ๋Œ€ํ•ด host ๋˜๋Š” port ๊ฐ€ ์ž˜๋ชป ์„ค์ •๋˜๋ฉด ๊ฒ€์ฆ ์‹คํŒจ๋ฅผ ์œ ๋ฐœํ•œ๋‹ค.

  • ์„ธ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ฐ€์ค‘์น˜ ๊ธฐ๋ณธ๊ฐ’์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฆ๊ฐ€ํ•œ๋‹ค.
    • InterPodAffinity: 1 ์—์„œ 2 ๋กœ
    • NodeAffinity: 1 ์—์„œ 2 ๋กœ
    • TaintToleration: 1 ์—์„œ 3 ์œผ๋กœ

  • ์Šค์ผ€์ค„๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ SelectorSpread๋Š” ์ œ๊ฑฐ๋˜์—ˆ๋‹ค. ๋Œ€์‹ , ๋น„์Šทํ•œ ํšจ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด PodTopologySpread ํ”Œ๋Ÿฌ๊ทธ์ธ(๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Œ)์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋‹ค์Œ ๋‚ด์šฉ

์ตœ์ข… ์ˆ˜์ • November 15, 2022 at 4:45 PM PST: [ko] Update outdated files dev-1.25-ko.1 (M68) (52b1b2155e)