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/
相關文章
- 在K8S中,Requests 和 Limits 如何影響 Pod 的排程?K8SMIT
- Linux CFS中的程式排程Linux
- Go timer 是如何被排程的?Go
- Pod的排程是由排程器(kube-scheduler)
- 深入工作流排程的核心
- k8s排程器介紹(排程框架版本)K8S框架
- k8s排程器K8S
- k8s 排程 GPUK8SGPU
- [譯] React 中的排程React
- 我在工作中是如何優化程式碼的優化
- k8s之pod排程K8S
- K8s Scheduler 在排程 pod 過程中遺漏部分節點的問題排查K8S
- 工作流-跨平臺的排程工具
- Azkaban工作流排程
- 編排的藝術|K8S中的容器編排和應用編排K8S
- Linux C 的程式排程Linux
- K8s 容器的定向排程與親和性K8S
- K8S 高階排程方式K8S
- 在K8S中,Pod常見排程方式有哪些?K8S
- 【譯】Arc 在 Rust 中是如何工作的Rust
- Linux核心排程分析(程式排程)Linux
- 在K8S中,Deployment的升級過程是什麼?K8S
- MySQL中的事件排程器EVENTMySql事件
- 程序中的執行緒排程執行緒
- Ruby on Rails中的MVC架構是如何工作的AIMVC架構
- 工作總結--工單排程
- 從零開始入門 K8s | 排程器的排程流程和演算法介紹K8S演算法
- DNS是如何工作的?DNS
- Cucumber是如何工作的?
- Javascript是如何工作的JavaScript
- Orchard是如何工作的?
- CDN是如何工作的?
- C 語言偵錯程式是如何工作的?
- Kubernetes中如何使用CPU請求和限制? - daniele
- 在 JS 中如何排程後臺任務?JS
- 第 12 期 golang 中 goroutine 的排程Golang
- Spring中Quartz排程器的使用Springquartz
- Spark中shuffle的觸發和排程Spark