中國南車將進軍純電動公務車領域

據中國國資委官網的消息,為響應政府公用車、公交車要率先推廣新能源汽車的號召,中國南車研制了有“陸地公務艙”之稱的純電動中型公務車。日前,由中國南車旗下南車時代電動申報的“純電動中型公務車研制”項目入選2014年度國家科技支撐計劃,成為國家級新能源中型公務車重點支持項目。

而中國南車業務一直是以鐵路機車、客車、動車組的設計、研發制造、銷售為主的,此次卻將業務范圍拓展到了電動汽車領域。

據中國南車集團公司宣傳部部長曹鋼材表示:「其實,此次已經不是中國南車第一次涉及電動汽車領域了,因為,隸屬于南車的南車株洲電力機車研究所有限公司一直在做電動汽車的研發及應用。」

據了解,高端中型公務車的年需求量在20萬輛左右,市場總額在600億元-800億元之間,市場蛋糕前景誘人,但目前大都是外資品牌。

在今年兩會期間,公務車改革呼聲十分強烈,伴隨著各級機關「厲行勤儉節約」風氣的貫徹落實以及國家公務車採購標準修訂方案的出臺實施,公務車採購自主化堅冰正在消融。7月12日,國務院總理李克強主持國務院常務會議,會議要求,政府公用車、公交車要率先推廣新能源汽車,並明確了到2015年我國大力推廣新能源公務車的目標。 

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※教你寫出一流的銷售文案?

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

※產品缺大量曝光嗎?你需要的是一流包裝設計!

中國提出2015年節能環保產業總產值到4.5兆元的目標

中國政府網昨(11)日發布《國務院關於加快發展節能環保產業的意見》,其中提出節能環保產業的目標是產值年均增幅超過15%,到2015年,總產值達4.5兆元(人民幣,下同),成為國民經濟新的支柱產業。

意見提出,在北京、上海、廣州等城市擴大公共服務領域新能源汽車示範推廣範圍,每年新增或更新的公交車中,新能源汽車的比例達60%以上。同時開展私人購買新能源汽車和新能源出租車、物流車補貼試點。

至於新能源汽車發展面對的兩大難題安全性及充電設施,意見指出,加快實施節能與新能源汽車技術創新工程,大力加強動力電池技術創新,重點解決動力電池系統安全性、可靠性和輕量化問題,加強驅動電機及核心材料、電控等關鍵零部件研發和產業化,加快完善配套產業和充電設施,示範推廣純電動汽車和插電式混合動力汽車、空氣動力車輛等。

為推廣節能環保產品,政府普通公務員用車需優先採購1.8升或以下燃油經濟性達要求的小排量汽車和新能源汽車,有選擇性優先選用純電動汽車。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

FB行銷專家,教你從零開始的技巧

特斯拉或于5年內推平價電動汽車Model E

電動汽車廠特斯拉(TESLA)本周遭披露,已向美國專利商標局申請使用「Model E」做為汽車產品命名,特斯拉不願證實是否與開發大眾化電動汽車款有關,但執行長馬斯克(Elon Musk)接受彭博專訪時,似乎間接證實這項意圖。

馬斯克表示,5年內將推出售價約3.5萬美元的平價電動汽車,同時將在亞洲、歐洲等地設廠,因應大眾化車款量產需求。

特斯拉今年計劃生產至少2.1萬台售價7萬美元的Model S豪華電動汽車,明年產量將加倍。儘管年產能上限50萬輛的加州廠仍足以應付,但未來隨售價僅約Model S一半的小型大眾車款加入,特斯拉必須擴廠。

不過,對於大眾化電動汽車上市時間,馬斯克轉趨保守,原先估計約3~4年,這次受訪則改口在5年之內。在大眾車款問世前,特斯拉明年底將先推出電動休旅車Model X延續買氣。

由於Model S熱銷,特斯拉較預期更早轉虧為盈,今年來股價大漲337%,推升該公司市值達到180億美元,超越了飛雅特(FIAT)等多家汽車大廠。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

網頁設計最專業,超強功能平台可客製化

韓國發明可折疊電動汽車

全球不少大城市都面臨交通擁擠,停車位嚴重不足的問題。而韓國近日研發一款可折疊電動汽車,減少樂停車時佔據的空間。

據韓國科研人員介紹,這款稱為Armadillo-T的車子可搭載兩個人,最高速度為每小時60公裏,充電10分鐘可走100公裏。駕駛員還可利用智能手機應用程序,在車子外部發出折疊或展開指令。

據了解,Armadillo-T在停車時會以車體中心為軸抬起後輪,使得車子佔位長度從2.8公尺縮短到1.65公尺。一個普通停車位可放置三輛Armadillo-T汽車,而且它可在停車狀態下旋轉360度,停放在普通車輛不能停放的地方。

為安全起見,設計師還將傳統的後視鏡置替換為環繞視圖攝像頭。然而,由于Armadillo-T未達韓國公共交通安全準則,如無法承受猛烈撞擊,因此無法在街道上行駛。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※幫你省時又省力,新北清潔一流服務好口碑

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!

