k8s學習筆記之一:kubernetes簡介


一、虛擬化技術

1.什么是虛擬化技術

虛擬化,是指通過虛擬化技術將一台計算機虛擬為多台邏輯計算機。在一台計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。
虛擬化使用軟件的方法重新定義划分IT資源,可以實現IT資源的動態分配、靈活調度、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務於各行各業中靈活多變的應用需求。

2.虛擬化的類型

全虛擬化(Full virtualization): 也稱為原始虛擬化技術, 是另一種虛擬化方法. 該模型使用虛擬機協調客戶操作系統和原始硬件(見圖2). 這里"協調"是一個關鍵詞, 因為VMM在客戶操作系統和裸硬件之間用於工作協調. 一些受保護的指令必須由Hypervisor(虛擬機管理程序)來捕獲和處理. 因為操作系統是通過Hypervisor來分享底層硬件.
半虛擬化(Paravirtualization):另一種類似於全虛擬化的熱門技術. 它使用Hypervisor(虛擬機管理程序)分享存取底層的硬件, 但是它的客戶操作系統集成了虛擬化方面的代碼. 該方法無需重新編譯或引起陷阱, 因為操作系統自身能夠與虛擬進程進行很好的協作.

3.虛擬化類型的區別

全虛擬化:運行速度要快於硬件模擬, 但是性能方面不如裸機, 因為Hypervisor需要占用一些資源. 全虛擬化最大的優點是操作系統沒有經過任何修改. 它的唯一限制是操作系統必須能夠支持底層硬件
半虛擬化:需要客戶操作系統做一些修改(配合Hypervisor), 這是一個不足之處. 但是半虛擬化提供了與原始系統相近的性能. 與全虛擬化一樣, 半虛擬化可以同時能支持多個不同的操作系統.

二、容器技術

1.什么是容器

容器是輕量級的操作系統級虛擬化,可以讓我們在一個資源隔離的進程中運行應用及其依賴項。運行應用程序所必需的組件都將打包成一個鏡像並可以復用。執行鏡像時,它運行在一個隔離環境中,並且不會共享宿主機的內存、CPU 以及磁盤,這就保證了容器內進程不能監控容器外的任何進程。

2.容器和虛擬化的區別

虛擬機會將虛擬硬件、內核(即操作系統)以及用戶空間打包在新虛擬機當中,虛擬機能夠利用“虛擬機管理程序”運行在物理設備之上。虛擬機依賴於hypervisor,其通常被安裝在“裸金屬”系統硬件之上,這導致hypervisor在某些方面被認為是一種操作系統。一旦 hypervisor安裝完成, 就可以從系統可用計算資源當中分配虛擬機實例了,每台虛擬機都能夠獲得唯一的操作系統和負載(應用程序)。簡言之,虛擬機先需要虛擬一個物理環境,然后構建一個完整的操作系統,再搭建一層Runtime,然后供應用程序運行。    
對於容器環境來說,不需要安裝主機操作系統,直接將容器層(比如LXC或libcontainer)安裝在主機操作系統(通常是Linux變種)之上。在安裝完容器層之后,就可以從系統可用計算資源當中分配容器實例了,並且企業應用可以被部署在容器當中。但是,每個容器化應用都會共享相同的操作系統(單個主機操作系統)。容器可以看成一個裝好了一組特定應用的虛擬機,它直接利用了宿主機的內核,抽象層比虛擬機更少,更加輕量化,啟動速度極快。
相比於虛擬機,容器擁有更高的資源使用效率,因為它並不需要為每個應用分配單獨的操作系統——實例規模更小、創建和遷移速度也更快。這意味相比於虛擬機,單個操作系統能夠承載更多的容器。雲提供商十分熱衷於容器技術,因為在相同的硬件設備當中,可以部署數量更多的容器實例。此外,容器易於遷移,但是只能被遷移到具有兼容操作系統內核的其他服務器當中,這樣就會給遷移選擇帶來限制。    
因為容器不像虛擬機那樣同樣對內核或者虛擬硬件進行打包,所以每套容器都擁有自己的隔離化用戶空間,從而使得多套容器能夠運行在同一主機系統之上。我們可以看到全部操作系統層級的架構都可實現跨容器共享,惟一需要獨立構建的就是二進制文件與庫。正因為如此,容器才擁有極為出色的輕量化特性。 

三、kubernetes

1.什么是kubernetes

kubernetes,簡稱K8s,是用8代替8個字符“ubernete”而成的縮寫。是一個開源的,用於管理雲平台中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes提供了應用部署,規划,更新,維護的一種機制

2.kubernetes總體架構

3.kubernetes各組件介紹:

Master運行組件:
   Etcd: 保存了整個集群的狀態;
   Apiserver: 提供了資源操作的唯一入口,並提供認證、授權、訪問控制、 API注冊和發現等機制;
   controller manager: 負責維護集群的狀態,比如故障檢測、自勱擴展、滾勱更新等;
   scheduler: 負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上;
Node運行組件:
   kubelet: 負責維護容器的生命周期,同時也負責Volume(CVI)和網絡(CNI)的管理;
   Container runtime負責鏡像管理以及Pod和容器的真正運行(CRI);
   kube-proxy: 負責為Service提供cluster內部的服務發現和負載均衡;
除了核心組件,還有一些推薦的Add-ons
   kube-dns負責為整個集群提供DNS服務
   Ingress Controller為服務提供外網入口
   Heapster提供資源監控
   Dashboard提供GUI
   Federation提供跨可用區的集群
   Fluentd-elasticsearch提供集群日志采集、存儲不查詢

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM