Kubernetes在夯什麼?—容器服務的世代

Kubernetes在夯什麼?—容器服務的世代

如今地球上幾乎所有產業都想在資訊相關部門整合Kubernetes系統,但事實上仍有許多人不完全理解一個問題:這股潮流背後真正的原因到底是什麼?在這篇文章中,我將試著說明Kubernetes的基礎背景,以及它對各種產業可能帶來什麼好處。另外,也稍微分享一些建置經驗,讓不熟悉這套系統的朋友可以有個概念,以利為自己的企業規劃一座Kubernetes平台。

Part 1 – 容器服務的世代

當人們提到「應用現代化」,這到底代表著什麼?

傳統應用程式開發(大約在史前時代)以「單體應用」作為軟體架構,而後來某位天才提出將軟體功能做區隔,並開發各別的「微型應用」,將這些「微型應用」的功能進行整合,以提供整套軟體該有的功能。這讓開發建置變得快速、獨立,大大地提升了軟體的交付效率,因此大眾皆開始歌頌「微服務架構」的美好。這邊不多詳談「微服務」是如何運作,想初步了解的話可以參考我之前寫的簡單認識「微服務」概念這篇文章。雖然現今仍有一些“史(ㄉㄢ)前(ㄊㄧˇ)巨(ㄧㄥˋ)獸(ㄩㄥˋ)”存在於少數企業的資訊部門,不過多數年輕開發者應該都偏好微服務的哲學。而我們也進一步觀察到,眼下微服務的最佳載體,便是「容器」了。

【圖例1】單體應用 / 虛擬機架構 / 容器架構

關於「容器」,其最“大”的特點就是它“非常小”,在字面意義上進一步地實現「微服務架構」,並藉此帶來許多應用上的可能性。以下簡單列出幾個應用情境,而若沒有容器,這些應用情境幾乎不可能達到現今的技術層級:

  • 「開發維運整合」General DevOps (https://goo.gl/WFGFRd)
  • 「大規模高可用服務部署」Large Scale HA Service Deployments
  • 「持續整合/持續交付」Continuous Integration/Continuous Delivery[*] (CI/CD)
  • 「極限開發」Extreme Programming (XP)

[*] 有些人可能主張CD代表Continuous Deployment(持續部署),但我認為「持續部署」並不一定是現代開發流程的必要條件。除非企業的軟體開發流程已經非常成熟完善,不然我認為甚至不該急著導入持續部署系統。

Docker – 世界首屈一指的「容器引擎」用「現代化」一詞來敘述「應用容器化」的過程,我非常贊同這樣的比喻。但在將應用容器化後,我們又該繼續哪些任務呢?與傳統架構相比,同樣的硬體環境中,利用容器架構可以運行更多應用實例(instance),而這些實例的壽命又相對較短,經常在被更新、重啟。如此部署大量的應用雖然聽起來很厲害,但足以讓維運人員頭痛不已:光是數量龐大就很麻煩了,容器程序崩壞還特別難偵錯!然而,這就是Kubernetes表現優異的地方囉!

【圖例2】Docker

Kubernetes 是一專門用來自動化部署、管理、負載平衡容器應用的開源軟體。因為它擁有許多強大的管理功能及部署工具,Kubernetes在2017迅速成為全球最夯的「容器管理平台」。關於它的詳細功能及架構,我們將在下一章(Part 2 – K8s基礎介紹)繼續討論。

閱讀更多:

Part2-Kubernetes在夯什麼—K8S基礎介紹
Part3-Kubernetes在夯什麼—K8s與DevOps
Part4-Kubernetes在夯什麼—建置一座K8s

撰文: 陳逸凡 迎棧科技解決方案架構師

訂閱電子報

Select list(s)*

 

Loading