中國電動汽車後碰撞及安全氣囊標准有望于十二五期間建立

據中國汽車技術研究中心標准所高級工程師孫振東近日表示,到十二五末,國家爭取逐步建立起電動汽車後碰撞以及安全氣囊的標准體系。

孫振東在9月8日于天津舉行的中國汽車產業發展(泰達)國際論壇上表示,目前新能源汽車正處於快速發展中,它的安全得到了社會各界的重視。中國汽車技術研究中心標准所也會加緊研究和制定新能源汽車的安全標准。

孫振東介紹,被動安全是指當車輛發生交通事故的時候,車輛對成員提供的有效保護。目前整個中國汽車標准體系中,有關被動安全的共有32項標准。

對於乘用車,國家已經建立了完整有效的體系。但是對於商用車,包括客車和貨車,被動安全標准正在建立和完善的過程中,這也是中國汽車技術研究中心標准所今後的工作重點。目前江淮汽車、長安汽車、比亞迪、福田汽車等車企有涉足電動汽車業務。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

新北清潔公司,居家、辦公、裝潢細清專業服務

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

FB行銷專家,教你從零開始的技巧

中國多部委正制定新一輪新能源汽車推廣方案實施細則

據中國證券報報導,中國人民銀行、科技部、工信部等多部委正在加緊「備戰」新一輪新能源汽車的推廣方案。有觀點認為,隨著近來油價的持續高企,中國正在迎來新能源汽車推廣的最佳窗口期。

科技部部長萬鋼日前表示,國務院已正式批復新一輪的新能源汽車示范推廣方案,科技部、工信部等四部委正在制定實施細則。全國汽車標準委電動車輛分委會副主任陳全世表示,新一輪推廣政策或將淡化試點城市,在所有地級以上城市推廣混合動力汽車。隨著太陽能、風能和智能電網的發展,建議繼續大力拓展混合動力客車尤其是插電式混合動力客車的推廣。

中國人民銀行研究局副局長易誠表示,要完成「十二五」節能環保發展目標,我國每年在發展可再生能源方面的投入資金或將達到5000億到1萬億元(人民幣)。今後除繼續加強金融對綠色環保領域的產業扶持政策引導之外,建議在個人金融消費領域出臺綠色消費信貸扶持政策,支持混合動力汽車、節能家電等產品的消費信貸,鼓勵綠色消費方式。

據悉,新一輪新能源汽車示范推廣方案將以新能源汽車為主開展示范,以試點城市為核心建立試點區域,擴大輻射范圍,加大電動汽車的推廣。同時,改變原有的財政資金補貼方式,加快補貼資金的落實力度。此外,還將對充電站的建設進行財政支持。

業內人士認為,對汽車產品而言,一是通過節能產品惠民工程補貼政策,鼓勵傳統節能汽車消費;二是通過節能與新能源汽車示范推廣試點補貼政策,鼓勵多個城市的公共服務領域和私人購買使用新能源汽車。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

新北清潔公司,居家、辦公、裝潢細清專業服務

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

網頁設計最專業,超強功能平台可客製化

江淮汽車否認與特斯拉成立合資公司

早前有證券網站的消息稱,江淮汽車擬與特斯拉在合肥成立電動汽車合資公司,項目總投資額為50億元,雙方各持50%股權。報導還稱,江淮汽車還將以幾乎全部的插電式混合動力汽車資產和業務作為出資投入合資公司,而特斯拉將以現金出資,並為合資公司提供某些工業產權。

對此,江淮董事會秘書馮梁森與特斯拉中國銷售總監沈琪都表示,並無此事。

而除了江淮,比亞迪也是特斯拉的傳聞合作對象。雖然特斯拉CEO穆斯克與比亞迪掌門王傳福互相看輕,但比亞迪得到巴菲特的垂青,業界并不排除這兩家公司的合作可能。

另外,中國的零部件供應商同樣躍躍欲試。其中,成飛集成就曾表示,會積極尋求與特斯拉的合作機會。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※教你寫出一流的銷售文案?

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

※產品缺大量曝光嗎?你需要的是一流包裝設計!

華夏動力及申沃50億元新能源客車項目入駐山西

9月16日上午,山西省孝義市與山西華夏動力科技、上海申沃客車合作項目-投資50億元的新能源客車聯合研制生產基地項目在太原簽約。該項目規劃五年內生產規模達到5000輛產能,預計年產值可達70億元。

據了解,上述三方將在孝義市建設新能源客車及核心零部件聯合研制生產基地,以發展新能源純電動大客車以及核心零部件聯合為起點,建設首條純電動客車示范運營線路和配套充電設施。

華夏動力農用車電機、電池項目已于2011年落戶孝義市,並于2012年9月正式入駐該市高新科技產業園區。上海申沃客車則擁有年產2500輛城市客車、城郊客車及500輛底盤的生產能力,可生產大型長途客車、柴油發動機公交車、CNG壓縮天然氣公交車以及純電動城市公交車等。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

