天天看點

短生命周期容器在生産環境中的應用實踐

本文是東京openstack summit大會系列采訪的一部分,被采訪者是ian lewis,谷歌雲平台工程師,主要闡述了短生命周期容器的概念,作用和如何将它應用到生産環境當中。

原生雲計算(cloud-native computing)依賴于短生命周期的容器而不是固定的伺服器。在短生命周期的容器中運作應用,解決了資源困乏的挑戰,但同時也引入了需要新的實踐和工具去比對這個動态環境的問題。谷歌的ian lewis将在這個月東京舉辦的openstack summit上分享如何在短生命周期的容器中記錄并追蹤它們。

我們聯系了ian,學習了devop團隊是如何将短生命周期容器應用到實踐中,如何采用新的架構模型并且将應用遷移到容器中,ian提供了一些很好的點子,包括如何存儲資料、為什麼服務發現是必要的、openstack開發了什麼新的開源項目和如何幫助團隊實作将應用轉移到短生命周期的容器中。

q: 為什麼容器應該是短生命周期的,短生命周期的容器可以解決什麼問題?

使用容器一個最主要的好處是在叢集中它們可以很容易的運作和管理,而不用考慮它們在什麼樣的實體機上運作。這就允許你在運維需要時,透明的将一個正在運作的應用遷移到不同的硬體上。這種遷移容器的靈活性意味着你不能在本地一台特定的機器上存儲狀态,因為移動的過程可能會在任何時候發生。你需要做到無論應用在什麼地方運作都可以通路到存儲狀态資訊。

q: 實踐中什麼是短生命周期?

通常來說,短生命周期的意思是你的應用不能在本地存儲資料,資料包括從應用資料到日志資料。你的應用應該可以重新開機并工作在一個新的容器鏡像中。資料需要被存儲在容器外部,意味着存儲需要使用專門的服務。

q: 可任意支配和短生命周期的容器聽起來很酷,隻需要運作、遷移和撤銷操作,但如果内容已經存儲在容器中并且一些端點(endpoint)已經被容器暴露,怎麼辦呢,例如:會話狀态、api路徑和資料庫連接配接端點。那會話狀态和資料庫連接配接也消失了?

容器本身并不是管理狀态、api路徑和連接配接的銀彈。你仍然需要容器的編排管理系統和網絡來使它滿足高可用性。這也是為什麼谷歌發明kubernetes來解決這些問題的原因。

q: 傳統的部署方式依賴于持久化伺服器,那應該如何重構伺服器和應用來實作遷移型的容器呢?

我認為有兩個比較大的變化。第一是在主機外和容器外存儲狀态。第二是應用應該有方法完成服務發現。容器遷移意味着需要一種方式,實作無論服務端實際在哪裡運作,用戶端都能連接配接到它。

q: 你有什麼好的架構模型推薦嗎?

使用容器時,我會推薦面向服務的架構。好處在于當這個服務運作得足夠小,并且能夠互相獨立地擴充或收縮時,容器會非常容易被感覺到。

q: 我該如何建立一個短生命周期的容器環境而不是持久化的容器環境呢,什麼基礎設施和開發架構可以使用來安全的部署、遷移和處理容器?

可以嘗試使用叢集管理工具如kubernetes(或者container engine)。kubernetes是一個容器編排管理工具,它在叢集的服務端排程容器,讓容器知道它們适合的運作時間,這些時間可能不會和服務端在同一個時間點。使用kubernetes也許是不錯的選擇。

q: 容器如何在openstack中執行?

容器編排管理引擎如docker swarm和kubernetes将會在openstack中成為一等重要的資源,通過一個叫magnum的api服務來實作。magnum會建立服務端叢集如同虛拟機安裝了一個叢集管理工具,使用magnum來操控容器就容易很多。

q: 在openstack最新的釋出版本和路徑中,有沒有關于容器管理編排和排程的?

關于這塊還有很多開發仍在進行中,還有很多新的特性。magnum會被包括在openstack liberty中,在這個月釋出。其他工具如kolla,它用于在容器中部署openstack,還有通過application catalog服務使應用開發更容易的murano,同樣值得期待。

本文作者:何炜

來源:51cto

繼續閱讀