K8s中的排程程式是如何工作的? - daniele
排程程式如何在Kubernetes中工作?排程程式負責確定您的Pod在群集中的部署位置。這聽起來很簡單,但是卻相當複雜!讓我們開始吧。
每次建立Pod時,它也會新增到排程Scheduler佇列中。排程程式透過兩個階段逐個處理Pod:
- 排程階段(我應該選擇哪個節點?)
- 繫結階段(將屬於該節點的Pod資訊寫入資料庫)
如果您要部署一些需要GPU的Pod。您將Pod提交給叢集,然後:
- 排程程式過濾掉所有不具有GPU的節點
- 排程程式對其餘節點進行排名,並選擇利用率最低的節點
- 在這個最低利用率的節點上排程Pod
此時,過濾階段有13個謂詞。這是13個函式,用於確定排程程式應從Pod中丟棄該節點作為可能目標的方式。甚至計分階段也有13個優先事項。這些是決定如何對節點評分和排名的13個功能。
您如何影響排程程式的決策?
- nodeSelector
- Node affinity
- Pod affinity/anti-affinity
- Taints汙點 /toleration容忍度
如果要自定義排程程式該怎麼辦?
您可以為排程程式編寫外掛。您可以在排程階段自定義任何塊。但是,繫結階段不要公開任何公共API。
可以在此處瞭解有關排程程式的更多資訊:
- Kubernetes 排程器https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/…
- 排程策略 https://kubernetes.io/docs/reference/scheduling/policies/…
- 排程框架 https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/
相關文章
- Linux CFS中的程式排程Linux
- Go timer 是如何被排程的?Go
- k8s排程器介紹(排程框架版本)K8S框架
- k8s排程器K8S
- k8s 排程 GPUK8SGPU
- [譯] React 中的排程React
- k8s之pod排程K8S
- 我在工作中是如何優化程式碼的優化
- K8s Scheduler 在排程 pod 過程中遺漏部分節點的問題排查K8S
- 編排的藝術|K8S中的容器編排和應用編排K8S
- K8S 高階排程方式K8S
- Azkaban工作流排程
- Linux C 的程式排程Linux
- 【譯】Arc 在 Rust 中是如何工作的Rust
- Linux核心排程分析(程式排程)Linux
- MySQL中的事件排程器EVENTMySql事件
- 從零開始入門 K8s | 排程器的排程流程和演算法介紹K8S演算法
- 工作總結--工單排程
- DNS是如何工作的?DNS
- Cucumber是如何工作的?
- Javascript是如何工作的JavaScript
- Orchard是如何工作的?
- CDN是如何工作的?
- C 語言偵錯程式是如何工作的?
- 在 JS 中如何排程後臺任務?JS
- 第 12 期 golang 中 goroutine 的排程Golang
- Spring中Quartz排程器的使用Springquartz
- Spark中shuffle的觸發和排程Spark
- Kubernetes中如何使用CPU請求和限制? - daniele
- linux中設定程式排程的優先順序別Linux
- 后羿射日般的精準 - 阿里雲ECS排程是如何煉成的阿里
- 后羿射日般的精準-阿里雲ECS排程是如何煉成的阿里
- 程式排程演算法Linux程式排程演算法演算法Linux
- 像排程程式那樣安排任務,是什麼樣的體驗?
- webpack的require是如何工作的?WebUI
- linux程式排程Linux
- Java程式設計師在Google是如何工作的Java程式設計師Go
- 解決k8s排程不均衡問題K8S