FB行銷專家,教你從零開始的技巧

008.OpenShift Metric應用

一 METRICS子系統組件

1.1 metric架構介紹


OpenShift metric子系統支持捕獲和長期存儲OpenShift集群的性能度量,收集節點以及節點中運行的所有容器的指標。



metric子系統被由以下開源項目的容器組件構成:

  • Heapster


從Kubernetes集群中的所有節點收集指標,並將其轉發給存儲引擎進行長期存儲。OCP使用Hawkular作為Heapster的存儲引擎。

Heapster項目是由Kubernetes社區孵化的,目的是為第三方應用程序提供一種從Kubernetes集群捕獲性能數據的方法。

  • Hawkular Metrics


提供用於存儲和查詢時間序列數據的REST API。Hawkular Metrics組件是更大的Hawkular項目的一部分。Hawkular Metrics使用Cassandra作為其數據存儲。

Hawkular是作為RHQ項目(Red Hat JBoss Operations Network product)的繼承者創建的,是Red Hat CloudForms產品中間件管理功能的一個關鍵部分。

  • Hawkular Agent


從應用程序收集自定義性能指標,並將其轉發到Hawkular Metrics進行存儲。應用程序為Hawkular agent提供度量標準。

Hawkular OpenShift Agent (HOSA)目前是一個技術預覽功能,默認情況下沒有安裝,Red Hat不支持技術預覽功能,也不建議將其用於生產。

  • Cassandra


將時間序列數據存儲在非關係分佈式數據庫中。

OpenShift Metrics子系統獨立於其他OpenShift組件工作。OpenShift只有三個部分需要metrics子系統來提供一些可選特性:

  • web控制台調用Hawkular Metrics API來獲取數據,以呈現項目中pod的性能圖形。如果沒有部署度量子系統,則不显示圖表。


注意,這些調用是從用戶web瀏覽器發出的,而不是從OpenShift主節點發出的。

  • oc adm top命令使用Heapster API來獲取關於集群中所有pod和節點的當前狀態的數據。
  • Kubernetes的autoscaler控制器調用Heapster API來從部署中獲取關於所有pod當前狀態的數據,以便決定如何伸縮部署控制器。


OCP並不強制一定部署完整的度量子系統,如果已經有一個監視系統,並且希望使用它來管理OpenShift集群,那麼可以選擇只部署Heapster組件,並將度量的長期存儲委託給外部監視系統。

如果現有的監視系統只提供警報和健康功能,那麼監視系統可以使用Hawkular API捕獲指標來生成警報。

Heapster收集節點及其容器的指標,然後聚合pod、namespace和整個集群的指標。

Heapster為一個節點收集的指標包括:

working set:節點中運行的所有進程有效使用的內存,以bytes為單位度量。

CPU usage:節點中運行的所有進程使用的CPU數量,以millicores單位度量,十個millicores相當於一個CPU繁忙時間的1%。

Heapster還支持對內存中保留的指標進行簡單查詢,這些查詢允許獲取在特定時間範圍內收集和聚合的度量。

1.2 訪問Heapster和Hawkular


OpenShift用戶需要區分聲明的資源請求(和限制)與實際的資源使用情況。pod聲明的資源請求用於調度,聲明的資源請求從節點容量中減去,其差值是節點的剩餘可用容量。

節點的可用容量不反映在節點內運行的容器和其他應用程序使用的實際內存和CPU。

oc describe node命令,在OCP 3.9中,只显示與pods聲明的資源請求相關的信息。如果pod沒有聲明任何資源請求,則不會考慮pod的實際資源使用情況,節點的可用容量可能看起來比實際容量大。

web控制台显示的信息與oc describe node命令相同,還可以显示Hawkular Metrics的實際資源使用情況。但是,OCP 3.9的web控制台只显示pod和項目的指標,web控制台不显示節點指標。

要獲得節點的實際資源使用情況,並確定節點是否接近其全部硬件或虛擬容量,系統管理員需要使用oc adm top命令。如果需要更詳細的信息,系統管理員可以使用標準的Linux命令,比如vmstat和ps。

OpenShift不向集群外部公開Heapster組件。外部應用程序需要訪問Heapster必須使用OpenShift master API代理。master API代理確保對內部組件API的訪問遵從OpenShift集群身份驗證和訪問控制策略。

將Hawkular暴露給外部訪問涉及到一些安全方面的考慮。如果系統管理員認為使用Heapster和Hawkular api過於複雜,那麼Origin和Kubernetes開源項目的上游社區還提供了與Nagios和Zabbix等流行的開源監控工具的集成,或者當前最火熱的Prometheus。

1.3 Metrics subsystem大小


OpenShift度量子系統的每個組件都使用自己的dc進行部署,並且獨立於其他組件進行伸縮。它們可以計劃在OpenShift集群的任何地方運行,但是建議為生產環境中的metrics子系統pod特定保留一些node0。

