Kubernetes讓Docker容器如虎添翼
一年前,我開始學習Docker容器。幾個月下來,我意識到我正在學習的是一項革命性技術,原因如下:
-
快速學習:對于任何我想學習的工具、框架或者編程語言,按需使用Docker容器可以加快我探索性學習環境的搭建。
-
按需自助服務環境:Docker容器可以用來搭建按需自助服務的開發和測試環境。對于開發和測試人員來說,這是巨大生產力的助推器。
-
自動部署:使用Docker容器可以搭建Jenkins、代碼倉庫等工具,在開發、測試以及UAT(User Acceptance Test,用戶驗收測試)服務環境中進行自動部署。
對于Docker容器而言,我覺得以下功能是需要的:
-
管理app集群:規模化多個Docker容器來滿足應用程序的需求。例如,一個由Flume、Kafka以及Spark容器組成的數據管道。現在的需求是,通過擴大管道增加更多的Flume、Kafka以及Spark容器來處理更大的數據集。或者說通過集群配置啟動更多的應用程序來處理更大的數據集。例如,Flume集群傳輸數據到Kafka集群。
-
容器編排:根據按需服務需求管理容器,啟動或者停止運行著應用程序的容器。例如,啟動或停止Jenkins集群按需進行CI工作。
-
組件重新打包:有時候想重新打包已有應用程序,然后將他們一起啟動來測試不同應用程序的配置。
對于這些需求,使用Kubernetes能夠很容易滿足。
當我潛心深入Kubernetes的世界時,我發現這是最近一段時間我使用過的最棒的工具之一。毫無疑問它對于使用Docker容器的DevOps專業人員來說是如虎添翼。
以下是Kubernetes的幾個關鍵模塊,通過這些模塊能夠簡化我將多個容器配置在一起的過程,并且不論何時當我想將這些容器作為一個統一服務時,都能保持特定數量的副本。
-
Pods:Pod可以被看作是一組由一個或者多個同地協作且共同管理的容器,這些容器共享相同的命名空間以及volume。每一個pod都關聯了一個IP地址,從而能夠讓外界訪問運行在pod中的應用程序。Pod能夠用于同地協作且共同管理多個共享volume的Docker容器。
-
Services:Services給pod提供了更高層次的抽象。如果一個或者多個pod需要依賴其他pod,這就需要通過service來完成。設想通過Kubernetes的service來暴露一個Kafka集群。
-
Replication controllers: Replication controllers在任何時候都保持著一定數量的pod副本。這意味著如果有一個或者多個pod停止服務,控制器能夠合適地啟動相同數量的pod。
在原生云應用程序的發展趨勢下容器和微服務成為了關鍵組件,而Kubernetes被認為是在不同層次共同管理原生云應用程序的最關鍵組件。事實上,CNCF.io也已經意識到Kubernetes是滿足原生云應用程序的首選工具。并且,隨著目前Docker容器逐步成為最流行的容器化技術,它們的結合只會讓彼此變得更加強大,超越其他任何需要容器間協同工作的原生云結構編排工具。
本文為翻譯文章,點擊閱讀原文鏈接可查看原文。
來自:https://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=2649692147&idx=1&sn=2c49178a568df182d1861a32b55fdac5&chksm=88932890bfe4a186ff72b271784f28f7e92555f2a30c0868c1a34b2eec8093c2e0ddd19c0f3b&mpshare=1&scene=1&srcid=1013d2wcqEdOx6tSXXRp5icy&pass_ticket=Yg2Bh0xbQ3COj1brhBZiOTd3fJBJRdCMv0elXXVwEDs%3D#rd