1、簡介 首先,他是一個全新的基於容器技術的分散式架構領先方案。Kubernetes(k8s)是Google開源的容器集群管理系統(谷歌內部:Borg)。在Docker技術的基礎上,為容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等一系列完整功能,提高了大規模容器集群管理的便捷性。 Kube ...
1、簡介
首先,他是一個全新的基於容器技術的分散式架構領先方案。Kubernetes(k8s)是Google開源的容器集群管理系統(谷歌內部:Borg)。在Docker技術的基礎上,為容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等一系列完整功能,提高了大規模容器集群管理的便捷性。 Kubernetes是一個完備的分散式系統支撐平臺,具有完備的集群管理能力,多擴多層次的安全防護和準入機制、多租戶應用支撐能力、透明的服務註冊和發現機制、內建智能負載均衡器、強大的故障發現和自我修複能力、服務滾動升級和線上擴容能力、可擴展的資源自動調度機制以及多粒度的資源配額管理能力。同時Kubernetes提供完善的管理工具,涵蓋了包括開發、部署測試、運維監控在內的各個環節。2、解決的問題
1、伺服器環境
kubernetes是使用Docker進行容器管理的,所以天生具備Docker的所有特性,只需要使用相應環境的Docker鏡像就可以運行服務,還需要關心宿主機是redhat、centos還是ubuntu,只要在宿主機上安裝Docker環境即可,相比傳統運維,減少了各種依賴環境的衝突,降低運維成本,也方便整體服務的遷移。
2、伺服器資源管理
對於kubernetes來說,是不關心有幾台伺服器的,每個伺服器都是一個資源對象(Node),kubernetes關心的是這個Node上有多少可用的cpu和記憶體。例如現在有兩台伺服器
server01 (4c16g), 已用(2c7.5G)
server02 (4c16g), 已用(3c13G)
現在有一個服務ServiceA需要部署,ServiceA申明自己運行需要至少3G記憶體,這時kubernetes會根據調度策略將其部署到server01上,很明顯server01的資源是更加充足的。實際上kubernetes的調度策略要複雜的多,kubernetes會監控整體伺服器資源的狀態進行調度,而以前的運維方式只能由人工判斷資源使用
3、服務容災恢復
說簡單點,就是服務掛了之後,能夠自動恢復。例如現在有一個ServiceA,運行在server01上,kubernetes會通過內部的kubelet組件監控ServiceA服務進程的狀態,一旦發現進程丟失(服務本身掛掉或者整個server01的伺服器掛掉),就會嘗試換一臺資源充足的伺服器重新部署ServiceA並啟動,這樣就可以確保我們的服務一直是可用狀態,而不需要人工維護。
4、可視化管理
在kubernetes中,所有的概念都抽象成不同的對象,而所有的對象都是可以通過圖形化界面進行管理和監控的,當然了,也同時提供了命令行客戶端kubectl進行管理。