Cassandra和Hawkular是Java應用程序。Hawkular運行在JBoss EAP 7應用服務器中。Hawkular和Cassandra都利用了大規模的優勢,默認值是為中小型OpenShift集群設置的大小。測試環境可能需要更改默認值,以減少內存和CPU資源。

Heapster和Hawkular部署使用標準的OpenShift工具部署size、比例和調度。少量Heapster和Hawkular pods可以管理數百個OpenShift節點和數千個項目的指標。

可以使用oc命令配置Heapster和Hawkular部署。例如增加每個pod請求的副本數量或資源數量,但是推薦的配置參數的方法是修改為安裝Metrics的Ansible劇本中的變量。

Cassandra不能使用標準oc命令進行伸縮和配置,因為Cassandra(大多數數據庫都是這樣)不是無狀態雲應用程序。Cassandra有嚴格的存儲要求,每個Cassandra pod都有不同的部署配置。必須使用Metrics安裝playbook來伸縮和配置Cassandra部署。

1.4 CASSANDRA配置持久存儲


Cassandra可以部署為單個pod,使用一個持久卷。但至少需要三個Cassandra pod才能為度量子系統實現高可用性(HA)。每個pod都需要一個獨佔卷:Cassandra使用“無共享”存儲架構。

儘管Cassandra可以使用enptyDir存儲進行部署,但這意味着存在永久數據丟失的風險。通常生產環境不推薦使用臨時存儲(即emptyDir卷類型)。

每個Cassandra卷使用的存儲量不僅取決於預期的集群大小(節點和pod的數量),還取決於度量的時間序列的粒度和持續時間。

Metrics安裝劇本支持使用靜態供應的持久卷或動態卷。無論選擇哪種方法,playbook都基於前綴創建持久卷聲明,前綴後面附加一個序列號。對於靜態供應的持久卷,請確保使用相同的命名約定。

二 METRICS子系統

2.1 部署metrics子系統


OpenShift Metrics子系統由Ansible playbook部署,可以選擇使用基本playbook或單獨用於Metrics的playbook進行部署。

大多數Metrics子系統配置是使用用於高級安裝方法的Inventory文件中的Ansible變量執行的。儘管可以使用-e選項覆蓋或自定義某些變量的值,更建議在Inventory中定義metrics變量。如果需要更改度量Metrics配置,可更新Inventory中的變量並重新運行安裝劇本。

metrics子系統在許多生產環境中不需要認定配置,可直接通過運行metrics安裝劇本使用默認設置安裝。

示例:Ansible結合主配置文件和Metrics子系統playbook安裝。

Ansible主配置文件如下:

  1 [defaults]
  2 remote_user = student
  3 inventory = ./inventory
  4 log_path = ./ansible.log
  5 [privilege_escalation]
  6 become = yes
  7 become_user = root
  8 become_method = sudo
  9 Metrics子系統劇本:
 10 # ansible-playbook \
 11 /usr/share/ansible/openshift-ansible/playbooks

/openshift-metrics/config.yml \

-e openshift_metrics_install_metrics=True

提示:OpenShift metrics劇本由openshift-ansibl -playbooks包提供,該包是作為atom-openshift-utils包的依賴項安裝的。

openshift_metrics_install_metrics Ansible變量配置劇本用來部署metrics子系統,playbook為metrics子系統創建dc、service和其他支撐metrics的Kubernetes資源,還可以在用於部署集群的Inventory文件中定義該變量。

metrics子系統安裝playbook會在openshift-infra項目中創建所需Kubernetes資源。安裝playbook不配置任何節點選擇器來限制pod所運行的node。

2.2 卸載metrics子系統


卸載OpenShift metrics子系統的一種方法是手動刪除OpenShift-infra項目中的所有Kubernetes資源。通常需要多個oc命令,且容易出錯,因為其他OpenShift子系統也被部署到這個項目。

卸載metrics子系統的推薦方法是運行安裝劇本,但是將openshift_metrics_install_metrics Ansible變量設置為False,如下面的示例所示,-e選項覆蓋庫存文件中定義的值。

  1  # ansible-playbook \
  2 /usr/share/ansible/openshift-ansible/playbooks/openshift-metrics/config.yml \
  3 -e openshift_metrics_install_metrics=False


2.3 驗證metrics子系統


OpenShift metrics子系統playbook完成后,應該創建所有Cassandra、Hawkular和Heapster pod,並可能需要一些時間進行初始化。可能由於Cassandra pod初始化時間過長,會重新啟動Hawkular和Heapster pod。

除非另外配置,否則安裝程序劇本應該為每個組件創建一個dc,其中包含一個pod,並且openshift-infra項目的oc get pod能显示相應pod。

2.4 部署metrics子系統常見錯誤


造成部署錯誤的常見原因通常有:

  • image缺失;
  • metrics所需資源過高,節點無法滿足;
  • Cassandra pod所需的持久卷無法滿足。

2.5 其他配置


在所有pod準備好並運行之後,需要執行一個特定配置以便於和web對接。如果跳過此步驟,OpenShift web控制台將無法显示項目的metrics圖形,儘管底層metrics子系統正在正常工作。

