成人免费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中間件插件

2023-03-31 07:17:16

2022-01-14 09:17:13

PythonAPISIX插件

2013-06-27 11:10:01

iOS開發自定義UISlider

2012-11-19 11:07:42

IBMdw

2009-09-07 22:00:15

LINQ自定義

2015-02-12 15:33:43

微信SDK

2011-08-25 11:44:21

LUA腳本魔獸世界

2010-02-07 14:02:16

Android 界面

2009-09-03 13:34:03

.NET自定義控件

2023-01-03 07:40:27

自定義滑塊組件

2022-04-20 18:22:18

CSS拖拽預覽圖

2015-02-12 15:38:26

微信SDK

2016-12-26 15:25:59

Android自定義View

2020-11-19 10:50:43

ImportPython代碼

2011-08-09 17:16:56

CoreAnimati動畫

2019-08-22 13:40:27

GNOME 3桌面

2021-06-17 06:52:37

C#自定義異常

2013-01-10 09:36:19

NagiosNagios插件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜激情在线视频 | 午夜av电影 | 成人免费视频在线观看 | 国产乱码精品一品二品 | 国产日韩欧美在线观看 | 国产高清久久 | 在线成人免费视频 | 盗摄精品av一区二区三区 | 亚洲成人在线视频播放 | 成人午夜精品 | 久久精品国产99国产精品亚洲 | 久久久久久久久久久久久9999 | 狠狠色综合欧美激情 | 免费观看成人性生生活片 | 一级做a| 波多野结衣精品 | 亚欧精品一区 | 亚洲免费成人 | 欧美 日本 国产 | 中文字幕免费视频 | 一区中文字幕 | 国产精品一区三区 | 国产精品99久 | 国产高清一二三区 | 久久久久久成人 | 91中文字幕在线 | 亚洲精品在线免费看 | 中国美女撒尿txxxxx视频 | 男人天堂网址 | 伊人网综合 | 国产精品久久国产精品久久 | 男人天堂社区 | 免费在线观看av网址 | 精品久久一区 | 中文字幕免费在线 | 日韩三级一区 | 欧美日韩中文字幕 | 国产精品成人一区二区 | 白浆在线| 99精品国产一区二区三区 | 精品一区免费 |