Scheduler Profile

Yu Sang MinΒ·2025λ…„ 5μ›” 30일

CKA

λͺ©λ‘ 보기
25/110

πŸ“Œ Scheduler Profile

🎁 Scheduler plugin

  • Scheduling Queue
    • PrioritySort : μš°μ„ μˆœμœ„ λŒ€λ‘œ μ •λ ¬
  • Flitering
    • NodeResourcesFit : Podμ—μ„œ μš”κ΅¬ν•˜λŠ” μžμ›μ΄ μΆ©λΆ„ν•œ λ…Έλ“œλ₯Ό μ‹λ³„ν•˜κ³  λΆ€μ‘±ν•œ λ…Έλ“œλ₯Ό 필터링
    • NodeName : Pod μ •μ˜ νŒŒμΌμ—μ„œ μ–ΈκΈ‰λœ λ…Έλ“œ 이름이 μžˆλŠ”μ§€ ν™•μΈν•˜κ³  이름과 μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” λ…Έλ“œλŠ” λͺ¨λ‘ 필터링 ν•œλ‹€
# pod-definition.yaml
<μ€‘λž΅>
…
spec:
  nodeName: node02 // node02 외에 λͺ¨λ“  λ…Έλ“œ 필터링
  • NodeUnschedulable : 이 ν”Œλž˜κ·Έκ°€ true둜 μ„€μ •λœ λ…Έλ“œλ₯Ό 필터링 (λ“œλ ˆμΈ μƒνƒœμΌλ•Œ)
  • Scoring
    • NodeResouresFit : μ‚¬μš©κ°€λŠ₯ν•œ λ¦¬μ†ŒμŠ€μ™€ podλ₯Ό ν™•μΈν•œ ν›„ λ…Έλ“œμ— 점수λ₯Ό λ§€κΈ΄λ‹€.
      • 단일 ν”ŒλŸ¬κ·ΈμΈμ€ 각 λ‹¨κ³„μ—μ„œ μ—°κ²°λ˜μ–΄ μ‚¬μš©λ  수 μžˆλ‹€ (Flitering λ‹¨κ³„μ—μ„œλ„ 이 ν”ŒλŸ¬κ·ΈμΈμ΄ μ‚¬μš©)
    • imageLocality : 각 λ…Έλ“œμ—μ„œ μ‚¬μš©λ˜λŠ” μ»¨ν…Œμ΄λ„ˆ 이미지λ₯Ό κ°€μ§„ λ…Έλ“œμ— 높은 점수λ₯Ό μ€€λ‹€
      • 이 λ‹¨κ³„μ—μ„œ ν”ŒλŸ¬κ·ΈμΈμ€ νŠΉμ • λ…Έλ“œμ˜ podλ₯Ό κ±°λΆ€ν•˜μ§€ μ•ŠλŠ”λ‹€? (이해 X)
  • Binding
    • DefaultBinder : 바인딩 λ©”μ»€λ‹ˆμ¦˜ 제곡

πŸ‘‰ K8SλŠ” ν™•μž₯성이 λ›°μ–΄λ‚˜κΈ° λ•Œλ¬Έμ— μ–΄λ–€ ν”ŒλŸ¬κ·ΈμΈμ„ 어디에 λ‘˜μ§€ μ»€μŠ€ν„°λ§ˆμ΄μ§•μ΄ κ°€λŠ₯, μžμ‹ λ§Œμ˜ ν”ŒλŸ¬κ·ΈμΈμ„ μž‘μ„±ν•΄μ„œ 여기에 λ‘˜ 수 μžˆλ‹€.
extention pointλ₯Ό μ΄μš©ν•΄ 각 λ‹¨κ³„λ§ˆλ‹€ ν”ŒλŸ¬κ·ΈμΈμ„ μ—°κ²°ν• μˆ˜ μžˆλŠ” 확정지점이 있음
μ˜ˆμ‹œ). Scheduling Queueμ—λŠ” PrioritySort ν”ŒλŸ¬κ·ΈμΈμ΄ queueSort extentionκ³Ό μ—°κ²°
Filtering μ—λŠ” filiter μ΅μŠ€ν…μ…˜μ΄
Scoring μ—λŠ” score,
Binding μ—λŠ” bind μ΅μŠ€ν…μ…˜μ΄ 각각 ν”ŒλŸ¬κ·ΈμΈμ— μ—°κ²°λ˜μ–΄ μžˆλ‹€.

사싀 μ—¬λŸ¬ μ΅μŠ€ν…μ…˜λ“€μ΄ μžˆλ‹€

  • 필터링 μ „, ν›„λ₯Ό κΈ°μ€€μœΌλ‘œ pre-filtering, post-filitering
  • μŠ€μ½”μ–΄λ§ μ „ ν›„λ₯Ό κΈ°μ€€μœΌλ‘œ pre-score, post-score
  • 바인딩 μ „, ν›„λ₯Ό κΈ°μ€€μœΌλ‘œ pre-binding, post-binding λ“±λ“±

ν”ŒλŸ¬κ·ΈμΈμ„ μ΅μŠ€ν…μ…˜κ³Ό μ‚¬μš©μž μ§€μ •μœΌλ‘œ μ—°κ²°ν•˜κ³  μ‚¬μš© ν•  수 있고, μžμ‹ λ§Œμ˜ μŠ€μΌ€μ€„λ§μ„ μž‘μ„± κ°€λŠ₯

πŸͺͺ Scheduler Profiles

# my-scheduler-2-config.yaml

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: my-scheduler-2
- schedulerName: my-scheduler-3
- schedulerName: my-scheduler-4
  • 각각의 μŠ€μΌ€μ€„λŸ¬μ— λŒ€ν•œ λΆ„λ¦¬λœ ν”„λ‘œνŒŒμΌμ„ 생성
  • 각각의 μŠ€μΌ€μ€„λŸ¬ μžμ²΄λ„ λΆ„λ¦¬λœ μŠ€μΌ€μ€„λŸ¬ 처럼 μž‘λ™ν•¨
  • 단지 각각의 μŠ€μΌ€μ€„λŸ¬κ°€ ν•˜λ‚˜μ˜ λ°”μ΄λ„ˆλ¦¬λ‘œ μ‹€ν–‰λ˜λŠ”κ²ƒ 뿐

βš™οΈ How to use each profile

# my-scheduler-2-config.yaml

apiVersion: kubescheduler.config.k8s.io/v1
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: my-scheduler-2
  plugins:
    score:
      disabled:                                   // Taint,Toleration 같은 νŠΉμ • ν”ŒλŸ¬κ·ΈμΈμ„ λΉ„ν™œμ„±ν™”
        - name: TaintToleration         
      enabled:                                    // μ‚¬μš©μž μ§€μ • ν”ŒλŸ¬κ·ΈμΈ ν™œμ„±ν™”
        - name: MyCustomPluginA
        - name: MyCustomPluginB

- schedulerName: my-scheduler-3
  plugins:                                         // λͺ¨λ“  preScore, score ν”ŒλŸ¬κ·ΈμΈ λΉ„ν™œμ„±ν™”
    preScore:
      disabled:
        - name: β€˜*’
    score:
      disabled:
        - name: β€˜*’

- schedulerName: my-scheduler-4
  • 각 μŠ€μΌ€μ€„λŸ¬ profileν•˜μ—μ„œ μš°λ¦¬κ°€ μ›ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν”ŒλŸ¬κ·ΈμΈ ꡬ성
profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 λŒ“κΈ€