OpenShift web控制台是一個JavaScript應用程序,它直接訪問Hawkular API,而不需要經過OpenShift master service。

但由於內部使用TLS訪問API,默認情況下,TLS證書不是由受信任的認證機構簽署的。因此web瀏覽器拒絕連接到Hawkular API endpoint。

在OpenShift安裝之後,web控制台本身也會出現類似證書不信任的問題。與metrics同樣的方式解決,配置瀏覽器接受TLS證書。為此,在web瀏覽器中打開Hawkular API歡迎頁面,並接受不受信任的TLS證書。

https://hawkular-metrics.<master-wildcard-domain>

主通配符域DNS後綴應該與OpenShift主服務中配置的後綴相同,並用作新路由的默認域。

playbook從Ansible hosts文件中獲取主通配符域值,由openshift_master_default_subdomain變量定義。如果更改了OpenShift master service配置,則它們將不匹配。在本例中,為metrics劇本中的openshift_metrics_hawkular_hostname變量提供新值。2.6

2.6 metrics涉及變量


OCP安裝和配置文檔提供了metrics安裝劇本使用的所有可能變量的列表,它們控制着各種配置參數。常見有:

每個組件的pod比例:

  • openshift_metrics_cassandra_replicas
  • openshift_metrics_hawkular_replicas


每個組件對pod的資源請求和限制:

  • openshift_metrics_cassandra_requests_memory
  • openshift_metrics_cassandra_limits_memory
  • openshift_metrics_cassandra_requests_cpu
  • openshift_metrics_cassandra_limits_cpu


對於Hawkular和Heapster,有類似配置:

  • openshift_metrics_hawkular_requests_memory
  • openshift_metrics_heapster_requests_memory


用於duration和resolution參數:

  • openshift_metrics_duration
  • openshift_metrics_resolution


Cassandra pods的持久卷聲明屬性:

  • openshift_metrics_cassandra_storage_type
  • openshift_metrics_cassandra_pvc_prefix
  • openshift_metrics_cassandra_pvc_size


用於pull metrics子系統容器image的倉庫:

  • openshift_metrics_image_prefix
  • openshift_metrics_image_version


其他配置參考:

  • openshift_metrics_heapster_standalone
  • openshift_metrics_hawkular_hostname


示例1:使用自定義配置安裝metrics子系統,用於覆蓋Inventory中定義的Cassandra配置。

  1 [OSEv3:vars]
  2 ...output omitted...
  3 openshift_metrics_cassandra_replicas=2
  4 openshift_metrics_cassandra_requests_memory=2Gi
  5 openshift_metrics_cassandra_pvc_size=50Gi



示例2:使用自定義配置,用於覆蓋Cassandra定義的屬性。

  1 # ansible-playbook \
  2 /usr/share/ansible/openshift-ansible/playbooks/openshift-metrics/config.yml \
  3 -e openshift_metrics_cassandra_replicas=3 \
  4 -e openshift_metrics_cassandra_requests_memory=4Gi \
  5 -e openshift_metrics_cassandra_pvc_size=25Gi



提示:大多數配置參數都可以使用OpenShift oc命令進行更改,但是推薦的方法是使用更新Inventory中變量值運行metrics安裝劇本進行修改。

三 安裝metrics子系統

3.1 前置準備


準備完整的OpenShift集群,參考《003.OpenShift網絡》2.1。

3.2 本練習準備

  1 [student@workstation ~]$ lab install-metrics setup

3.3 驗證image

  1 [student@workstation ~]$ docker-registry-cli registry.lab.example.com \
  2 search metrics-cassandra ssl
  3 [student@workstation ~]$ docker-registry-cli registry.lab.example.com \
  4 search ose-recycler ssl


3.4 驗證NFS

  1 [root@services ~]# ll -aZ /exports/metrics/
  2 drwxrwxrwx. nfsnobody nfsnobody unconfined_u:object_r:default_t:s0 .
  3 drwxr-xr-x. root      root      unconfined_u:object_r:default_t:s0 ..
  4 [root@services ~]# cat /etc/exports.d/openshift-ansible.exports




3.5 創建PV

  1 [student@workstation ~]$ cat /home/student/DO280/labs/install-metrics/metrics-pv.yml
  2 apiVersion: v1
  3 kind: PersistentVolume
  4 metadata:
  5   name: metrics
  6 spec:
  7   capacity:
  8     storage: 5Gi			#定義capacity.storage容量為5G
  9   accessModes:
 10   - ReadWriteOnce			#定義訪問模式
 11   nfs:
 12     path: /exports/metrics		#定義nfs.path
 13     server: services.lab.example.com	#定義nfs.services
 14   persistentVolumeReclaimPolicy: Recycl	#定義回收策略


  1 [student@workstation ~]$ oc login -u admin -p redhat https://master.lab.example.com
  2 [student@workstation ~]$ oc create -f /home/student/DO280/labs/install-metrics/metrics-pv.yml
  3 [student@workstation ~]$ oc get pv
  4 NAME        CAPACITY    ACCESS MODES    RECLAIM POLICY    STATUS    CLAIM    STORAGECLASS    REASON    AGE
  5 metrics     Gi          RWO             Recycle           Available                                    14s


