kubernetes實踐之四十九:Scheduler原理分析
一: 簡介
1.Kubernetes scheduler在整個系統中承擔了“承上啟下”的重要功能,“承上”是指它負責接收Controller Manager創新的新Pod,為其安排一個落腳的Node; "啟下"是指安置工作完成後,目標Node上的kubelet服務程式接管後繼工作。
2.Kubernetes scheduler的作用是將待排程的Pod,按照特定的排程演算法和排程策略繫結到叢集中的某個合適的Node上,並將繫結資訊寫入etcd中,在整個排程過程中涉及三個物件,分別是:待排程Pod列表,可用Node列表,以及排程演算法和策略。
3.目標節點上的kubelet透過API Server監聽到Kubernetes scheduler 產生的Pod繫結事件,然後獲取對應的Pod清單,下載Image映象,並啟動容器。
二:排程流程
1.預先排程過程,即遍歷所有目標Node,篩選出符合要求的候選節點。
2.確定最優節點,在第1步的基礎上,採用優選策略計算出每個候選節點的積分,積分最高者勝出。
三:預選策略
1. NoDiskConflict
判斷備選Pod的gcePersistentDisk或AWSElasticBlockStore和備選的節點中已存在的Pod是否存在衝突。
2.PodFitsResources
判斷備選節點的資源是否滿足備選Pod的需求。
3.PodSelectorMathes
判斷備選節點是否包含備選Pod的標籤選擇器指定的標籤。
4.PodFitsHost
判斷備選Pod的spec.nodeName域所指定的節點名稱和備選節點的名稱是否一致。如果一致,則返回true,否則返回false.
5.CheckNodeLabelPresence
如果使用者在配置檔案中指定了該策略,則scheduler會透過RegisterCustomFitPredicate方法註冊該策略。
6.CheckServiceAffinity
該策略用於判斷備選節點是否包含策略指定的標籤,或包含和備選Pod在相同Service和Namespace下的Pod所在節點的標籤列表。 如果存在,則返回true,否則返回false.
7.PodFitsPorts
判斷備選Pod所用的埠列表中的埠是否在被選中已被佔用,如果被佔用則返回false,否則返回true
四:優選策略
1.LeastRequestedPriority
從備選節點列表中選出資源消耗最小的節點。
2.CalculateNodeLabelPriority
該策略用於判斷策略列出的標籤在備選節點中存在時,是否選擇該備選節點。
3.BalancedResourceAllocation
從備選節點列表中選出各項資源使用率最均衡的節點。
1.Kubernetes scheduler在整個系統中承擔了“承上啟下”的重要功能,“承上”是指它負責接收Controller Manager創新的新Pod,為其安排一個落腳的Node; "啟下"是指安置工作完成後,目標Node上的kubelet服務程式接管後繼工作。
2.Kubernetes scheduler的作用是將待排程的Pod,按照特定的排程演算法和排程策略繫結到叢集中的某個合適的Node上,並將繫結資訊寫入etcd中,在整個排程過程中涉及三個物件,分別是:待排程Pod列表,可用Node列表,以及排程演算法和策略。
3.目標節點上的kubelet透過API Server監聽到Kubernetes scheduler 產生的Pod繫結事件,然後獲取對應的Pod清單,下載Image映象,並啟動容器。
二:排程流程
1.預先排程過程,即遍歷所有目標Node,篩選出符合要求的候選節點。
2.確定最優節點,在第1步的基礎上,採用優選策略計算出每個候選節點的積分,積分最高者勝出。
三:預選策略
1. NoDiskConflict
判斷備選Pod的gcePersistentDisk或AWSElasticBlockStore和備選的節點中已存在的Pod是否存在衝突。
2.PodFitsResources
判斷備選節點的資源是否滿足備選Pod的需求。
3.PodSelectorMathes
判斷備選節點是否包含備選Pod的標籤選擇器指定的標籤。
4.PodFitsHost
判斷備選Pod的spec.nodeName域所指定的節點名稱和備選節點的名稱是否一致。如果一致,則返回true,否則返回false.
5.CheckNodeLabelPresence
如果使用者在配置檔案中指定了該策略,則scheduler會透過RegisterCustomFitPredicate方法註冊該策略。
6.CheckServiceAffinity
該策略用於判斷備選節點是否包含策略指定的標籤,或包含和備選Pod在相同Service和Namespace下的Pod所在節點的標籤列表。 如果存在,則返回true,否則返回false.
7.PodFitsPorts
判斷備選Pod所用的埠列表中的埠是否在被選中已被佔用,如果被佔用則返回false,否則返回true
四:優選策略
1.LeastRequestedPriority
從備選節點列表中選出資源消耗最小的節點。
2.CalculateNodeLabelPriority
該策略用於判斷策略列出的標籤在備選節點中存在時,是否選擇該備選節點。
3.BalancedResourceAllocation
從備選節點列表中選出各項資源使用率最均衡的節點。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2155294/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- kubernetes實踐之四十五:API Server原理分析APIServer
- Kubernetes原始碼分析之kube-scheduler原始碼
- kubernetes實踐之五十:kubelet執行機制分析
- Kubernetes安裝之八:配置master之schedulerAST
- 資深實踐篇 基於Kubernetes 1.61的Kubernetes Scheduler 排程詳解
- 資深實踐篇 | 基於Kubernetes 1.61的Kubernetes Scheduler 排程詳解
- kubernetes實踐之二十:網路原理
- kubernetes實踐之十一:EFK
- kubernetes實踐之六十六:Istio實現金絲雀釋出原理
- kubernetes實踐之五十二:Helm
- kubernetes實踐之五十七:PodPreset
- kubernetes實踐之五十八:CronJob
- kubernetes實踐之十七:架構架構
- kubernetes實踐之十九:API概述API
- kubernetes實踐之六十:Cabin-Manage Kubernetes
- kubernetes實踐之五十一:kube-proxy執行機制分析
- Redis原理及實踐之GeoHashRedis
- Guava Cache 原理分析與最佳實踐Guava
- kubernetes實踐之五十九:NetworkPolicy
- kubernetes實踐之六十四:CoreDNSDNS
- kubernetes實踐之九:kube-dnsDNS
- kubernetes實踐之五:網路模型模型
- kubernetes實踐之五十六:雲原生
- kubernetes實踐之四十二:StatefulSet
- Redis核心原理與實踐--列表實現原理之ziplistRedis
- Redis核心原理與實踐--事務實踐與原始碼分析Redis原始碼
- kubernetes生產實踐之redis-clusterRedis
- GitOps實踐之kubernetes安裝argocdGitGo
- kubernetes實踐之六十二:Secret 使用
- kubernetes實踐之六十三:使用技巧
- kubernetes實踐之六十五:Service Mesh
- kubernetes實踐之八:TLS bootstrappingTLSbootAPP
- kubernetes實踐之十二:部署Traefik Ingress
- kubernetes實踐之十四:Service Account與Secret
- golang 原始碼分析之scheduler排程器Golang原始碼
- Redis核心原理與實踐--列表實現原理之quicklist結構RedisUI
- kubernetes實踐之七十三:Istio之配置請求路由路由
- kubernetes實踐之七十二:Istio之策略與遙測