一、OpenStack與虛擬機之間的關系
OpenStack使用Python語言開發,是虛擬資源管理工具,他可以協助你搜集各種資源,並加以利用以及管理,實現物理資源的高效使用和安全。虛擬化物理機這個動作,OpenStack無法完成,需要一個中間層例如KVM、Xen、VMware等來基於硬件做資源的虛擬化,然后此時OpenStack通過各種API接口來接管這些資源。
OpenStack 主要針對 IaaS平台,以資源為中心,可以為上層的 PaaS 平台提供存儲、網絡、計算等資源。
二、與Docker和k8s的關系
1.OpenStack:公認的雲計算IaaS平台,其管理的核心目標對象是機器(虛擬機或物理機),當然也可以管理存儲和網絡,但那些也大都是圍繞着機器所提供的配套資源。近年來容器技術火了之后,OpenStack也開始通過各種方式增加對容器的支持,但目前OpenStack還不被視為管理容器的主流平台。
2.Docker:這里我假定你指的是Docker engine(也叫做Docker daemon,或最新的名字:Moby),它是一種容器運行時(container runtime)的實現,而且是最主流的實現,幾乎就是容器業界的標准。Docker是用來創建和管理容器的,它和容器的關系就好比KVM和虛擬機之間的關系。當然,Docker公司對Docker engine本身的定位和期望不僅僅在於在單機上管理容器,所以近年來一直在向Docker engine中加入各種各樣的高級功能,比如:組建多節點的Docker集群、容器編排、服務發現,等等。
3.Kubernetes(k8s):搭建容器集群和進行容器編排的主流開源項目(親爹是Google),適合搭建PaaS平台。容器是Kubernetes管理的核心目標對象,它和容器的關系就好比OpenStack和虛擬機之間的關系,而它和Docker的關系就好比OpenStack和kvm之間的關系。一般來說,Kubernetes是和Docker配合使用的,Kubernetes調用每個節點上的Docker去創建和管理容器,所以,你可以認為Kubernetes是大腦,而Docker是四肢。
三、一句話總結
OpenStack是管理虛擬機的(web可視化平台,在linux里邊部署配置),k8s是管理容器的(web可視化平台,在linux里邊部署配置);上層的應用是部署在容器上的,而一般容器又是創建在虛擬機上的,所以OpenStack是屬於IaaS層面的,k8s是屬於PaaS層面的,上層應用是屬於SaaS層面的。