3.6 規劃安裝變量


openshift_metrics_image_prefix:指向服務VM上的私有倉庫,並添加openshift3/ose-作為映像名稱前綴。

openshift_metrics_image_version:要使用的容器image標記,私有倉庫為image添加一個v3.9標記。

openshift_metrics_heapster_requests_memory:本環境配置300mb內存。

openshift_metrics_hawkular_requests_memory:本環境配置750mb內存。

openshift_metrics_cassandra_requests_memory:本環境配置750mb內存。

openshift_metrics_cassandra_storage_type:使用pv選擇一個持久卷作為存儲類型。

openshift_metrics_cassandra_pvc_size:本環境配置5gib容量。

openshift_metrics_cassandra_pvc_prefix:使用metrics作為pvc名稱的前綴.

提示:生產環境中建議根據實際規劃進行配置,可適當調大配置規格。

3.7 配置安裝變量

  1 [student@workstation ~]$ cd /home/student/DO280/labs/install-metrics
  2 [student@workstation install-metrics]$ cat metrics-vars.txt
  3 # Metrics Variables
  4 # Append the variables to the [OSEv3:vars] group
  5 openshift_metrics_install_metrics=True
  6 openshift_metrics_image_prefix=registry.lab.example.com/openshift3/ose-
  7 openshift_metrics_image_version=v3.9
  8 openshift_metrics_heapster_requests_memory=300M
  9 openshift_metrics_hawkular_requests_memory=750M
 10 openshift_metrics_cassandra_requests_memory=750M
 11 openshift_metrics_cassandra_storage_type=pv
 12 openshift_metrics_cassandra_pvc_size=5Gi
 13 openshift_metrics_cassandra_pvc_prefix=metrics
 14 [student@workstation install-metrics]$ cat metrics-vars.txt >> inventory
 15 [student@workstation install-metrics]$ lab install-metrics grade		#本環境使用腳本判斷配置


3.8 執行安裝

  1 [student@workstation install-metrics]$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/openshift-metrics/config.yml



3.9 驗證安裝

  1 [student@workstation install-metrics]$ oc get pvc -n openshift-infra		#驗證持久卷是否成功掛載
  2 NAME        STATUS    VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
  3 metrics-1   Bound     metrics   5Gi        RWO                           5m
  4 [student@workstation install-metrics]$ oc get pod -n openshift-infra		#驗證metric相關pod
  5 NAME                         READY     STATUS    RESTARTS   AGE
  6 hawkular-cassandra-1-6k7fr   1/1       Running   0          5m
  7 hawkular-metrics-z9v85       1/1       Running   0          5m
  8 heapster-mbdcl               1/1       Running   0          5m
  9 [student@workstation install-metrics]$ oc get route -n openshift-infra		#查看metric route地址
 10 NAME                HOST/PORT                                PATH    SERVICES            PORT    TERMINATION    WILDCARD
 11 hawkular-metrics   hawkular-metrics.apps.lab.example.com             hawkular-metrics    <all>   reencrypt
 12 None



瀏覽器訪問:

https://hawkular-metrics.apps.lab.example.com



提示:瀏覽器信任SSL證書。

3.10 部署測試應用

  1 [student@workstation ~]$ oc login -u developer -p redhat \
  2 https://master.lab.example.com				#登錄OpenShift
  3 [student@workstation ~]$ oc new-project load		#創建project
  4 [student@workstation ~]$ oc new-app --name=hello \
  5 --docker-image=registry.lab.example.com/openshift/hello-openshift	#部署應用
  6 [student@workstation ~]$ oc scale --replicas=9 dc/hello			#擴展應用
  7 [student@workstation ~]$ oc get pod -o wide				#查看pod
  8 NAME            READY     STATUS    RESTARTS   AGE       IP            NODE
  9 hello-1-4nvfd   1/1       Running   0          1m        10.129.0.40   node2.lab.example.com
 10 hello-1-c9f8t   1/1       Running   0          1m        10.128.0.22   node1.lab.example.com
 11 hello-1-dfczg   1/1       Running   0          1m        10.128.0.23   node1.lab.example.com
 12 hello-1-dvdx2   1/1       Running   0          1m        10.129.0.36   node2.lab.example.com
 13 hello-1-f6rsl   1/1       Running   0          1m        10.128.0.20   node1.lab.example.com
 14 hello-1-m2hb4   1/1       Running   0          1m        10.129.0.39   node2.lab.example.com
 15 hello-1-r64z9   1/1       Running   0          1m        10.128.0.21   node1.lab.example.com
 16 hello-1-tf4l5   1/1       Running   0          1m        10.129.0.37   node2.lab.example.com
 17 hello-1-wl6zx   1/1       Running   0          1m        10.129.0.38   node2.lab.example.com
 18 [student@workstation ~]$ oc expose svc hello


