成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何自定義 Kube-Scheduler 插件

開發 架構
k8s的發展越來越像是一個框架,然后把各種擴展的能力留給開發者。開發者可以基于這些接口結合自己的業務場景,實現自己的場景化需求。

 [[443171]]

 k8s的發展越來越像是一個框架,然后把各種擴展的能力留給開發者。開發者可以基于這些接口結合自己的業務場景,實現自己的場景化需求。其中kube scheduler 就是充分體現了這個特質,關于kube scheduler 本身的介紹參加之前的文章,今天我想介紹如何給scheduler 添加一個調度plugin。

 

我們首先通過yaml定義這個plugin

  1. apiVersion: kubescheduler.config.k8s.io/v1beta1 
  2. kind: KubeSchedulerConfiguration 
  3. clientConnection: 
  4.   kubeconfig: "/etc/kubernetes/scheduler.conf" 
  5. profiles: 
  6. - schedulerName: default-scheduler 
  7.   plugins: 
  8.     score: 
  9.       enabled: 
  10.       - name: HelloWorldPlugin 
  11.       disabled: 
  12.       - name"*" 
  13.   pluginConfig: 
  14.   - name: HelloWorldPlugin 
  15.     args: 
  16.       xxx: "xxx" 
  17.       yyy: "123" 
  18.       zzz: 3 

我們定義了一個 HelloWorldPlugin 的插件,并且定義了這個插件的啟動參數。然后需要修改kube scheduler啟動參數通過 --config 指定上面的配置文件。

接下來我們就需要實現這個插件,scheduler是通過每個插件的打分的方式確定調度的主機。所以我們需要實現一個打分的接口

  1. type ScorePlugin interface { 
  2.   Plugin 
  3.   // 打分 
  4.   Score(ctx context.Context, state *CycleState, p *v1.Pod, nodeName string) (int64, *Status) 
  5.    
  6.   ScoreExtensions() ScoreExtensions 
  7.  
  8. type ScoreExtensions interface { 
  9.   // 打分歸一化,保證每個插件的公平性 
  10.   NormalizeScore(ctx context.Context, state *CycleState, p *v1.Pod, scores NodeScoreList) *Status 

我們根據自己的業務需求實現這個接口,譬如下面這個例子,基于主機網絡帶寬的調度:首先通過promethues獲取主機的網絡流量,打分依據網絡流量大小。

  1. func (n *HelloWorldPlugin) Score(ctx context.Context, state *framework.CycleState, p *v1.Pod, nodeName string) (int64, *framework.Status) { 
  2.     nodeBandwidth, err := n.prometheus.GetNodeBandwidthMeasure(nodeName) 
  3.     if err != nil { 
  4.         return 0, framework.NewStatus(framework.Error, fmt.Sprintf("error getting node bandwidth measure: %s", err)) 
  5.     } 
  6.  
  7.     klog.Infof("[NetworkTraffic] node '%s' bandwidth: %s", nodeName, nodeBandwidth.Value) 
  8.     return int64(nodeBandwidth.Value), nil 

我們希望網絡流量越大,得分越少,于是在歸一化處理的時候,我們通過下面簡單公式轉化成最終的分數。

  1. func (n *HelloWorldPlugin) NormalizeScore(ctx context.Context, state *framework.CycleState, pod *v1.Pod, scores framework.NodeScoreList) *framework.Status { 
  2.     for i, node := range scores { 
  3.         scores[i].Score = framework.MaxNodeScore - (node.Score * framework.MaxNodeScore / higherScore) 
  4.     } 
  5.  
  6.     klog.Infof("[NetworkTraffic] Nodes final score: %v", scores) 
  7.     return nil 

這樣一個簡單的,基于網絡流量調度的插件就實現了。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2023-11-29 09:29:48

Kuberneteskube

2021-12-28 15:38:46

Traefik中間件插件

2022-01-14 09:17:13

PythonAPISIX插件

2023-03-31 07:17:16

2013-06-27 11:10:01

iOS開發自定義UISlider

2012-11-19 11:07:42

IBMdw

2010-02-07 14:02:16

Android 界面

2011-08-25 11:44:21

LUA腳本魔獸世界

2009-09-07 22:00:15

LINQ自定義

2015-02-12 15:33:43

微信SDK

2020-11-19 10:50:43

ImportPython代碼

2015-02-12 15:38:26

微信SDK

2016-11-16 21:55:55

源碼分析自定義view androi

2009-09-03 13:34:03

.NET自定義控件

2023-01-03 07:40:27

自定義滑塊組件

2022-04-20 18:22:18

CSS拖拽預覽圖

2011-06-23 10:49:13

Qt 自定義信號

2010-08-03 16:13:01

FlexBuilder

2010-02-12 09:32:51

Windows 7修改登錄畫面

2009-11-05 10:38:05

Visual Stud
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲高清视频在线 | 日本成人二区 | 成人激情免费视频 | 一区二区国产精品 | 九七午夜剧场福利写真 | 91亚洲国产成人久久精品网站 | 亚洲欧美日本在线 | 国产精品福利网站 | 日韩国产免费 | 欧美一区二区三区在线看 | 欧美午夜精品 | 精品亚洲一区二区三区 | 亚洲免费观看视频网站 | 99视频在线免费观看 | 亚洲毛片 | 91精品国产欧美一区二区 | 亚洲国产精品va在线看黑人 | a视频在线 | 狠狠操av| 亚洲第一成人影院 | 成人h视频 | 久色网| 日日干夜夜操天天操 | 亚洲色片网站 | 欧美激情在线一区二区三区 | 久久成人人人人精品欧 | 亚洲精品一| 一区二区国产精品 | 欧美日韩在线精品 | 国产精品国产三级国产aⅴ原创 | 另类专区成人 | 情侣酒店偷拍一区二区在线播放 | 亚洲毛片| 久久综合九色综合欧美狠狠 | 欧美xxxx色视频在线观看免费 | 国产精品久久久久久一区二区三区 | 涩涩视频在线观看免费 | 日韩免费看视频 | 亚洲一区二区三区免费视频 | www.亚洲区| 亚洲三区视频 |