系列目錄html
kubernetes支持多種資源調度模式,前面講過簡單的基於nodeName
和nodeSelector
的服務器資源調度,咱們稱之爲用戶綁定策略
,下面簡要描述基於PriorityClass
的同一node下不一樣pod資源的優先級調度,咱們稱其爲搶佔式調度策略
node
如今版本支持Pod優先級搶佔,經過PriorityClass來實現同一個Node節點內部的Pod對象搶佔。根據 Pod 中運行的做業類型斷定各個 Pod 的優先級,對於高優先級的 Pod 能夠搶佔低優先級 Pod 的資源。Pod priority指的是Pod的優先級,高優先級的Pod會優先被調度,或者在資源不足低狀況犧牲低優先級的Pod,以便於重要的Pod可以獲得資源部署.nginx
定義PriorityClass對象:api
apiVersion: scheduling.k8s.io/v1alpha1 kind: PriorityClass metadata: name: high-priority value: 1000000 globalDefault: false description: "This priority class should be used for XYZ service pods only."
在Pod的spec. priorityClassName中指定已定義的PriorityClass名稱服務器
apiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent priorityClassName: high-priority
當節點沒有足夠的資源供調度器調度Pod、致使Pod處於pending時,搶佔(preemption)邏輯會被觸發。Preemption會嘗試從一個節點刪除低優先級的Pod,從而釋放資源使高優先級的Pod獲得節點資源進行部署。code