2015年12月22日 星期二

Kubernetes 介紹與相關資料


Kubernetes is an open source orchestration system for Docker containers。
是Google開源的容器集群管理系統,提供容器應用部署、調度、擴展機制等功能。
目前K8S (kubernetes) 也能在GCE、vSphere、CoreOS、OpenShit、Azure等平台上運作

slideshare 介紹

Pod是K8S中最小的部署單位,可以將一個或多個容器組成一個Pod,Pod所包含的容器只會運行在同一個Host上,並共享network namespaces、IP port,每個Pod的network mapping都是由 container pause所封裝處理的。

RC (Replication Controllers) 是部署群組 Pods,RC會確保K8S系統中指定數量的Pod存活, 也可以利用 labelRolling update 來進行RC的擴展或更新。
Service是pod服務的抽象層,俱有負載平衡的功能,由於pod的數量與IP 不會固定,可將一群pod指派成service並給予一個固定IP (cluster IP),service 會將請求至cluster IP的流量導入其對應pod。


我的測試部署架構如下圖,底層是使用CoreOS 來建制,網路使用 Flannel vxlan,之前測過 calico 也可以使用,安裝完K8S之後還需安裝DNS,才能使K8S service運作正常。

相關設定

K8S如果能部署 guestbook 且功能正常運作時,基本上K8S已完成部署,mysql-wordpress 的部分只要不用gce volumes 也是可以部署,我為了要讓pod的應用能自動發佈提供服務,參考External access into the cluster 建了HAproxy的pod來當K8S對外服務窗口,同時也實作 service discovery 的功能。

未來要將K8S 具備High Availability 的 cloud platform,更方便的使用 volumes,各服務的權限、監控、容錯等問題要解決,甚至客制pod部署調度的演算法,也可以結合CI/CD 工具 & Docker private Registry來進行DevOps 。

推薦好站