OpenShift 与 OpenStack:让云变得更简单
OpenShift 与 OpenStack 都是在 2010、2011 年左右创建的,用于构建可扩展云平台的开源技术,两者都用于在混合云环境中构建可扩展系统。从历史来看,OpenStack 的存在时间要比 OpenShift 长。这两个项目的演变代表了从虚拟机到应用程序容器的转变。
OpenShift 是 Paas(平台即服务)模式,主要在 AWS、Google Cloud Platform 等现有云服务之上运行,用于开发和操作容器化应用程序。用户可以自己提供、操作和监控应用程序与服务,并专注于优化开发和 DevOps 工作流。而 OpenStack 具有更深层次的抽象概念,OpenStack 是一种 Iaas(基础设施即服务),可用于将现有服务器转换为云服务。该平台用于构建基于分布式硬件的虚拟化云基础设施,配置具有 CPU 内核和 RAM 的虚拟机,以及虚拟网络和分布式存储。
在容器虚拟化技术成为现在虚拟化主导地位的当下,因为 OpenShift 和 OpenStack 这两种技术互不干涉彼此独立,所以通常两者结合使用。比如 OpenShift 可以建立在 OpenStack 之上,由 OpenStack 构筑服务器基础设施,而 OpenShift 则作为第三方 API 服务存在。也可以在单个应用中同时使用。OpenShift 还可以直接部署在 OpenStack 平台上搭建的云服务中。
OpenShift 与 OpenStack 相结合可以完整涵盖从配置虚拟化硬件到开发和操作容器化应用程序,能够有效降低客户的设置成本,提高现有工作流程的效率和生产力,确保应用程序的可扩展性。因此 OpenShift 和 OpenStack 被广泛用于实施混合云的战略,很受大型全球组织的欢迎。


下面我们来详细看看这两种技术的优缺点,以及常见的部署场景。
OpenStack
OpenStack 是一个用于构建可扩展云环境的开放平台。它的核心功能是提供和分配计算、网络和大容量存储。除了 API 之外,还有一个 Web 界面可用于管理系统。
除了资源供应,OpenStack 还提供其他功能,包括用户身份管理、DNS 入口管理和管理 VM 镜像的服务。更方便的是,单独的功能被封装为了单独的组件。当然在使用时并非所有的组件都必须部署,下面我们简单介绍一些比较常用的组件:


OpenStack 适合在分散式计算硬件上构建云基础设施。结合 OpenShift 或类似的 K8s 管理解决方案,VM 和基于容器的应用程序可以并行运行。其中带有“Magnum”组件的容器虚拟化构成了其原生功能范围的一部分。
OpenStack 的优势和缺点
OpenStack 能够帮助企业基于现有技术来构建自己的云基础架构,可以节省大量的成本。同时因为单独组件的特性,让公司可以根据需求进行灵活配置。这些都是让大家选择 OpenStack 的原因,当然最重要的是 OpenStack 是免费提供的开源软件。
不过 OpenStack 也有一些缺点,最明显的是因为软件的复杂性,即整个软件包括大量单独的组件,必须单独配置。这让安装 OpenStack 变得极具挑战性。同时因为社区贡献的文档可能追不上技术的快速发展,所以更新迭代会比较慢。当然了,工程师可以通过与专家或技术合作伙伴合作来解决问题。不过此类服务可能会产生额外费用。
OpenShift
OpenShift 用于构建分布式、可扩展的应用程序和开发环境。该软件提供了一个完整的执行环境,可以在其中部署、执行、管理和编排容器。集成工具简化了现代开发和部署的工作流程。OpenShift 一般作为企业的平台即服务 (PaaS)、软件即服务 (SaaS)和容器即服务(CaaS)解决方案被使用。但是 OpenShift 偏向于大型企业组织,对于单个开发人员来说可能过于复杂。
OpenShift 使用特殊的 K8S 发行版,可以跨云和基础设施边界部署,实现同样的用户体验。K8S 的核心功能由安全和监控功能补充,并基于集中式策略管理。其中 Operator 是一种打包、部署和管理 K8S 原生应用程序的方法。K8S 原生应用程序是既部署在 K8S 上又使用 K8S API 和 kubectl 工具管理的应用程序。通常,OpenShift 中的 Operators 用于实现:

