Kubernetes外掛:Intel-SRIOV-CNI獲取配置資訊小指令碼
注意 本文提供的指令碼是針對本人之前修改的sriov外掛的哈。
sriov-cni簡介
sriov-cni是hustcat/sriov-cni開發的一種容器網路外掛(Container Network Interface),它使得容器可以直接使用物理機中擴展出來的VF(virtual functions)。Intel在此基礎上,為其添加了dpdk功能。本人在Intel版本的基礎上進行了修改,對應的版本是2017.10.12,具體commit為f45d68b638df76261170bd585fb4014b99990548
。 具體修改如下:
1、儲存dpdk配置檔案和開啟dpdk驅動的程式碼順序對調,保證在啟動更新成功的情況下才會儲存配置檔案;
2、配置檔案路徑新增一級容器網路名稱空間ID,從而使得容器內可以識別自身的配置檔案;
3、新增netconf的配置儲存;
4、類似VF,新增setupPF(),實現流程與setupVF()基本一致。
配置檔案雖然都進行了儲存,但是每次讀取查詢還是不夠便捷,因此又寫了個小指令碼進行配置資訊的查詢(portName
, isDPDKmode
, pciAddress
),可以直接放到/usr/bin/
下,當個小命令用。
例如:
[email protected]:~# mv getpci.py /usr/bin/getpci
[email protected]:~# chmod a+x /usr/bin/getpci
之後就可以直接使用了。
[email protected]:~# cat getpci.py #!/usr/bin/python2.7 import os import json import optparse def getNameSpace(): nsFile = "/proc/1/ns/net" nsLink = os.readlink(nsFile) ns = nsLink[5:-1] return ns def getPci(path): ns = getNameSpace() confPath = os.path.join(path, ns) if not os.path.exists(confPath) : print "can not find the Dir: %s"%confPath return fileList = os.listdir(confPath) portList={} for file in fileList: if os.path.splitext(file)[1] != '.json': continue portNew = {} filePath = os.path.join(confPath, file) fileTime = os.stat(filePath).st_ctime fd = open(filePath, 'r') line = fd.read() try: dic = json.loads(line) except ValueError, e : print filePath, "can not be loaded as json", e portName = dic.get("if0name") if not portName: portName = dic.get("if0name") print filePath,"can not find the ifname" pciAddr = dic.get("pci_addr") if not pciAddr: print filePath,"can not find the pci" continue isDPDKMode = dic.get("DPDKMode") portNew["portName"],portNew["pciAddr"],portNew["isDPDKMode"],portNew["ctime"]= portName,pciAddr,"false",fileTime if isDPDKMode : portNew["isDPDKMode"] = "true" if portName not in portList.keys(): portList[portName] = portNew else: oldTime = portList.get(portName).get("ctime") if fileTime > oldTime: portList.pop(portName) portList[portName] = portNew return portList def printPortList(portList): for portName in portList.keys(): print ("portName:{:<10} isDPDKMode:{:<8}PCI:{:<}".format(portName,portList.get(portName).get("isDPDKMode"),portList.get(portName).get("pciAddr"))) if __name__ == "__main__": usage = "usage: %prog [options] arg" parser = optparse.OptionParser(usage) parser.add_option("-p", "--path", dest="path", help="the dir to the confFile, default is \"/opt/pci\" ", default = "/opt/pci") options, args = parser.parse_args() portList = getPci(options.path) if not portList: print "can not find any PCI information in ", options.path else: printPortList(portList)
以上~
相關推薦
Kubernetes外掛:Intel-SRIOV-CNI獲取配置資訊小指令碼
注意 本文提供的指令碼是針對本人之前修改的sriov外掛的哈。 sriov-cni簡介 sriov-cni是hustcat/sriov-cni開發的一種容器網路外掛(Container Network Interface),它使得容器可以直接使用物理
Android官方開發文件Training系列課程中文版:分享檔案之獲取檔案資訊
之前的課程講述了客戶端APP試圖與含有檔案的URI一同執行,APP可以請求服務端APP的檔案資訊,包括檔案的資料型別以及檔案的大小。這些資料型別可以幫助客戶端APP來判斷該檔案是否可以處理,檔案的大小可以幫助客戶端APP對該檔案設定相應大小的緩衝區。 這節
Ubuntu下獲取系統資訊shell指令碼
#!/bin/bash # 獲取系統資訊 # 獲取cpu數量 get_cpu_num(){ grep "cpu cores" /proc/cpuinfo | head -n1 | awk '
Kubernetes外掛配置管理—ConfigMap介紹
轉載於網路 其他容器編排排程工具會大談特談“輕應用”、“十二要素應用”,這樣就勢必會對企業級複雜應用做很大的改動。Kubernetes是為了解決“如何合理使用容器支撐企業級複雜應用”這個問題而誕生的,所以它的設計理念是要支援絕大多數應用的原生形態。例如,很多應用程式的
TinyMCE外掛:RESPONSIVE filemanager 9 安裝與配置
RESPONSIVE filemanager 功能: 檔案上傳 檔案下載 重新命名檔案 刪除檔案 新建資料夾 為每個使用者建立子目錄 上傳檔案效果圖: 瀏覽檔案效果圖: 檔案說明: filemanager(核心程式檔案),放入TinyMCE的Plugi
TinyMCE外掛:FileManager [4.x-6.x] 配置及BUG處理
FileManager最新版已升級到9.x,9.x新增了對檔案的批量處理,但仍然有部分同學在繼續使用6.x,這裡大叔整理了一份自己在配置6.x時,遇到的問題和解決方案。 安裝 下載安裝包解壓後,在根目錄下會找到兩個資料夾:langs(語言包)與plugins(核心程式/外掛包),分別將兩個資料夾拷至Ti
JQ外掛:獲取文字框(textarea)內的所選字元和游標位置索引值-selection
(function($){ $.fn.selection = function(){ var s,e,range,stored_range; if(this[0].selectionStart == undefined){ var selection=document.selection; i
Spring Boot入門(二):獲取配置檔案值
本篇部落格主要講解下在Spring Boot中如何獲取配置檔案的值。 1. 使用yaml配置檔案 Spring Boot預設生成的配置檔案為application.properties,不過它也支援yaml語言的配置檔案, 兩者之間的差別並不是很大,只是yaml語言的配置檔案層次結構更明顯,可讀性更強,因此目
Kubernetes學習筆記(六):使用ConfigMap和Secret配置應用程式
## 概述 本文的核心是:如何處理應用程式的資料配置。 配置應用程式可以使用以下幾種途徑: - 向容器傳遞命令列引數 - 為每個容器配置環境變數 - 通過特殊的卷將配置檔案掛載到容器中 ## 向容器傳遞命令列引數 在Kubernetes中定義容器時,映象的ENTRYPOINT和CMD都可以被覆蓋(但是在Do
Kubernetes 教程:根據 PID 獲取 Pod 名稱
> 原文連結:[https://fuckcloudnative.io/posts/find-kubernetes-pod-info-from-process-id/](https://fuckcloudnative.io/posts/find-kubernetes-pod-info-from-process-
day39-Spring 11-Spring的AOP:基於AspectJ的XML配置方式
asp 技術 mage bsp aop src xml配置方式 img aspectj day39-Spring 11-Spring的AOP:基於AspectJ的XML配置方式
轉:Linux 雙網卡配置兩個IP同時只有一個會通的原因
每次 網關 font onf ipv proc 發現 檢查 echo 根本原因: Linux默認啟用了反向路由檢查 如果2個網卡在一個Lan裏面,那麽服務器可能從eth0或者eth1發現網關, 如果一個包從eth0進入了, 而網關在eth1上, 那麽從eth1是出不去的,
老男孩教育每日一題-2017年5月12日-磁盤知識點:linux系統中LVM配置實現方法?
邏輯卷管理 磁盤 每日一題 1.題目老男孩教育每日一題-2017年5月12日-磁盤知識點:linux系統中LVM配置實現方法?2.參考答案01:將一個或多個物理分區創建為一個PV# pvcreate /dev/sdb{1,2} Physical volume "/dev/sdb1" success
前端數據處理:參數的獲取和組織發送
字符 字符串 div ren pri 其他 發送 其中 處理 1.var t = $(this); 當前DOM節點為開始 2.var uid = t.parent("dd).attr("perid"); 利用jquery獲取當前DOM節點父子,兄弟的屬性值 3."<d
筆記:MyBatis 使用 Java API配置
resultset type alias 然而 exe enabled 取數 actor comm 我們已經討論了各種MyBatis配置元素,如envronments、typeAlias和typeHandlers,以及如何使用XML配置它們。即使你想使用基於JavaAPI的
轉:CentOS 7使用nmcli配置雙網卡聚合LACP
lob ifconf centos7 運行程序 edge 鏈路聚合 網關 最長 ref 進入CentOS 7以後,網絡方面變化比較大,例如eth0不見了,ifconfig不見了,其原因是網絡服務全部都由NetworkManager管理了,下面記錄下今天下午用nmcli配置的
spring-boot實戰【05】:Spring Boo多環境配置及配置屬性註入到對象
num java red component 配置 cati 定義 fin row 項目工程結構: 配置文件application.properties文件 com.yucong.blog.name=yucong com.yucong.blog.title=Spring
通過獲取配置文件的方式獲取dataSource
cto .class 無法 nco 新增 pub 文件目錄 public inner 第一步:新建工程 SecondSpring 文件目錄結構如下: 第二步: 導入spring相關的jar包,已經 mysql的jar包 過程略... 第三步: 新建連接數據庫的配置文
《Java從入門到放棄》入門篇:使用註解的方式配置hibernate映射關系
如果 borde 版本 tar -s 相關 generate rate p s 之前我們都是使用配置文件的方式來生成的代碼,雖然和JDBC比較簡單了很多,但每次都在修改時需要既改實體類又改映射文件。還是有點麻煩。 所以,這一篇,我們來說說使用註解的方式來在接在實體類上配置映
二:搭建一個webpack3.5.5項目:建立項目的webpack配置文件
utf-8 更改 使用方法 dom echo 文件名 後綴 node www 第一步: npm init -y 【初始文件】 npm info webpack / bower info webpack【查看版本,用bower的時候要先 npm install bower】