OpenStack 以及和当前Docker K8S的关系
openstack概述
openstack 使用 python 语言开发,是虚拟资源管理工具,他可以协助你搜集各种资源,并加以利用以及管理,实现物理资源的高效使用和安全。虚拟物理这个动作,openstack 无法完成,需要一个中间层列如 KVM、Xen、Hyper-V 等,来基于硬件做资源的虚拟化,然后此时 openstack 通过各种API接口来接管这些资源。
openstack 主要针对 laas 平台,以资源为中心,可以为上层的 Paas 平台提供存储、网络、计算等资源。
与 docker 和 k8s 的关系
openstack:公认的云计算 laas 平台,其管理的核心目标对象是机器(虚拟机或物理机),当然也可以管理存储和网络,但那些也大都是围绕着机器所提供的配套资源。近年来容器技术火了之后,openstack 也开始通过各种方式增加对容器的支持,但目前 openstack 还不被视为管理容器的主流平台。
docker:这里我假定你指的是Docker engine (也叫做Docker daemon,或最新的名字:Moby),它也是一种容器运行时(container runtime)的实现,而且最主流的实现,几乎就是容器业界的事实标准。Docker 是用来创建和管理容器的,它和容器的关系就好比 Hypervisor(比如:KVM)和虚拟机之间的关系。当然, Docker 公司对 Docker engine 本身的定位和期望不仅仅在于单机上管理容器,所以近年来一直在向 Docker engine 中加入各种各样的高级功能,比如:组建多节点的 Docker 集群、容器编排、服务发现,等等。
kubernetes(K8S):搭建容器集群和进行容器编排的主流开源项目(亲爹是Google),适合搭建 Paas 平台。容器是 Kubernetes 管理的核心目标对象,它和容器的关系就好比 Openstack 和虚拟机之间的关系,而他和 Docker 的关系就好比 Openstack 和 Hypervisor 之间的关系。一般来说,Kubernetes 是和 Docker 配合使用的, Kubernetes 调用每个节点上的 Docker 去创建和管理容器,所以,你可以认为 Kubernetes 是大脑,而 Docker 是四肢。