国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識|Nginx|IIS|Tomcat|

香港云服务器
服務(wù)器之家 - 服務(wù)器技術(shù) - 服務(wù)器知識 - 如何自定義 Kube-Scheduler 插件

如何自定義 Kube-Scheduler 插件

2021-12-31 23:26云技術(shù)趣談 服務(wù)器知識

k8s的發(fā)展越來越像是一個框架,然后把各種擴展的能力留給開發(fā)者。開發(fā)者可以基于這些接口結(jié)合自己的業(yè)務(wù)場景,實現(xiàn)自己的場景化需求。

 如何自定義 Kube-Scheduler 插件

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

如何自定義 Kube-Scheduler 插件

我們首先通過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 的插件,并且定義了這個插件的啟動參數(shù)。然后需要修改kube scheduler啟動參數(shù)通過 --config 指定上面的配置文件。

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


  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 

我們根據(jù)自己的業(yè)務(wù)需求實現(xiàn)這個接口,譬如下面這個例子,基于主機網(wǎng)絡(luò)帶寬的調(diào)度:首先通過promethues獲取主機的網(wǎng)絡(luò)流量,打分依據(jù)網(wǎng)絡(luò)流量大小。


  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 

我們希望網(wǎng)絡(luò)流量越大,得分越少,于是在歸一化處理的時候,我們通過下面簡單公式轉(zhuǎn)化成最終的分?jǐn)?shù)。


  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 

這樣一個簡單的,基于網(wǎng)絡(luò)流量調(diào)度的插件就實現(xiàn)了。

原文鏈接:https://www.toutiao.com/i7046924965886591502/

延伸 · 閱讀

精彩推薦
1307
主站蜘蛛池模板: 精品国产欧美一区二区三区成人 | 蜜桃视频一区二区 | 日韩成人不卡 | 亚洲一区二区av | 91视频在线| 精品一区视频 | 欧美一区二区三区电影 | 国产精品日本 | 在线欧美视频 | 久久国产精品无码网站 | 国产精品欧美久久久久久 | 国产精品久久av | 国产一级在线 | 91av官网| 欧美日韩一区二区在线观看 | 91亚洲一区| 久久人人av | 午夜精品久久久久久久久久久久 | 日韩一区二区在线视频 | 日本一区二区中文字幕 | 欧美一区免费 | 日韩三级 | 亚洲视频免费观看 | 高清国产午夜精品久久久久久 | 亚洲国产精品久久久久婷婷老年 | 日本在线一区二区三区 | 精品一区二区在线看 | 国产精品三级久久久久久电影 | 国产精品久久久久无码av | 欧美亚洲 | 日本一区二区精品 | 免费av一区二区三区 | 黄色片网站视频 | 国内外成人激情免费视频 | 亚洲一级在线 | 亚洲国产高清在线 | 色伊人 | 中文字幕综合在线 | 日韩久久久久久 | 一二三区av | 久久久精品免费视频 |