OpenShift 的优势和缺点
使用 OpenShift 的最大优势之一是能够在混合云环境中运行软件,还可以加快开发工作流程,大大缩短开发时间。另一方面是高度安全性。防止网络入侵和数据泄露对于公司至关重要。端到端授权和身份验证限制了用户访问系统中不同的区域,有助于更好地进行数据保护。
当然,OpenShift 也存在一些缺点。它仅支持在 Red Hat 的特殊操作系统上运行,例如 Red Hat Enterprise Linux CoreOS(RHCOS)和 Red Hat Enterprise Linux(RHEL)。安装也是相对复杂的。由于严格的安全设置,并非所有 Docker Hub 容器都可以在 OpenShift 下使用。
作为助力企业完成虚拟化的重要两种手段,OpenShift 与 OpenStack 都被各大企业广泛使用。也是开发者们在开发系统和平台时必定会遇到的,希望这篇文章能对你了解二者有所帮助。
推荐阅读
OpenShift 与 OpenStack:让云变得更简单的更多相关文章
- EpiiAdmin 开源的php交互性管理后台框架, 让复杂的交互变得更简单!Phper快速搭建交互性平台的开发框架,基于Thinkphp5.1+Adminlte3.0+Require.js。
EpiiAdmin EpiiAdmin php开源交互性管理后台框架,基于Thinkphp5.1+Adminlte3.0+Require.js, 让复杂的交互变得更简单!Phper快速搭建交互性平台的 ...
- 快开宝PDA开单器出入库扫码:让批发零售变得更简单
快开宝PDA开单器出现前 批发商户是这样开单和管理的 ★员工痛苦:需要记客户.价格.库存等等,应对报错价.错漏单.盘错货等各种状况. ★老板麻烦:每天要守店.对单.核账,经常因错漏单.库存乱.积压货. ...
- spring 第一篇(1-1):让java开发变得更简单(下)
切面(aspects)应用 DI能够让你的软件组件间保持松耦合,而面向切面编程(AOP)能够让你捕获到在整个应用中可重用的组件功能.在软件系统中,AOP通常被定义为提升关注点分离的一个技术.系统由很多 ...
- spring 第一篇(1-1):让java开发变得更简单(下)转
spring 第一篇(1-1):让java开发变得更简单(下) 这个波主虽然只发了几篇,但是写的很好 上面一篇文章写的很好,其中提及到了Spring的jdbcTemplate,templet方式我之前 ...
- [翻译]Kafka Streams简介: 让流处理变得更简单
Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...
- Moq让单元测试变得更简单
[ASP.Net MVC3 ]使用Moq让单元测试变得更简单 前几天调查完了unity.现在给我的任务是让我调查Moq. 以下是自己找了资料,总结并实践的内容.如果有表述和理解错误的地方.恳请指正. ...
- Winform 让跨线程访问变得更简单
Winform 让跨线程访问变得更简单 前言 由于多线程可能导致对控件访问的不一致,导致出现问题.C#中默认是要线程安全的,即在访问控件时需要首先判断是否跨线程,如果是跨线程的直接访问,在运行时会抛出 ...
- Kafka Streams简介: 让流处理变得更简单
Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...
- 深入解析 Kubebuilder:让编写 CRD 变得更简单
作者 | 刘洋(炎寻) 阿里云高级开发工程师 导读:自定义资源 CRD(Custom Resource Definition)可以扩展 Kubernetes API,掌握 CRD 是成为 Kubern ...
- 让全链路压测变得更简单!Takin2.0重磅来袭!
自Takin社区版1.0发布两个多月以来,有很多测试同学陆续在各自的工作中运用了起来,其中包括金融.电商.物流.出行服务等行业.这个过程中我们收到了很多同学的反馈建议,同时也了解到很多同学在落地全链路 ...
随机推荐
- 接雨水(4.4 leetcode每日打卡)
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可 ...
- Ubuntu 20.04 使用 socat 转发特定端口
安装socat apt install socat 根据需求确定要转发的端口 比如,我的需求是监听IPv6的某一TCP端口,并转发至局域网内某一特定主机,可以使用以下命令: socat TCP6-LI ...
- python列表删除元素之del,pop()和remove()
del函数 如果知道要删除元素在列表中的位置,可以使用del语句: list_1 = ['one', 'two', 'three'] print(list_1) del list_1[0] print ...
- 【外包杯】【报错】微信小程序 “[app.json 文件内容错误]app.json:未找到[“pages”][0]对应 pages/xx/xx.wxml(或其他)文件” 报错 的简单解决方案(已解决)
问题的解决方案 删除components目录下的uni-link文件夹
- 0x04.信息收集
探针 被动:借助网上的一些接口查询或者网上已经获取到的,查看历史信息. 主动:使用工具,从本地流量出发,探测目标信息,会发送大量流量到对方服务器上. 谷歌语法 懒人语法:https://pentest ...
- 0x01.web请求、web环境、抓包技巧
网站搭建 DNS解析 域名选择 http/https 证书 服务器 web应用环境架构 操作系统 linux windows 开发语言 php java ASP/ASPX python等 程序源码 C ...
- 如何在 PyQt 中实现异步数据库请求
需求 开发软件的时候不可避免要和数据库发生交互,但是有些 SQL 请求非常耗时,如果在主线程中发送请求,可能会造成界面卡顿.这篇博客将会介绍一种让数据库请求变得和前端的 ajax 请求一样简单,且不会 ...
- [scrapy]一个简单的scrapy爬虫demo
一个简单的scrapy爬虫demo 爬取豆瓣top250的电影名称+电影口号 使用到持久化流程: 爬虫文件爬取到数据后,需要将数据封装到items对象中. 使用yield关键字将items对象提交给p ...
- 文心一言 VS 讯飞星火 VS chatgpt (164)-- 算法导论13.1 4题
四.用go语言,假设将一棵红黑树的每一个红结点"吸收"到它的黑色父结点中,使得红结点的子结点变成黑色父结点的子结点(忽略关键字的变化).当一个黑结点的所有红色子结点都被吸收后,它可 ...
- Python 中 key 参数的含义及用法
哈喽大家好,我是咸鱼 我们在使用 sorted() 或 map() 函数的时候,都会看到里面有一个 key 参数 其实这个 key 参数也存在于其他内置函数中(例如 min().max() 等),那么 ...