1. 程式人生 > >Kubernetes相關概念掃盲

Kubernetes相關概念掃盲

Kubernetes定義:
Kubernetes是Google開源的一個容器編排引擎,它支援自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程式時,通常要部署該應用的多個例項以便對應用請求進行負載均衡。Kubernetes的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。

在Kubernetes中,我們可以建立多個容器,每個容器裡面執行一個應用例項,然後通過內建的負載均衡策略,實現對這一組應用例項的管理、發現、訪問,而這些細節都不需要運維人員去進行復雜的手工配置和處理。

容器是Kubernetes管理的核心目標物件,它和容器的關係就好比OpenStack和虛擬機器之間的關係,而它和Docker的關係就好比OpenStack和Hypervisor之間的關係。一般來說,Kubernetes是和Docker配合使用的,Kubernetes呼叫每個節點上的Docker去建立和管理容器,所以,你可以認為Kubernetes是大腦,而Docker是四肢。

功能:
使用Kubernetes可以:
自動化容器的部署和複製
隨時擴充套件或收縮容器規模
將容器組織成組,並且提供容器間的負載均衡
很容易地升級應用程式容器的新版本
提供容器彈性,如果容器失效就替換它,等等…

新舊應用部署方式的對比
傳統的應用部署方式是通過外掛或指令碼來安裝應用。這樣做的缺點是應用的執行、配置、管理、所有生存週期將與當前作業系統繫結,這樣做並不利於應用的升級更新/回滾等操作,當然也可以通過建立虛擬機器的方式來實現某些功能,但是虛擬機器非常重,並不利於可移植性。

新的方式是通過部署容器方式實現,每個容器之間互相隔離,每個容器有自己的檔案系統 ,容器之間程序不會相互影響,能區分計算資源。相對於虛擬機器,容器能快速部署,由於容器與底層設施、機器檔案系統解耦的,所以它能在不同雲、不同版本作業系統間進行遷移。

容器佔用資源少、部署快,每個應用可以被打包成一個容器映象,每個應用與容器間成一對一關係也使容器有更大優勢,使用容器可以在build或release 的階段,為應用建立容器映象,因為每個應用不需要與其餘的應用堆疊組合,也不依賴於生產環境基礎結構,這使得從研發到測試、生產能提供一致環境。類似地,容器比虛機輕量、更“透明”,這更便於監控和管理。