本文作者為陳煒勝,原始連結:http://smalltowntechblog.com/2015/12/11/ithome-container-summit-day-2/
由iThome舉辦的臺灣第二屆Container Summit大會,第二天精彩內容包括了Kubernetes、Rancher、Docker深入剖析,Docker最新網路功能和多主機叢集建置等。
Smalltown Tech Blog接連兩天整理了這次大會的參加心得。第一天重點整理請見:第一天重點回顧!iThome Container Summit Day1筆記大整理
進入到第二天的 Container Summit,今天持續將現場的第一手訊息告訴大家。
- 如何在 Kubernetes 上持續部署微服務型應用 ( Evan Brown / Google 雲端解決方案架構師 )
今天 Evan 以現場實際展示的方式,詳細的解說怎麼利用 Kubernetes 在自己的本地端以及 GCE 上面部署 Kubernetes,運用的範例是 Evan 自己寫的一個小程式,輸入一個 JSON 檔案,前端會輸出成一個簡單的網頁。
Evan 在今天的演講詳細的講解了 Kubernetes 的基本概念以及組成 Kubernetes Cluster 的各部分組件,包含 Pods, Replication Controller, Service 以及搭配 Jenkins 跟 Kubernetes 來做 Continuous Delivery,詳細的解說也在會後吸引了許多人對 Kubernetes 感到有興趣,許多聽眾在外面的講師詢問處都待了 30 分鐘來問 Evan 問題,反應相當熱烈。
- 如何搭建企業級容器服務(梁勝 / Rancher Labs 共同創辦人暨執行長)
這場由於前一場在外面問問題花了比較多時間,大概在中場的時候才進來聽,不過從中間聽起來也算還可以,主要就是在講介他們自己做了一個平台叫做 Rancher,可以在他們的平台上面跑 docker,比較特別的是它可以幫你連接各個廠商的雲端平台,在上面架好 docker 平台後,用 docker machine 去連接各平台,比較有中央控管的感覺。
另外它也支援 Kubernetes 以及 docker swarm,各平台的整合性算是滿不錯的。連接完平台之後,它有提供像是 app store 的東西,內建了像是 elasticsearch, nginx 等普遍的應用程式,讓你可以直接點完就開好服務,算是滿方便的,不過他中間顯示出來的設定黨實在是長的有點恐怖,要我自己寫感覺會很累。
- 深入理解Dockerfile、Docker映像檔以及Docker容器(孫宏亮 / DaoCloud 軟件工程師 )
這場演講感覺是今天最硬的一個場次,深入的探討了 Dockerfile, Docker Image, Docker Container 之間的關係,一開始還是免不了有一點工商時間,簡單地介紹了 DaoCloud 在中國的發展,也由於一些沒辦法言明的原因(講師自己說的XD)沒辦法連接到 DockerHub,也造就了 DaoHub 在中國的發展,他就是將一些在 DockerHub 比較熱門的專案鏡像複製一份到 DaoHub 以方便中國的用戶來開發 Docker。
講師提到為什麼他會開始研究 Docker 原始碼的原因,是因為大家每個人都著重在開發上層應用,可是他對於架構比較有興趣,所以就一頭栽進了 Docker 原始碼的世界。詳細內容太多了,在這邊就不仔細寫出來,大致上就是講解 Docker 從 Dockerfile 怎麼理解,怎麼產生 Docker Image 的各個層級,之後各層級在執行起來變成 Container 之後,真實作業系統又是怎麼應對 Container 裡面的各個行程。
- 和信雲端Container實戰經驗(孔祥嵐 / 和信雲端 首席技術顧問)
基本上就是工商時間,由於之前有聽過他們的產品發表會,這次聽起來跟產品發表會的時候內容差異不大,簡報檔也有 80% 是一樣的,跟上面的 Rancher 比較不一樣的地方是,客戶群是指向公司內部使用,對於 multi-tenant 的部分比較重視,以及各單位或用戶之間的資源限制,使用記錄,權限設定方面似乎有比較多的著墨,不過在展示的時候沒有展示到相關的設定,是比較可惜的部分。
- 深入瞭解Docker Container Networks(郭韋廷 / Docker全球開發競賽冠軍/Docker Taipei Meetup共同創辦人)
講解 Docker Network 各種模式以及怎麼設定,還有新的 Network Command 跟 Overlay network,簡單總結,Docker Network 分為五種,分別是 bridge, host, none, container, SDN,Docker預設是使用 bridge,Docker Network 的部分可以看作可以幫 Container 加入網路卡,可以自由指定 Container 要使用哪一些網路設定或是藉由 Network command 來增刪或是列出詳細的設定。
另外一個 Overlay Network 的部分看來是開始要取代之前使用的 Link,也可以把Docker 分佈在不同的雲端服務業者之後,利用 Overlay Network 做通訊,讓使用者可以真正的不受限制於單一業者。最後一個 Docket Network Plugin 的部分,是因為先前還沒有像 Docker Network 這種東西的出現,各廠商或是團體就先開發了網路工具,像是 weave。
- 用Docker Swarm打造多主機叢集環境(謝宗穎 / 創科資訊 共同創辦人兼研發經理)
這場接在這邊實在是很好的安排,剛好上一場講解了各種網路模式以及 overlay network,這邊直接開始講實際怎樣使用。
濃縮一下重點,步驟大概是先建立一個 key-value store,可以選用很多像是 consul, etcd, zookeeper 等等,接下來先開swarm master, swarm node,設定好overlay network,之後就可以建立一個跨越不同雲端服務業者的服務了。
這樣打起來很簡單,不過講師也是解釋了好一段時間,講師之後應該會把演講稿放出來,大家可以直接看文件嘗試建立一個跨雲端服務業者的服務。
- 最近研究 Kubernetes 比較多,就在外面跟大家一起跟 Evan 聊了好一陣子,我自己問了 Evan 幾個我遇到的問題:
Q1: 有沒有辦法自己客制化 Kubernetes 裡面的 LoadBalance 模組,因為 Kubernetes 分別支援了 AWS, GCP 等等雲端業者,可以在設定好 LoadBalance 屬性之後直接幫你設定好業者所屬的 LoadBalance,並且把它指定好的外部 ip 或是 DNS name 傳回 Kubernetes,可是公司內部是使用 Citrix NetScaler ,如果要跟 Kubernetes 整合的話勢必會需要這塊。
Evan: 目前為止我知道有一些人有做過類似的事情,有聽過F5, Juniper, NetScaler 還有一些其他的,可是我不知道到底要怎麼做,可能要看那部分的模組模組化的程度多深,才有辦法看有沒有辦法做出這個功能。可以敲留言給我的 Twitter 我會幫你再問問看。
Q2: 最近在研究 kafka,可是我們資料中心的架構只能掛磁碟到部分機器,並沒有辦法所有的節點都是同樣的容量的話,Kubernetes 有沒有辦法指定我要把某個 Pod 或是 Replication Controller 指定掛到某一種節點,像是利用 selector 來做?
Evan: 沒辦法,目前 Kubernetes scheduler 是看目前節點還有沒有資源,像是 CPU 或是記憶體來選擇的,並沒有辦法選擇可以把 Pod 放到特定的節點上面跑。
補充:文章轉載到 Docker Taipei 後,有熱心的網友提供意見,其實是可以做到的,詳細的官方文件在這邊
另外在別人問的問題裡面 Evan 也說到有一個新功能是Kubernetes API Server federation,目前已經在 Pre-Alpha 的階段,大家可以期待一下,也就是這個功能出來之後,就可以在各個雲端業者都建立好 Kubernetes 之後,建立的時候指定 Container 要擺放的國家或是業者,以達到就近服務或是降低成本的功效。