openstack,docker,mesos,k8s什么关系?

2023-12-22 10:59

本文主要是介绍openstack,docker,mesos,k8s什么关系?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通俗易懂语言讲解:openstack,docker,mesos,k8s技术的关系和用途。

简述一.

在这里插入图片描述

OpenStack:公认的云计算IaaS平台,其管理的核心目标对象是机器(虚拟机或物理机),当然也可以管理存储和网络,但那些也大都是围绕着机器所提供的配套资源。近年来容器技术火了之后,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是四肢。

Mesos:Mesos是一个通用资源管理平台,它所管理的核心目标对象既不是虚拟机/物理机,也不是容器,而是各种各样的计算资源(CPU、memory、disk、port、GPU等等)。Mesos会收集各个节点上的计算资源然后提供给运行在它之上的应用框架(比如:Spark、Marathon、甚至是Kubernetes)来使用,应用框架可以将收到的计算资源以自己喜欢的任何方式创建成计算任务来完成特定工作(比如:创建一个大数据任务计算个π什么的)。由于容器技术近年来的火热,Mesos也对容器进行非常深层次的支持,它内部完整地实现了一个容器运行时(类似于Docker),所以,上层的应用框架可以方便地把自己的计算任务以容器的方式在Mesos管理的计算集群中运行起来。使用Mesos的门槛相对较高(需要应用框架编写代码调用Mesos的API和其集成),但一旦用起来之后灵活性和可扩展性更高,因为Mesos并不限制应用框架如何使用计算资源(可以以容器的方式使用,也可以是其它方式,比如:传统的进程),主动权完全在应用框架自己手中。作为对比,Kubernetes只能管理容器,所有任务都必须以容器的方式来运行。为了解决门槛较高的问题(当然也是为了赚钱),Mesosphere(Mesos这个开源项目背后的商业公司)推出了DC/OS,其核心就是Mesos加一个内置的应用框架Marathon(可以用做容器编排),能够达到开箱即用的效果,安装好之后立刻就可以创建和管理容器和非容器类的任务了。

简述二.

这四项技术都对云计算的普及应用都发挥了很大的作用。
在这里插入图片描述

在Docker 概念普及期,有很多人担心 Docker 可能会取代 OpenStack,但 OpenStack 社区大牛用上面这张图解释了二者的关系:
Docker 主要针对 Paas 平台,是以应用为中心。
OpenStack 主要针对 Iaas 平台,以资源为中心,可以为上层的 PaaS 平台提供存 储、网络、计算等资源。

我们也看到,OpenStack 社区和 Docker 的结合越来越紧密。然而正如其他回答所示,OpenStack 主要还是用来管理 VM(虚拟机)。

另外两项技术,Kubernetes 是面向应用的 PaaS 层,Mesos 也偏向资源管理,但 Mesos 框架设计不错,基于它很容易构建 PaaS。

OpenStack 很庞大,底层资源管理能力很强。

Kubernetes 的强项在于容器编排,可以很好解决应用上云的问题。Kubernetes 可以运行在 OpenStack 上。Kubernetes 的好处,推荐来自浙大的这篇文章:请注意,容器技术圈已迈入后Kubernetes时代!

Mesos 牛叉在于数据中心资源统一管理,可以为多个框架分配资源,但不负责调度,可视为分布式操作系统内核,也可以部署在 OpenStack 上,也支持物理资源。如果只用容器,Kubernetes 是不二之选;如果是运行的不仅仅是容器化的应用,Mesos 配合 Marathon 调度框架甚至 Kubernetes 都不错。

总结:

Openstack从开始的模仿AWS基础设施开始,一直在构建开源、私有的上云架构标准。但是因为利益纷争,仅有实践而没有业界标准可以确定下来。分支太多的结果是在落地过程中,不断的改良技术演进,最终会发展成四不像的基础设施环境。复杂性、没有解决业务问题是最被吐槽的痛点。

好在2013年,Docker异军突起,立刻在业界吹出一套Build、Ship、Run的方法论。横扫DevOps运维圈2年有余,在容器热点过后,大家期望技术落地,应用到日常的业务事务中。这个时候容器就懵逼了。能干啥呢?啥也干不了。

好在这个时候,Google振臂一呼,推出了Kubernetes,基于容器的集群管理平台,把这个矛盾转成成动力,建立了云原生基金会,为树立业务场景技术选型提供既定的方案。好了,这个时候开始进入实践期。

Mesos是Apache的顶级开源项目,是最早期的提出二级资源调度开发Kernel,通过定制上面的编排工具,可以快速定制一套自家的PaaS解决方案,非常受开发者喜欢。毕竟在一家公司不做出一点惊天地泣鬼神的业绩,也不好对上级交代。所以,Mesos是制作分布式系统最佳的基础组件平台。

这篇关于openstack,docker,mesos,k8s什么关系?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/523701

相关文章

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

k8s搭建nfs共享存储实践

《k8s搭建nfs共享存储实践》本文介绍NFS服务端搭建与客户端配置,涵盖安装工具、目录设置及服务启动,随后讲解K8S中NFS动态存储部署,包括创建命名空间、ServiceAccount、RBAC权限... 目录1. NFS搭建1.1 部署NFS服务端1.1.1 下载nfs-utils和rpcbind1.1

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke

k8s容器放开锁内存限制问题

《k8s容器放开锁内存限制问题》nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并... 目录问题问题确认放开容器max locked memory限制总结参考:https://Access

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke