使用Kubernetes 構建自動化平臺

編者按:本文由Wercker CTO Andy Smith 分享,他分享了Kubernetes如何幫助他們節省時間並加速開發。本文是關於Kubernetes 1.3新功能一系列深刻文章的第九篇。html

咱們在Wercker運行數百萬容器執行用戶的CI/ CD工做。這些容器的生命週期大可能是短暫的,構建、測試和部署完成後,這些容器的生命週期隨之結束。前端

雖然多數容器的生命是短暫的,但咱們傾向於持續運行咱們的基礎設施。一般狀況下咱們須要跨多節點運行多個容器,因此一個高度可擴展的調度程序就顯得很是有必要。咱們決定使用Kubernetes。nginx

Wercker 是容器中心自動化平臺,它幫助開發人員構建、測試並部署應用程序。後端

咱們支持任何數量的pipelines,從代碼構建、測試微服務間的API協議、上傳鏡像和部署到調度器。緩存

全部這些pipeline都運行在Docker容器中,並且每一個環節都是一個Docker容器。網絡

固然,咱們使用Wercker自身來構建Wercker並部署到Kubernetes中!併發

概述

咱們是一個運行雲原生應用的平臺,在隔離上作了不少設計決策。在底層,咱們使用CoreOS和cloud-init 啓動一個異構節點的集羣,我把這些節點命名爲Patricians(貴族)、Peasants(農民)、 Controller(控制器)。負載均衡

對於Controller 節點,也許咱們應該使用Constables(警察)這個叫法。微服務

貴族節點佔據咱們基礎設施的一大部分,這些節點有適當的網絡接口與後端服務通訊,同時還做爲各類負載均衡器的 endpoints。工具

這些節點上還運行着下面三類服務:

1.日誌蒐集服務,併發送到日誌服務

2.不少用於報告和處理job運行結果的服務

3.處理API 調用的微服務

農民節點用於運行公共服務,包括處理job的Pod,它用於從job 隊列讀取job,並聲稱新的pod以處理job的執行。

job 自己是開源CLI工具的化身,你能夠用Docker安裝並運行在你的筆記本上。

農民節點對基礎設施的訪問權限十分有限,運行job的容器也是高度隔離的。

Controllers是控制器,對於這類節點的功能,你儘管望文生義就對了。

動態Pods

咱們的服務對Kubernetes API 有重度依賴,每個job啓動時,系統都會動態建立Pod,這個Pod爲job提供了運行環境。

從隊列中獲取 job 描述後,咱們定義了一個新的 pod,新的Pod 包含執行檢查代碼、緩存管理、執行job並上傳結果的相關環境。

咱們啓動pod,監控它的進程,並在 job 結束後銷燬它。

Ingresses

爲了給 HTTP API 提供後端服務,並提供自注冊功能,咱們使用了Kubernetes 的 Ingress 功能。

設置 Ingress 並非很簡單,可是經過閱讀nginx 例子,咱們最終發現了一個將後端服務鏈接到前端的好方法。

1.3 即將發佈的功能

儘管咱們把pods和容器當成是短暫的,並指望它可以在故障時快速重啓,同時咱們也期待使用Pet Sets 和Init Containers 優化咱們的工做流。

對於Minikube獲得官方支持,咱們也很欣慰,由於它提升了咱們的本地測試和開發的效率。

結論

Kubernetes在管理跨節點的多個容器時,爲咱們省掉了大量的關鍵工做。

它提供了一個強大的API和工具來查看,包含多內置日誌支持、度量、監控和調試。

僅服務發現和網絡這兩項就爲咱們節省了不少時間,大大加速了開發進度。

祝 Kubernetes 正式版一週年快樂,也祝願它愈來愈好:)。

本文由時速雲翻譯,如若轉載,需註明轉載自「時速雲

原文連接:http://blog.kubernetes.io/201...

相關文章
相關標籤/搜索