3.11 壓力測試

  1 [student@workstation ~]$ sudo yum -y install httpd-tools
  2 [student@workstation ~]$ ab -n 300000 -c 20 http://hello-load.apps.lab.example.com/


3.12 查看資源使用情況

  1 [student@workstation ~]$ oc login -u admin -p redhat
  2 [student@workstation ~]$ oc adm top node \
  3 --heapster-namespace=openshift-infra \
  4 --heapster-scheme=https
  5 NAME                     CPU(cores)   CPU%      MEMORY(bytes)   MEMORY%
  6 master.lab.example.com   273m         13%       1271Mi          73%
  7 node1.lab.example.com    1685m        84%       3130Mi          40%
  8 node2.lab.example.com    1037m        51%       477Mi           6%



提示:保持3.11的壓測程序,重開終端進行查看。

3.13 獲取指標

  1 [student@workstation ~]$ cat ~/DO280/labs/install-metrics/node-metrics.sh	#使用此腳本獲取指標



  1 [student@workstation ~]$ ./DO280/labs/install-metrics/node-metrics.sh




瀏覽器訪問:https://master.lab.example.com

查看相關性能監控。


本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※別再煩惱如何寫文案,掌握八大原則!

網頁設計最專業,超強功能平台可客製化

TensorFlow中讀取圖像數據的三種方式

  本文面對三種常常遇到的情況,總結三種讀取數據的方式,分別用於處理單張圖片、大量圖片,和TFRecorder讀取方式。並且還補充了功能相近的tf函數。

1、處理單張圖片

  我們訓練完模型之後,常常要用圖片測試,有的時候,我們並不需要對很多圖像做測試,可能就是幾張甚至一張。這種情況下沒有必要用隊列機制。

import tensorflow as tf
import matplotlib.pyplot as plt

def read_image(file_name):
    img = tf.read_file(filename=file_name)     # 默認讀取格式為uint8
    print("img 的類型是",type(img));
    img = tf.image.decode_jpeg(img,channels=0) # channels 為1得到的是灰度圖,為0則按照圖片格式來讀
    return img

def main( ):
    with tf.device("/cpu:0"):
         # img_path是文件所在地址包括文件名稱,地址用相對地址或者絕對地址都行 
            img_path='./1.jpg'
            img=read_image(img_path)
            with tf.Session() as sess:
            image_numpy=sess.run(img)
            print(image_numpy)
            print(image_numpy.dtype)
            print(image_numpy.shape)
            plt.imshow(image_numpy)
            plt.show()

if __name__=="__main__":
    main()

"""
輸出結果為:

img 的類型是 <class 'tensorflow.python.framework.ops.Tensor'>
[[[196 219 209]
  [196 219 209]
  [196 219 209]
  ...

 [[ 71 106  42]
  [ 59  89  39]
  [ 34  63  19]
  ...
  [ 21  52  46]
  [ 15  45  43]
  [ 22  50  53]]]
uint8
(675, 1200, 3)
"""

   和tf.read_file用法相似的函數還有tf.gfile.FastGFile  tf.gfile.GFile,只是要指定讀取方式是’r’ 還是’rb’ 。

2、需要讀取大量圖像用於訓練

  這種情況就需要使用Tensorflow隊列機制。首先是獲得每張圖片的路徑,把他們都放進一個list裏面,然後用string_input_producer創建隊列,再用tf.WholeFileReader讀取。具體請看下例:

def get_image_batch(data_file,batch_size):
    data_names=[os.path.join(data_file,k) for k in os.listdir(data_file)]
 
    #這個num_epochs函數在整個Graph是local Variable,所以在sess.run全局變量的時候也要加上局部變量。  
    filenames_queue=tf.train.string_input_producer(data_names,num_epochs=50,shuffle=True,capacity=512)
    reader=tf.WholeFileReader()
    _,img_bytes=reader.read(filenames_queue)
    image=tf.image.decode_png(img_bytes,channels=1)    #讀取的是什麼格式,就decode什麼格式
    #解碼成單通道的,並且獲得的結果的shape是[?, ?,1],也就是Graph不知道圖像的大小,需要set_shape
    image.set_shape([180,180,1])   #set到原本已知圖像的大小。或者直接通過tf.image.resize_images,tf.reshape()
    image=tf.image.convert_image_dtype(image,tf.float32)
    #預處理  下面的一句代碼可以換成自己想使用的預處理方式
    #image=tf.divide(image,255.0)   
    return tf.train.batch([image],batch_size) 

  這裏的date_file是指文件夾所在的路徑,不包括文件名。第一句是遍歷指定目錄下的文件名稱,存放到一個list中。當然這個做法有很多種方法,比如glob.glob,或者tf.train.match_filename_once

全部代碼如下:

import tensorflow as tf
import os
def read_image(data_file,batch_size):
    data_names=[os.path.join(data_file,k) for k in os.listdir(data_file)]
    filenames_queue=tf.train.string_input_producer(data_names,num_epochs=5,shuffle=True,capacity=30)
    reader=tf.WholeFileReader()
    _,img_bytes=reader.read(filenames_queue)
    image=tf.image.decode_jpeg(img_bytes,channels=1)
    image=tf.image.resize_images(image,(180,180))

    image=tf.image.convert_image_dtype(image,tf.float32)
    return tf.train.batch([image],batch_size)

