A. 容器docker的作用是什麼 這四個好處你知道幾個
1、作用:提到容器技術,我們就不可避免的會想到docker。Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中。在用Docker的情況下,大家可以直接把項目發布在DocKer容器上面進行測試,當項目需要正式上線的時候,直接可以把做好的DocKer 鏡像部署上去就行了,如果測試的好,就不必擔心項目上正式版本的時候再出現什麼問題。
2、好處:
(1)輕量、消耗少:使用Docker能合並多個服務以降低費用,不多的操作系統內存佔用,跨實例共享多個空閑的內存,這些技術讓Docker能以更加緊密的資源提供更有效的服務合並。基於LXC輕量級特點,啟動快,而且docker能夠只載入每個container變化的部分,這樣資源佔用小,在單機環境下與KVM之類的虛擬化方案相比,能夠更加快速和佔用更少資源。
(2)高利用率與隔離:容器服務沒有管理程序的額外開銷,與底層共享操作系統,性能更加優良,系統負載更低,在同等條件下可以運行更多的實例,充分利用系統資源。同時,容器擁有不錯的資源隔離與限制能力,可以精確地對應用分配CPU、內存等資源,保證了應用間不會相互影響。
(3)快速部署與微服務:Docker通過創建流程的容器,不必重新啟動操作系統,幾秒內能關閉,你可以在數據中心創建或銷毀資源,不用擔心額外消耗。Docker 提供輕量的虛擬化,你能夠從Docker獲得一個額外抽象層,能夠在單台機器上運行多個Docker微容器,而每個微容器里都有一個微服務或獨立應用。
(4)標准化環境和控制:基於容器提供的環境一致性和標准化,你可以使用Gt等工具對容器鏡像進行版本控制。相比基於代碼的版本控制來說,還能夠對整個應用運行環境實現版本控制,一旦出現故障可以快速回滾。相比虛擬機鏡像,容器壓縮和備份速度更快,鏡像啟動也像啟動一個普通進程一樣快速。
B. 如何使用OpenStack,Docker和Spark打造一個雲服務
蘑菇街基於 OpenStack 和 Docker 的私有雲實踐
本次主要想分享一下過去一年時間里,我們在建設基於Docker的私有雲實踐過程中,曾經遇到過的問題,如何解決的經驗,還有我們的體會和思考,與大家共勉。
在生產環境中使用Docker有一些經歷和經驗。私有雲項目是2014年聖誕節期間上線的,從無到有,經過了半年多的發展,經歷了3次大促,已經逐漸形成了一定的規模。
架構
集群管理
大家知道,Docker自身的集群管理能力在當時條件下還很不成熟,因此我們沒有選擇剛出現的 Swarm,而是用了業界最成熟的OpenStack,這樣能同時管理Docker和KVM。我們把Docker當成虛擬機來跑,是為了能滿足業務上對虛擬化的需求。今後的思路是微服務化,把應用進行拆分,變成一個個微服務,實現PaaS基於應用的部署和發布。
通過OpenStack如何管理Docker?我們採用的是OpenStack+nova-docker+Docker的架構模式。nova- docker是StackForge上一個開源項目,它做為nova的一個插件,通過調用Docker的RESTful介面來控制容器的啟停等動作。
我們在IaaS基礎上自研了編排調度等組件,支持應用的彈性伸縮、灰度升級等功能,並支持一定的調度策略,從而實現了PaaS層的主要功能。
同時,基於Docker和Jenkins實現了持續集成(CI)。Git中的項目如果發生了git push等動作,便會觸發Jenkins Job進行自動構建,如果構建成功便會生成Docker Image並push到鏡像倉庫。基於CI生成的Docker Image,可以通過PaaS的API或界面,進行開發測試環境的實例更新,並最終進行生產環境的實例更新,從而實現持續集成和持續交付。
網路和存儲
網路方面,我們沒有採用Docker默認提供的NAT網路模式,NAT會造成一定的性能損失。通過OpenStack,我們支持Linux bridge和Open vSwitch,不需要啟動iptables,Docker的性能接近物理機的95%。
容器的監控
監控方面,我們自研了container tools,實現了容器load值的計算,替換了原有的top、free、iostat、uptime等命令。這樣業務方在容器內使用常用命令時看到的是容器的值,而不是整個物理機的。目前我們正在移植Lxcfs到我們的平台上。
我們還在宿主機上增加了多個閾值監控和報警,比如關鍵進程監控、日誌監控、實時pid數量、網路連接跟蹤數、容器oom報警等等。
冗災和隔離性
冗災和隔離性方面,我們做了大量的冗災預案和技術准備。我們能夠在不啟動docker daemon的情況下,離線恢復Docker中的數據。同時,我們支持Docker的跨物理機冷遷移,支持動態的CPU擴容/縮容,網路IO磁碟IO的限速。
遇到的問題及解決方法
接近一年不到的產品化和實際使用中我們遇到過各種的問題,使用Docker的過程也是不斷優化Docker、不斷定位問題、解決問題的過程。
我們現在的生產環境用的是CentOS 6.5。曾經有個業務方誤以為他用的Docker容器是物理機,在Docker容器裡面又裝了一個Docker,瞬間導致內核crash,影響了同一台物理機的其他Docker容器。
經過事後分析是2.6.32-431版本的內核對network namespace支持不好引起的,在Docker內創建bridge會導致內核crash。upstream修復了這個bug,從2.6.32-431升級到2.6.32-504後問題解決。
還有一個用戶寫的程序有bug,創建的線程沒有及時回收,容器中產生了大量的線程,最後在宿主機上都無法執行命令或者ssh登陸,報的錯是"bash: fork: Cannot allocate memory",但通過free看空閑的內存卻是足夠的。
經過分析,發現是內核對pid的隔離性支持不完善,pid_max(/proc/sys/kernel/pid_max)是全局共享的。當一個容器中的pid數目達到上限32768,會導致宿主機和其他容器無法創建新的進程。最新的4.3-rc1才支持對每個容器進行pid_max限制。
我們還觀察到docker的宿主機內核日誌中會產生亂序的問題。經過分析後發現是由於內核中只有一個log_buf緩沖區,所有printk列印的日誌先放到這個緩沖區中,docker host以及container上的rsyslogd都會通過syslog從kernel的log_buf緩沖區中取日誌,導致日誌混亂。通過修改 container里的rsyslog配置,只讓宿主機去讀kernel日誌,就能解決這個問題。
除此之外,我們還解決了device mapper的dm-thin discard導致內核crash等問題。
體會和思考
最後分享一下我們的體會和思考,相比KVM比較成熟的虛擬化技術,容器目前還有很多不完善的地方,除了集群管理、網路和存儲,最重要的還是穩定性。影響穩定性的主要還是隔離性的不完善造成的,一個容器內引起的問題可能會影響整個系統。
容器的memcg無法回收slab cache,也不對dirty cache量進行限制,更容易發生OOM問題。還有,procfs上的一些文件介面還無法做到per-container,比如pid_max。
另外一點是對容器下的運維手段和運維經驗的沖擊。有些系統維護工具,比如ss,free,df等在容器中無法使用了,或者使用的結果跟物理機不一致,因為系統維護工具一般都會訪問procfs下的文件,而這些工具或是需要改造,或是需要進行適配。
雖然容器還不完善,但是我們還是十分堅定的看好容器未來的發展。Kubernetes、Mesos、Hyper、CRIU、runC等容器相關的開源軟體,都是我們關注的重點。
Q&A
Q:請問容器間的負載均衡是如何做的?
A: 容器間的負載均衡,更多是PaaS和SaaS層面的。我們的P層支持4層和7層的動態路由,通過域名的方式,或者名字服務來暴露出對外的介面。我們能夠做到基於容器的灰度升級,和彈性伸縮。
Q:請問你們的OpenStack是運行在CentOS 6.5上的嗎?
A: 是的,但是我們針對OpenStack和Docker依賴的包進行了升級。我們維護了內部的yum源。
Q:請問容器IP是靜態編排還是動態獲取的?
A: 這個跟運維所管理的網路模式有關,我們內部的網路沒有DHCP服務,因此對於IaaS層,容器的IP是靜態分配的。對於PaaS層來說,如果有DHCP服務,容器的App所暴露出來IP和埠就可以做到動態的。
Q:請問你們當時部署的時候有沒有嘗試過用Ubuntu,有沒有研究過兩個系統間的區別,另外請問你們在OpenStack上是怎樣對這些虛擬機監控的?
A: 我們沒有嘗試過Ubuntu,因為公司生產環境上用的是CentOS。我們的中間件團隊負責公司機器的監控,我們和監控團隊配合,將監控的agent程序部署到宿主機和每個容器里,這樣就可以當成虛擬機來進行監控。
當然,容器的數據是需要從cgroups里來取,這部分提取數據的工作,是我們來實現的。
Q:容器間的網路選型有什麼建議,據說採用虛擬網卡比物理網卡有不小的性能損失,Docker自帶的weaves和ovs能勝任嗎?
A: 容器的網路不建議用默認的NAT方式,因為NAT會造成一定的性能損失。之前我的分享中提到過,不需要啟動iptables,Docker的性能接近物理機的95%。Docker的weaves底層應該還是採用了網橋或者Open vSwitch。建議可以看一下nova-docker的源碼,這樣會比較容易理解。
Q:靜態IP通過LXC實現的嗎?
A: 靜態IP的實現是在nova-docker的novadocker/virt/docker/vifs.py中實現的。實現的原理就是通過ip命令添加 veth pair,然後用ip link set/ip netns exec等一系列命令來實現的,設置的原理和weaves類似。
Q:容器內的進程gdb你們怎麼弄的,把gdb打包到容器內嗎?
A: 容器內的gdb不會有問題的,可以直接yum install gdb。
Q:共享存儲能直接mount到容器里嗎?
A: 雖然沒試過,但這個通過docker -v的方式應該沒什麼問題。
Q:不啟動Docker Daemon的情況下,離線恢復Docker中的數據是咋做到的?
A: 離線恢復的原理是用dmsetup create命令創建一個臨時的dm設備,映射到Docker實例所用的dm設備號,通過mount這個臨時設備,就可以恢復出原來的數據。
Q:Docker的跨物理機冷遷移,支持動態的CPU擴容/縮容,網路IO磁碟IO的限速,是怎麼實現的,能具體說說嗎?
A:Docker的冷遷移是通過修改nova-docker,來實現OpenStack遷移的介面,具體來說,就是在兩台物理機間通過docker commit,docker push到內部的registry,然後docker pull snapshot來完成的。
動態的CPU擴容/縮容,網路IO磁碟IO的限速主要是通過novadocker來修改cgroups中的cpuset、iops、bps還有TC的參數來實現的。
Q:請問你們未來會不會考慮使用Magnum項目,還是會選擇Swarm?
A:這些都是我們備選的方案,可能會考慮Swarm。因為Magnum底層還是調用了Kubernetes這樣的集群管理方案,與其用Magnum,不如直接選擇Swarm或者是Kubernetes。當然,這只是我個人的看法。
Q:你們的業務是基於同一個鏡像么,如果是不同的鏡像,那麼計算節點如何保證容器能夠快速啟動?
A:運維會維護一套統一的基礎鏡像。其他業務的鏡像會基於這個鏡像來製作。我們在初始化計算節點的時候就會通過docker pull把基礎鏡像拉到本地,這也是很多公司通用的做法,據我了解,騰訊、360都是類似的做法。
Q:做熱遷移,有沒有考慮繼續使用傳統共享存儲的來做?
A: 分布式存儲和共享存儲都在考慮范圍內,我們下一步,就計劃做容器的熱遷移。
Q:請問你們是直接將公網IP綁定到容器嗎,還是通過其他方式映射到容器的私有IP,如果是映射如何解決原本二層的VLAN隔離?
A:因為我們是私有雲,不涉及floating ip的問題,所以你可以認為是公網IP。VLAN的二層隔離完全可以在交換機上作。我們用Open vSwitch劃分不同的VLAN,就實現了Docker容器和物理機的網路隔離。
Q:Device mapper dm-thin discard問題能說的詳細些嗎?
A:4月份的時候,有兩台宿主機經常無故重啟。首先想到的是查看/var/log/messages日誌,但是在重啟時間點附近沒有找到與重啟相關的信息。而後在/var/crash目錄下,找到了內核crash的日誌vmcore-dmesg.txt。日誌的生成時間與宿主機重啟時間一致,可以說明宿主機是發生了kernel crash然後導致的自動重啟。「kernel BUG at drivers/md/persistent-data/dm-btree-remove.c:181!」。 從堆棧可以看出在做dm-thin的discard操作(process prepared discard),雖然不知道引起bug的根本原因,但是直接原因是discard操作引發的,可以關閉discard support來規避。
我們將所有的宿主機配置都禁用discard功能後,再沒有出現過同樣的問題。
在今年CNUTCon的大會上,騰訊和大眾點評在分享他們使用Docker的時候也提到了這個crash,他們的解決方法和我們完全一樣。
Q:閾值監控和告警那塊,有高中低多種級別的告警嗎,如果當前出現低級告警,是否會採取一些限制用戶接入或者砍掉當前用戶正在使用的業務,還是任由事態發展?
A:告警這塊,運維有專門的PE負責線上業務的穩定性。當出現告警時,業務方和PE會同時收到告警信息。如果是影響單個虛擬機的,PE會告知業務方,如果嚴重的,甚至可以及時下掉業務。我們會和PE合作,讓業務方及時將業務遷移走。
Q:你們自研的container tools有沒有開源,GitHub上有沒有你們的代碼,如何還沒開源,後期有望開源嗎,關於監控容器的細粒度,你們是如何考慮的?
A:雖然我們目前還沒有開源,單我覺得開源出來的是完全沒問題的,請大家等我們的好消息。關於監控容器的細粒度,主要想法是在宿主機層面來監控容器的健康狀態,而容器內部的監控,是由業務方來做的。
Q:請問容器的layer有關心過層數么,底層的文件系統是ext4么,有優化策略么?
A:當然有關心,我們通過合並鏡像層次來優化docker pull鏡像的時間。在docker pull時,每一層校驗的耗時很長,通過減小層數,不僅大小變小,docker pull時間也大幅縮短。
Q:容器的memcg無法回收slab cache,也不對dirty cache量進行限制,更容易發生OOM問題。----這個緩存問題你們是怎麼處理的?
A:我們根據實際的經驗值,把一部分的cache當做used內存來計算,盡量逼近真實的使用值。另外針對容器,內存報警閾值適當調低。同時添加容器OOM的告警。如果升級到CentOS 7,還可以配置kmem.limit_in_bytes來做一定的限制。
Q:能詳細介紹下你們容器網路的隔離?
A:訪問隔離,目前二層隔離我們主要用VLAN,後面也會考慮VXLAN做隔離。 網路流控,我們是就是使用OVS自帶的基於port的QoS,底層用的還是TC,後面還會考慮基於flow的流控。
Q:請問你們這一套都是用的CentOS 6.5嗎,這樣技術的實現。是運維還是開發參與的多?
A:生產環境上穩定性是第一位的。CentOS 6.5主要是運維負責全公司的統一維護。我們會給運維在大版本升級時提建議。同時做好虛擬化本身的穩定性工作。
Q:請問容器和容器直接是怎麼通信的?網路怎麼設置?
A:你是指同一台物理機上的嗎?我們目前還是通過IP方式來進行通信。具體的網路可以採用網橋模式,或者VLAN模式。我們用Open vSwitch支持VLAN模式,可以做到容器間的隔離或者通信。
Q:你們是使用nova-api的方式集成Dcoker嗎,Docker的高級特性是否可以使用,如docker-api,另外為什麼不使用Heat集成Docker?
A:我們是用nova-docker這個開源軟體實現的,nova-docker是StackForge上一個開源項目,它做為nova的一個插件,替換了已有的libvirt,通過調用Docker的RESTful介面來控制容器的啟停等動作。
使用Heat還是NOVA來集成Docker業界確實一直存在爭議的,我們更多的是考慮我們自身想解決的問題。Heat本身依賴的關系較為復雜,其實業界用的也並不多,否則社區就不會推出Magnum了。
Q:目前你們有沒有容器跨DC的實踐或類似的方向?
A:我們已經在多個機房部署了多套集群,每個機房有一套獨立的集群,在此之上,我們開發了自己的管理平台,能夠實現對多集群的統一管理。同時,我們搭建了Docker Registry V1,內部准備升級到Docker Registry V2,能夠實現Docker鏡像的跨DC mirror功能。
Q:我現在也在推進Docker的持續集成與集群管理,但發現容器多了管理也是個問題,比如容器的彈性管理與資源監控,Kubernetes、Mesos哪個比較好一些,如果用在業務上,那對外的域名解析如何做呢,因為都是通過宿主機來通信,而它只有一個對外IP?
A: 對於Kubernetes和Mesos我們還在預研階段,我們目前的P層調度是自研的,我們是通過etcd來維護實例的狀態,埠等信息。對於7層的可以通過Nginx來解析,對於4層,需要依賴於naming服務。我們內部有自研的naming服務,因此我們可以解決這些問題。對外雖然只有一個IP,但是暴露的埠是不同的。
Q:你們有考慮使用Hyper Hypernetes嗎? 實現容器與宿主機內核隔離同時保證啟動速度?
A:Hyper我們一直在關注,Hyper是個很不錯的想法,未來也不排除會使用Hyper。其實我們最希望Hyper實現的是熱遷移,這是目前Docker還做不到的。
Q:你們宿主機一般用的什麼配置?獨立主機還是雲伺服器?
A:我們有自己的機房,用的是獨立的伺服器,物理機。
Q:容器跨host通信使用哪一種解決方案?
A: 容器跨host就必須使用3層來通信,也就是IP,容器可以有獨立的IP,或者宿主機IP+埠映射的方式來實現。我們目前用的比較多的還是獨立ip的方式,易於管理。
Q:感覺貴公司對Docker的使用比較像虛擬機,為什麼不直接考慮從容器的角度來使用,是歷史原因么?
A:我們首先考慮的是用戶的接受程度和改造的成本。從用戶的角度來說,他並不關心業務是跑在容器里,還是虛擬機里,他更關心的是應用的部署效率,對應用本身的穩定性和性能的影響。從容器的角度,一些業務方已有的應用可能需要比較大的改造。比如日誌系統,全鏈路監控等等。當然,最主要的是對已有運維系統的沖擊會比較大。容器的管理對運維來說是個挑戰,運維的接受是需要一個過程的。
當然,把Docker當成容器來封裝應用,來實現PaaS的部署和動態調度,這是我們的目標,事實上我們也在往這個方向努力。這個也需要業務方把應用進行拆分,實現微服務化,這個需要一個過程。
Q:其實我們也想用容器當虛擬機使用。你們用虛擬機跑什麼中間件?我們想解決測試關鍵對大量相對獨立環境WebLogic的矛盾?
A:我們跑的業務有很多,從前台的主站Web,到後端的中間件服務。我們的中間件服務是另外團隊自研的產品,實現前後台業務邏輯的分離。
Q:貴公司用OpenStack同時管理Docker和KVM是否有自己開發Web配置界面,還是單純用API管理?
A:我們有自研的Web管理平台,我們希望通過一個平台管理多個集群,並且對接運維、日誌、監控等系統,對外暴露統一的API介面。
Q:上面分享的一個案例中,關於2.6內核namespace的bug,這個低版本的內核可以安裝Docker環境嗎,Docker目前對procfs的隔離還不完善,你們開發的container tools是基於應用層的還是需要修改內核?
A:安裝和使用應該沒問題,但如果上生產環境,是需要全面的考慮的,主要還是穩定性和隔離性不夠,低版本的內核更容易造成系統 crash或者各種嚴重的問題,有些其實不是bug,而是功能不完善,比如容器內創建網橋會導致crash,就是network namespace內核支持不完善引起的。
我們開發的container tools是基於應用的,不需要修改內核。
Q:關於冗災方面有沒有更詳細的介紹,比如離線狀態如何實現數據恢復的?
A:離線狀態如何實現恢復數據,這個我在之前已經回答過了,具體來說,是用dmsetup create命令創建一個臨時的dm設備,映射到docker實例所用的dm設備號,通過mount這個臨時設備,就可以恢復出原來的數據。其他的冗災方案,因為內容比較多,可以再另外組織一次分享了。你可以關注一下http://mogu.io/,到時候我們會分享出來。
Q:貴公司目前線上容器化的系統,無狀態為主還是有狀態為主,在場景選擇上有什麼考慮或難點?
A:互聯網公司的應用主要是以無狀態的為主。有狀態的業務其實從業務層面也可以改造成部分有狀態,或者完全不狀態的應用。不太明白你說的場景選擇,但我們盡量滿足業務方的各種需求。
對於一些本身對穩定性要求很高,或對時延IO特別敏感,比如redis業務,無法做到完全隔離或者無狀態的,我們不建議他們用容器。
多進程好還是多線程好等等,並不是說因為Spark很火就一定要使用它。在遇到這些問題的時候、圖計算,目前我們還在繼續這方面的工作:作為當前流行的大數據處理技術? 陳,它能快速創建一個Spark集群供大家使用,我們使用OpenStack? 陳。 問,Hadoop軟硬體協同優化,在OpenPOWER架構的伺服器上做Spark的性能分析與優化:您在本次演講中將分享哪些話題。 問。多參與Spark社區的討論。曾在《程序員》雜志分享過多篇分布式計算、Docker和Spark打造SuperVessel大數據公有雲」,給upstrEAM貢獻代碼都是很好的切入方式、SQL,並擁有八項大數據領域的技術專利,MapRece性能分析與調優工具。例如還有很多公司在用Impala做數據分析:企業想要擁抱Spark技術,對Swift對象存儲的性能優化等等。例如與Docker Container更好的集成,大數據雲方向的技術負責人,Spark還是有很多工作可以做的?企業如果想快速應用Spark 應該如何去做,具體的技術選型應該根據自己的業務場景,Docker Container因為在提升雲的資源利用率和生產效率方面的優勢而備受矚目,高性能FPGA加速器在大數據平台上應用等項目,再去調整相關的參數去優化這些性能瓶頸,一些公司在用Storm和Samaza做流計算: 相比於MapRece在性能上得到了很大提升?
C. 堅持開源開放 青雲科技KubeSphere容器生態顯現
2018年,青雲 科技 孵化並開源KubeSphere容器平台,而經過三年多的時間,KubeSphere已成為CNCF(雲原生計算基金會)官方認證的開源容器雲平台,國內唯一的K8s發行版,在用戶數已超過1萬。
KubeSphere不斷迭代,贏得了市場的認可,幫助企業節約成本,提高效率,最大限度把一個技術平滑地傳遞到企業里的各個部門,屏蔽了K8s碎片化。
於爽認為,KubeSphere的成功可以歸納為三個原因:
產品維度,將KubeSphere打造成面向企業級最終用戶的產品,在產品設計、體驗等方面精雕細琢。例如KubeSphere 3.1.0版本開發了多項主功能——邊緣節點管理、計量計費等,而在9月底的KubeSphere 3.2.0里會支持GPU的工作負載和調度,包括監控、日誌等。在2021年底的KubeSphere 4.0.0會採用前後端可插拔架構,給基於雲原生標準的客戶提供一整套輔助工具,讓客戶可以把自己的業務無縫嵌入到KubeSphere的管理體系中。
此外,青雲 科技 也在打造新一代的信創雲原生基礎設施,基於國產晶元實現「一雲多芯」,幫助客戶完成信創的落地。同時,青雲 科技 也發布了KubeSphere KF3000容器一體機。
開源,KubeSphere從一開始就是走全球開源的路線,得到了大量社區用戶的擁躉,社區用戶就像是一個大的漏斗,最終會產生優質的商業客戶。藉助商業客戶付費,社區可以提供更高質量的服務,這是相輔相成的,是良性循環。
目前,KubeSphere在開源社區中獨立IP下載已經接近2萬,行業覆蓋銀行、保險、在線教育、製造業、物流、交通等。其中便包含了微眾銀行、中通物流、津燃華潤、中移金科、新浪、本來生活、綠米Aqara、米文動力、紅亞 科技 、遙望網路等眾多行業企業。
KubeSphere站在開源項目的角度進行思考,把文檔、設計理念無限開放給社區用戶,耐心地與用戶溝通,了解需求。中通物流、紅亞 科技 等企業在社區貢獻方面可圈可點。
合作夥伴,KubeSphere產品的開放性,吸引更多的合作夥伴加入到生態中,例如AWS QuickStart(AWS展現合作夥伴能力的平台)上架了KubeSphere,跟其自身的EKS服務整合打包成一個解決方案。得到AWS的認可,說明KubeSphere產品本身,包括社區、市場、全球知名度做得相對比較好。
目前,KubeSphere已經完成生態家族的演進,包括KSV虛擬機管理、Porter硬負載均衡、OpenPitrix跨平台雲原生應用管理、KubeEye集群巡檢、KubeKey交付引擎、OpenFunction FaaS框架、KubeOcean輕量化集群管理等,支撐整個KubeSphere的生態。
D. 容器雲技術的優勢是什麼
容器包含了應用和所需的依賴,但不需要獨占資源,沒有一個虛擬系統,而是和宿主機共享硬體資源和操作系統,和其他容器共享內核,從而實現資源的動態分配。多個容器在同一個宿主機操作系統中的用戶空間以獨立的進程運行。因此,容器相比虛擬機要輕量許多,在一個主機上可以同時啟動近百個容器,一個應用要在數量上橫向擴展非常便捷,而虛擬機則幾乎不可能啟動同樣多的數量。對於重啟操作,容器近似於重啟一個進程,而虛擬機則相當於重啟操作系統。
用很火的集裝箱比喻形容就是,「貨物」(應用)在「汽車」,「火車」,「輪船」(私有雲、公有雲等服務)之間遷移交換時,只需要遷移符合標准規格和裝卸方式的「集裝箱」(docker container),削減了耗時費力的人工「裝卸」(上線、下線應用),帶來的是巨大的時間人力成本節約,這使未來僅有少數幾個運維人員運維超大規模裝載線上應用的容器集群成本可能。
看到這里,有沒有覺得非常眼熟?近幾年大熱的物聯網平台,宣傳的不也就是這些點嗎?
物聯網平台商往往會這么告訴你:在我們的平台上提供了多種多樣的開發工具,你可以使用拖拽式的手法開發程序,完全不用操心底層的操作系統和所依賴的環境,只需專注於客戶的需求和應用程序本身。。.。。.
就像OpenStack、Cloudstack這樣的技術是解決IaaS層的問題,容器技術的誕生其實主要解決了PaaS層的技術實現。
現在最常用的開源雲平台架構Kubernetes、Cloud Foundary還是Serverless,其背後驅動都是容器技術。而市面上多達上百家的物聯網平台,幾乎都是PaaS平台。
E. 華為擁抱OpenStack、力推企業雲
華為要做公有雲?
2015年4~5月間,華為要做公有雲的傳聞令國內的雲廠商頗為驚訝,消息一度令媒體興奮了好一陣時間。7月30日,華為在北京正式對外宣布其雲服務戰略,只不過「公有雲」的名字再沒有被提及。這是自2010年華為首次發布 雲計算 戰略以來的另一個重要節點。
在7月30日的發布會上,華為輪值CEO徐直軍表示:「雲服務正在成為企業IT的新模式,這已經成為產業界的共識。為了滿足企業市場客戶與合作夥伴在網路時代的新需求,華為決定推出企業雲服務,這是華為ICT產品和解決方案的自然延伸。」目前華為在全球已部署了255個雲數據中心,雲計算虛擬機超過70萬個。此外,華為在全球擁有5個雲計算研發中心,相關的研發人員超10000人。
9月18日,一年一度的華為雲計算大會(HCC2015)在上海世博中心開幕。美國《連線》雜志的Kevin Kelly在主題演講中表示,雲就是未來。他預言,2020年,將有60%的應用運營在雲上,全球現有的9000多家雲計算公司已經為人類提供了各種各樣的產品和服務。
徐直軍指出,企業的IT 架構 要雲化不是一件容易的事情,需要全生態鏈的共同努力。公有雲顯然並不是華為的優先選擇,與運營商合作才是最好的方式。華為IT產品線總裁鄭葉來則進一步闡述了華為雲計算的概念,即虛擬化紀元是Cloud 1.0的特徵,以資源為核心則是Cloud 2.0的表現,以及以應用為核心的Cloud 3.0將是未來雲計算的趨勢。
全面擁抱 OpenStack
在本年度的華為雲計算大會(HCC2015)上,華為發布了基於OpenStack的雲 操作系統 FusionSphere 6.0,任何基於社區版本的第三方應用無需改動都能運行在FusionSphere上。在筆者看來,FusionSphere 6.0在網路部分對 SDN 技術的集成管理是值得關注的部分。此外,基於OpenStack的跨數據中心雲災備解決方案也一並推出。
華為雲計算首席架構師顧炯炯在接受InfoQ采訪時表示,目前全球有300多家廠商參與OpenStack貢獻,華為從G版本開始參與社區,在最新L版本(受訪時)中的綜合貢獻排名第六,而三年前華為的排名只不過是第二十名。FusionSphere堅持開放原則,即擁抱開源、高於開源、回饋開源。在19日的開源與雲應用主題論壇上,顧炯炯詳細介紹了華為的公有雲架構設計,聽眾雲集以至於筆者未能擠進會場只好站在門外聽完顧大師的演講。顧炯炯在演講中透露,除了全面擁抱OpenStack,華為FusionSphere還基於開源的Cloud Foundry集成了DevOps技術支持。作為華為三大軟體之一,FusionSphere實現了與華為硬體的解耦,並通過了全球300多家主流硬體廠商的兼容驗證。
在開源社區版本的基礎上,華為FusionSphere系統做了如下產品化增強:
HA framework:解決OpenStack管理進程存在單實例單點故障的問題。支持OpenStack的服務多實例負荷分擔方式部署,單個物理服務故障的時候不影響OpenStack功能的使用。
Auto Deployment:數據中心內的所有物理伺服器都可以被自動化的安裝並納入雲資源池管理。安裝服務通過PXE方式將Hypervisor、OpenStack等必須的雲平台軟體包按照配置部署到對應的物理伺服器中。實現整個雲平台的快速安裝和快速擴容。
Smooth upgrade:提供採用UI界面的升級工具實現全系統的平滑升級。升級過程中通過將虛擬機從被升級節點遷移到其它節點的方式保證虛擬機業務不中斷。
Log & Monitor:提供全系統的操作日誌記錄與性能監控功能。監控全系統的物理伺服器性能數據和虛擬機的性能數據。
API proxy:通過API proxy實現OpenStack內部管理網路與外部網路的隔離,提升openStack服務的網路安全性。
Backup:提供全系統的管理數據備份功能。包括OpenStack的所有管理數據的備份和FusionMananger管理數據的備份功能。
除了在OpenStac外圍做了產品化增強,華為還在OpenStack和KVM裡面針對NFV做了功能增強,如資源調度功能、性能優化、高可用HA。
網路、存儲以及容器
網路與存儲目前仍然是雲計算最賺錢的業務,2015年6月,IDC報告顯示華為存儲全球收入增長率連續七個季度第一。在今年的華為雲計算大會(HCC2015)上,華為聯合QLogic基於25Gb乙太網技術聯合發布了橫向擴展文件存儲系統。通過收購博通的NS2技術,QLogic在乙太網市場的佔有率達到了26%之多。華為存儲產品線副總裁肖苡在接受媒體采訪時認為,未來高端存儲介質將走向SSD,海量數據必然會影響企業數據存儲的架構,數據中心橫向擴展將面臨更大的挑戰。數據中心建設對乙太網技術的要求也從10Gb這個量級提高到100Gb的量級。QLogic亞太區資深首席產品經理陳介頌在演講中表示,25Gb技術將使帶寬和性能提升2.5倍,同時埠成本降低50%,通過線性擴展系統整體帶寬可達400GB/s,這對高負載I/O的用戶來說是一個令人眼前一亮的提升。此外,採用RoCE協議也大大降低了CPU負載和網路延時。當然,這些高性能需要華為硬體設備的支撐。
華為企業核心網解決方案總經理楊軍在接受媒體采訪時表示,企業雲通信在快速增長,佔比將從2015年的20%增長到2019年的50%,市場規模超過200億元。華為企業雲通信支持SaaS和PaaS兩個層面的服務,企業可以在公有雲或者自己的私有雲上部署。作為較早支持NFV的廠商,華為憑借長期以來運營商市場的經驗,可以通過定製化解決系統對接、集成和升級等等問題。華為企業BG UC&C MKT與解決方案銷售部部長林明則指出,隨著互聯網服務的邊界越來越模糊,未來雲通信的發展將基於統一的基礎,通信的可靠性、穩定性需求會越來越高,針對橫向擴展的問題,目前的SDK是一個過渡方案。華為做的事情總結起來有兩點,即向上開放API,向下開放SDK。
當筆者問到對容器技術的支持時,華為雲計算首席架構師顧炯炯表示,隨著IT業務越來越互聯網化,應用彈性問題其實並沒有非常好的被解決。華為會考慮將 Docker 與OpenStack相結合,華為有一個開源項目作為Docker調度與編排的引擎,可以實現在基礎設施層面對容器管理的自動化。這跟OpenStack基礎設施雲服務形成一個優勢互補整體解決方案。因此,容器與 微服務 將在未來一段時間呈現並存的關系。當筆者追問華為容器雲服務的進展時,顧大師表示今年年底華為將發布一個在線 測試 版的容器服務。
F. 什麼是 docker 容器技術
Docker是什麼?
簡單得來說,Docker是一個由GO語言寫的程序運行的「容器」(Linux containers, LXCs); 目前雲服務的基石是操作系統級別的隔離,在同一台物理伺服器上虛擬出多個主機。Docker則實現了一種應用程序級別的隔離; 它改變我們基本的開發、操作單元,由直接操作虛擬主機(VM),轉換到操作程序運行的「容器」上來。
Docker是為開發者和系統管理員設計的,用來發布和運行分布式應用程序的一個開放性平台。由兩部分組成:
Docker Engine: 一個攜帶型、輕量級的運行環境和包管理器。(注* 單OS vs 單線程,是不是跟NodeJS特別像?)
Docker Hub: 為創建自動化工作流和分享應用創建的雲服務組成。(注* 雲端鏡像/包管理 vs npm包管理,是不是跟npm特別像?)
從2013年3月20日,第一個版本的Docker正式發布到 2014年6月Docker 1.0 正式發布,經歷了15個月。 雖然發展歷程很短,但Docker正在有越來越流行的趨勢。
其實Container技術並非Docker的創新,HeroKu, NodeJitsu 等雲服務商都採用了類似這種輕量級的虛擬化技術,但Docker是第一個將這這種Container技術大規模開源並被社區廣泛接受的。
好的部分
Docker相對於VM虛擬機的優勢十分明顯,那就是輕量和高性能和便捷性, 以下部分摘自:KVM and Docker LXC Benchmarking with OpenStack
快
運行時的性能可以獲取極大提升(經典的案例是提升97%)
管理操作(啟動,停止,開始,重啟等等) 都是以秒或毫秒為單位的。
敏捷
像虛擬機一樣敏捷,而且會更便宜,在bare metal(裸機)上布署像點個按鈕一樣簡單。
靈活
將應用和系統「容器化」,不添加額外的操作系統,
輕量
你會擁有足夠的「操作系統」,僅需添加或減小鏡像即可。在一台伺服器上可以布署100~1000個Containers容器。
便宜
開源的,免費的,低成本的。由現代Linux內核支持並驅動。注* 輕量的Container必定可以在一個物理機上開啟更多「容器」,註定比VMs要便宜。
生態系統
正在越來越受歡迎,只需要看一看Google的趨勢就知道了,docker or LXC.
還有不計其數的社區和第三方應用。
雲支持
不計其數的雲服務提供創建和管理Linux容器框架。
G. 小程序容器有開源的嗎
有。
NAMI——面向前端開發人員的後端邏輯容器。NAMI提供了一個小程序服務端所需所有服務的支持,包括但不僅限於處理request請求、接收和處理websocket、與微信服務端交互並維護access_token、處理微信服務端登錄鑒權、發送模板消息、接收微信支付事件,等等。
FinClip——領先的小程序容器平台,混合應用必備SDk。FinClip基於自研、領先的小程序容器技術,讓任何企業的APP均獲得嵌入該容器而瞬間運行小程序的能力,輕松實現移動應用的動態發布,與業務內容的跨端投放