只花10分鐘就能瞭解Kubernetes!

Docker 軟件 Google CoreOS 紅帽公司 IT168企業級 2018-12-04

當Docker 成為流行趨勢之後,Kubernetes獲得快速發展,成為最常用的容器編排工具。那麼問題來了,Kubernetes為什麼重要?什麼是Kubernetes?什麼時候使用?如何使用?本文將按照各個要點,逐一總結!

1、Kubernetes為什麼重要?

在Kubernetes沒出現以前,我們都認為容器是雲管理平臺應用部署的最佳工具。容器為軟件開發和運維提供了新視角,通過使用容器,軟件開發人員可以很容易地將應用打包,它既可以把應用程序拆分為分佈式組件,也可以整體移植一個應用,而不像傳統的虛擬機那樣需要安裝複雜的插件。

當整個世界開始走向分佈式架構,當企業變得更加依賴網絡、依賴計算,當單塊應用開始遷移到微服務,我們的用戶更希望通過微服務單獨擴展關鍵功能,並能夠處理數百萬客戶業務。因此,Docker容器、Mesos和AWS ECS等工具出現在企業應用名錄中,這些工具為用戶創建和部署微服務提供了更好的一致性、可移植性和更簡單的操作方式。

但是,一旦企業應用變得更成熟和複雜,就需要在多臺機器上運行多個容器。用戶需要確定匹配多少個容器,容器的存儲方式、存儲數據量、性能需求等,如果這些工作全部用人工來統計,那簡直是噩夢。

為解決容器的編排需求,Kubernetes應運而生!

2、什麼是Kubernetes?

當容器管理成為Docker時代最重要的需求,谷歌做出了大膽決定,開放內部項目Borg。為了進一步增強容器管理功能,谷歌又開發了Kubernetes。這是一個開源項目,可自動化、大規模部署和管理容器應用過程。

於是,2014年年中,Kubernetes正式誕生,並在很短的時間內成長為開源社區,受到來自谷歌、Red Hat和許多其他公司工程師的熱捧。

kubernetes,簡稱K8s,是用8代替8個字符“ubernete”而成的縮寫。簡單理解,kubernetes是一個開源的容器管理系統,用於管理雲平臺中多個主機上的容器化的應用。Kubernetes的目標是,讓部署容器化的應用變得簡單和高效,Kubernetes提供了應用部署,規劃,更新和維護的一種新機制。

kubernetes的一些功能包括:管理容器集群、提供部署應用的工具、根據需要擴展應用、對現有容器應用的更改進行管理、能優化容器下的底層硬件的使用。另外,kubernetes還能管理跨機器的容器,解決Docker跨機器容器之間的通訊問題。

實際上,Kubernetes提供了比基礎框架更多的內容,用戶可以選擇不同的應用框架、語言、監視工具和日誌管理的類型等。雖然kubernetes不能完全當作服務平臺,但絕對是一個很完整的PaaS。

3、Kubernetes具體應用場景是怎樣的?

Kubernetes的工作原理

只花10分鐘就能瞭解Kubernetes!


KubernetesMaster:提供集群管理控制中心,是最主要的控制單元,管理各系統之間的工作負載和通信。Master組件可以在集群中任何節點上運行。但是為了簡單起見,通常在一臺VM/機器上啟動所有Master組件,並且不會在此VM/機器上運行用戶容器。

Etcd:一個開源的用於配置共享和服務發現的高性能的鍵值存儲系統,由CoreOS團隊開發,也是CoreOS的核心組件。Kubernetes使用“Etcd”存儲集群的配置數據,對集群內部組建進行協調。

API- server: 是接收和修改REST請求的中央控制系統,用作控制集群的前端。此外,這是唯一與Etcd集群通信的東西,確保數據存儲在Etcd中。

scheduler:是關鍵角色,它決定了任務何時被調度運行,也決定一次任務運行中,哪些節點可以被執行。被判定執行的節點會被scheduler通過MQ或FaaS發送給worker執行。不同業務的任務有獨立的scheduler負責調度,發送任務到指定的Worker上。

Controller:是一個控制器,在後臺運行許多不同的控制器進程,用以控制集群的共享狀態,並執行例行任務。當服務發生任何更改時,控制器會發現更改,並開始以新的狀態工作。

Worker Node:也被稱為Kubernetes或Minion節點,它包含管理容器之間的網絡(如Docker)和主節點之間的通信信息,並按照計劃將資源分配給容器

Kubelet: Kubelet確保節點中的所有容器都在運行,並處於健康狀態。Kubelet負責pod的創建,以及是不是想要的狀態。如果Node失敗,Controller會觀察到這個變化,並在另一個健康的pod上啟動pod。

Container:是微服務的最低級別,放置在pod中,需要外部IP地址才能查看外部進程。

Kube Proxy:充當網絡代理和負載均衡器。此外,它將請求轉發到集群中的隔離網絡中,主要負責為Pod對象提供代理。

cAdvisor:充當助理,負責監視和收集關於每個節點上的資源使用和性能指標的數據。

Kubernetes的優點:

1)部署簡單,更具開放性

Kubernetes可以在一個或多個雲環境、虛擬機或裸機上運行容器,這意味著它可以部署在任何基礎設施上。此外,它兼容多個平臺,使得多雲策略高度靈活和可用。

2)更強大的工作負載能力和可伸縮性

Kubernetes為應用擴展提供了幾個大的特性,比如:水平擴展、自動縮放、手動縮放、可複製控制器創建的Pods等。另外,Kubernetes還提供了更強大的高可用性、健康檢查、流量控制和負載均衡器、自動轉出和回滾等。

總結來看,Kubernetes為開發雲應用奠定了更堅實的基礎,Kubernetes和其他管理編配工具一樣,如Marathon的Apache Mesos、Docker Swarm和AWS EC2等,提供了很棒的特性,但其他工具的份量都比Kubernetes小。

相關推薦

推薦中...