def main( ):
    img_path=r'F:\dataSet\WIDER\WIDER_train\images\6--Funeral'  #本地的一個數據集目錄,有足夠的圖像
    img=read_image(img_path,batch_size=10)
    image=img[0]  #取出每個batch的第一個數據
    print(image)
    init=[tf.global_variables_initializer(),tf.local_variables_initializer()]
    with tf.Session() as sess:
        sess.run(init)
        coord = tf.train.Coordinator()
        threads = tf.train.start_queue_runners(sess=sess,coord=coord)
        try:
            while not coord.should_stop():
                print(image.shape)
        except tf.errors.OutOfRangeError:
            print('read done')
        finally:
            coord.request_stop()
        coord.join(threads)


if __name__=="__main__":
    main()

"""
輸出如下:
(180, 180, 1)
(180, 180, 1)
(180, 180, 1)
(180, 180, 1)
(180, 180, 1)
"""

  這段代碼可以說寫的很是規整了。注意到init裏面有對local變量的初始化,並且因為用到了隊列,當然要告訴電腦什麼時候隊列開始, tf.train.Coordinator 和 tf.train.start_queue_runners 就是兩個管理隊列的類,用法如程序所示。

  與 tf.train.string_input_producer相似的函數是 tf.train.slice_input_producer。 tf.train.slice_input_producer和tf.train.string_input_producer的第一個參數形式不一樣。等有時間再做一個二者比較的博客

 3、對TFRecorder解碼獲得圖像數據

  其實這塊和上一種方式差不多的,更重要的是怎麼生成TFRecorder文件,這一部分我會補充到另一篇博客上。

  仍然使用 tf.train.string_input_producer。

import tensorflow as tf
import matplotlib.pyplot as plt
import os
import cv2
import  numpy as np
import glob

def read_image(data_file,batch_size):
    files_path=glob.glob(data_file)
    queue=tf.train.string_input_producer(files_path,num_epochs=None)
    reader = tf.TFRecordReader()
    print(queue)
    _, serialized_example = reader.read(queue)
    features = tf.parse_single_example(
        serialized_example,
        features={
            'image_raw': tf.FixedLenFeature([], tf.string),
            'label_raw': tf.FixedLenFeature([], tf.string),
        })
    image = tf.decode_raw(features['image_raw'], tf.uint8)
    image = tf.cast(image, tf.float32)
    image.set_shape((12*12*3))
    label = tf.decode_raw(features['label_raw'], tf.float32)
    label.set_shape((2))
    # 預處理部分省略,大家可以自己根據需要添加
    return tf.train.batch([image,label],batch_size=batch_size,num_threads=4,capacity=5*batch_size)

def main( ):
    img_path=r'F:\python\MTCNN_by_myself\prepare_data\pnet*.tfrecords'  #本地的幾個tf文件
    img,label=read_image(img_path,batch_size=10)
    image=img[0]
    init=[tf.global_variables_initializer(),tf.local_variables_initializer()]
    with tf.Session() as sess:
        sess.run(init)
        coord = tf.train.Coordinator()
        threads = tf.train.start_queue_runners(sess=sess,coord=coord)
        try:
            while not coord.should_stop():
                print(image.shape)
        except tf.errors.OutOfRangeError:
            print('read done')
        finally:
            coord.request_stop()
        coord.join(threads)


if __name__=="__main__":
    main()

  在read_image函數中,先使用glob函數獲得了存放tfrecord文件的列表,然後根據TFRecord文件是如何存的就如何parse,再set_shape;這裡有必要提醒下parse的方式。我們看到這裏用的是tf.decode_raw ,因為做TFRecord是將圖像數據string化了,數據是串行的,丟失了空間結果。從features中取出image和label的數據,這時就要用 tf.decode_raw  解碼,得到的結果當然也是串行的了,所以set_shape 成一個串行的,再reshape。這種方式是取決於你的編碼TFRecord方式的。

再舉一種例子:

reader=tf.TFRecordReader()
_,serialized_example=reader.read(file_name_queue)
features = tf.parse_single_example(serialized_example, features={
    'data': tf.FixedLenFeature([256,256], tf.float32), ###
    'label': tf.FixedLenFeature([], tf.int64),
    'id': tf.FixedLenFeature([], tf.int64)
})
img = features['data']
label =features['label']
id = features['id']

  這個時候就不需要任何解碼了。因為做TFRecord的方式就是直接把圖像數據append進去了。

參考鏈接:

  https://blog.csdn.net/qq_34914551/article/details/86286184

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※想知道最厲害的網頁設計公司"嚨底家"!

※幫你省時又省力,新北清潔一流服務好口碑

※別再煩惱如何寫文案,掌握八大原則!

※產品缺大量曝光嗎?你需要的是一流包裝設計!