隨着微軟和亞馬遜高BIG加入雲原生計算基金會(簡稱「CNCF」),Kubernetes做爲開源的容器編排產品正在成爲業內管理容器環境的實實在在的標準。編程
Kubernetes是一個開源容器編排框架。它的功能很強大,不只能夠在運行Docker容器的同時確保它們不間斷運行,還能夠作到在容器崩潰或主機崩潰時,從新啓動容器,就像VMware HA同樣,但以一種不一樣的方式來處理。Kubernetes支持許多不一樣的雲提供商和裸機部署,您能夠在Linux操做系統內核進行部署,並在用戶層運行容器。後端
大規模管理容器或容器管理。Kubernetes在希臘語中有領航員或舵手之意。Kubernetes的基本目的是確保您能夠規模化管理全部容器。雖然容器自己使應用程序打包和部署過程更容易了,可是如此大規模地管理這些容器仍須要作不少的工做。Kubernetes的基本功能是讓咱們能夠將一個容器集羣做爲一個單一系統進行管理,這樣可讓咱們可以正確輕鬆地開發同時簡化管理全部這些容器的操做。這種方法有助於開發團隊將應用程序編碼到容器中,並將其移交給Ops,而且Ops能夠直接運行這些容器(而無需關心其餘)。設計模式
讓咱們回過頭來看容器自己,其實它本質上是一種封裝應用程序的方法,使應用程序易於在任何地方運行。然而,運營團隊須要管理系統來管理這些容器。而Kubernetes框架就能夠管理大量的容器環境。服務器
一個容器是一個密封的應用,封裝成開發,運輸和部署的標準單元。一個容器鏡像包含代碼,運行時庫,依賴關係,配置——即將其做爲輕量級包運行所需的全部內容。開發人員能夠將其代碼及其依賴項打包到容器對象中,而後能夠在任何環境中運行它,並且因爲它們一般是小對象,因此能夠將大量容器推送到單個機器上。Docker是當今世界最受歡迎的容器之一,而且它還很年輕截止目前才4+歲,可是最原始的容器技術卻能夠追溯到古老的Unix時代。網絡
Pods是多個協同工做容器單元的組合。一個節點(Pod)是可使用Kubernetes建立,且易於發現和管理的最小的可部署運行的單元。架構
若是您想要運行多個容器——咱們假設一個特定的Web服務器的四個副本和一個數據庫——例如Kubernetes有一個技術來支持。這個技術被稱爲副本(replication)控制器,它能夠確保指定數量的pods副本正在您須要的特定服務上運行。框架
Kubernetes的一個基本前提是,咱們能夠執行一些名爲「所需狀態管理」的內容,這意味着咱們能夠爲集羣服務提供一個特定的配置,而且能夠由集羣服務在基礎設施中執行這種配置。編程語言
若是您配置k8s(Kubernetes的簡稱),能夠在物理主機中運行四個pod,而且因爲某些緣由,若是某些pod崩潰,那麼k8s將自動在任何可用的集羣節點上啓動一個新的pod,以確保您具備所需的四個狀態副本可用。大數據
API是在集羣服務以前執行所需狀態管理的主要組件之一。這是系統的一個關鍵構件。系統的第二個關鍵構件是worker。一個worker真的只是一個容器主機。workers也做爲與k8s集羣服務進行通訊的Kubelets(補充:Kubelets主要工做是管理Pod和容器的生命週期)。
Services 是一組協同工做的pods。它是一個包含容器的pod的邏輯結構。Services 將pods聚合在一塊兒就像一個Web服務器場所,例如,幾個pods(Web服務器/內容倉庫)一塊兒提供一個服務。您還能夠考慮負載平衡器做爲後端服務的示例。一般您會注意到,單獨的獨立服務須要多個單一的容器 - 他們一般須要一組共存容器,一個用於核心功能,其餘更多用於支持分析,實時監控,數據庫服務,日誌記錄等活動。
標籤(Labels)經常使用於邏輯構造和組織一組對象。標籤也能夠用於搜索不一樣邏輯或物理對象。
容器化環境中的基本構造:
Kubernetes承諾將雲原生基礎組件集中在一塊兒,並提供將應用程序擴展到企業級的能力。基於對容器的普遍支持,Kubernetes可根據您的應用需求提供更多的靈活性來選擇容器。
隨着Java,Go,.Net等普遍的編程語言和框架支持,Kubernetes已經獲得了開發社區的大力支持。Kubernetes內置支持各類數據庫,ETL系統和大數據分析。
集羣能夠在任何地方安裝和運行。Kubernetes徹底與供應商無關,並獲得Google Compute Engine,Vagrant,RackSpace,CoreOS,Fedore,Azure,AWS和vSphere等多個雲提供商的支持。它是GitHub最活躍的項目之一。
Kubernetes能夠跨不一樣的雲平臺,並提供快速有效地響應增加客戶需求的能力。應用程序能夠按需擴展,應用程序的部署能夠更快,更具預測性。在無需在公共或私有云環境中使用大量資源的前提下,爲開發人員提供了擴展更多加強功能和新功能的靈活性。
原文連接:What Kubernetes can do for container orchestration(譯者:ds_sky2008)