OpenStack v.s. Kubernetes
目录
What are the differences with OpenStack and Kubernetes?
OpenStack | Kubernetes | |
---|---|---|
虚拟化技术 | 计算机虚拟化 | 操作系统虚拟化 |
运算单元 | Virtual Machine | Container |
云存储服务 | 块存储、对象存储、文件存储 | 块存储 |
多租户隔离 | 多租户 | 单租户 |
安全隔离性 | 好 | 差 |
裸机管理 | 支持 | 不支持 |
微服务支撑 | 不支持 | 原生支持 |
弹性伸缩维度 | 主机 | Pod |
应用编排能力 | 弱 | 强 |
业务创新能力 | 低 | 高 |
平台运维难度 | 大 | 小 |
Why OpenStack & Kubernetes?
OpenStack 采用的是计算机虚拟化技术,即 VMM Hypervisor,能够提供完整而独立的虚拟机,每个虚拟机都拥有独立的内核,隔离好、安全高。而 Kubernetes 采用的是操作系统虚拟化技术,提供了极其轻量的应用程序运行环境,即 Container,拥有轻量、敏捷、可移植的优势。如果将虚拟化技术实现比作云计算的基因,那么 OpenStack 和 Kubernetes 天生就注定了会走向两个不同的世界,即 IaaS 和 PaaS。在此,笔者希望提醒一下,这个世界并非先有了 OpenStack 再有 IaaS,而是有了 IaaS 之后才有 OpenStack。Kubernetes 亦然。之所以提出这一点是因为,这恰恰说明了 OpenStack 也可以是 PaaS,Kubernetes 亦然。这是两个社区之间必然存在竞争关系的原罪。
值得一提的是,容器虽然拥有 Namespace 的概念,但是更多是限制资源的使用,容器间共享内核,并不是真正意义的多租户。所以在对安全性要求高的应用领域,例如:金融、电信行业,容器技术一直备受挑战。通常的做法是,可以考虑在 Hardware 和容器之间通过增加一层虚拟机来弥补,但 Container on VM 的模式必然存在性能的损耗。所以 OpenStack 基金会一直在大力推动 Kata Containers 的发展,愿望可以在减少虚拟化开销的同时,兼顾容器的性能和隔离性。随着 Kata 的成熟,为容器安全解决方案提供了新的思路。而笔者认为 Kata 更重要的意义在于,它或许,甚至已经成为了促进 OpenStack Foundation 和 CNCF 达成协作的桥梁。这对两个社区未来的发展方向至关重要,OpenStack Summit 向 Open Infrastructure Summit 的蜕变就是一个非常美好的转向。这势必会回避很多 OpenStack 和 Kubernetes 正面碰撞的竞争,更倾向于互补互足,持续发展各自领域的优势。对此,请恕笔者再多说一句闲话,聊技术可以,但请大家不要再讨论 OpenStack 和 Kubernetes 谁生谁死的问题了,实在过于业余。
回到正题,还需要强调的一点是,安全隔离这一问题的范畴可不仅限于计算资源,还要考虑到网络和账户运营的层面。对于后者,在大规模集群或庞大的企业组织结构应用场景中,Kubernetes 可以考虑使用 OpenStack Keystone 完备的权限系统来进行补充。每个 OpenStack Tenant 独立维护自身的 Kubernetes 集群。例如:R&D Tenant、Business Tenant。
而在网络层面,虽然 Kubernetes 提出了很多网络的概念,例如:CNI、Service、DNS、Ingress、Network Policy。但必须承认 Kubernetes 的网络并不贴近传统数据中心的网络基础设施,方案也缺乏灵活,以至于经常受到来自网络基础设施部门的挑战。在他们眼里,网络基础设施平台应该具有 Subnet、 Floating IP 以及在此之上有 DHCP、路由控制、安全组、QoS、负载均衡、域名解析、VPC 等基础网络功能,以至于在此之上构建多租户隔离、多类型网络共存、可伸展性 SDN 网络的愿望。虽然 Kubernetes 的 Calico 网络也可以解决多租户网络隔离的问题,但与数据中心网络发展规划的目标依旧存在距离。这或许就是技术需求和 “真用户核心需求” 的距离。当然,我相信未来随着容器的密度越来越大,必然会出现专门针对容器架构进行优化的网络方案,而不再单存依赖 Linux 网络堆栈的支撑。但就当下而言,Kubernetes 依托于 OpenStack Neutron + Kuryr 来整合两者的网络仍不失为一个好的选择,即解决了嵌套 Overlay 网络的问题,还能够实现容器和容器之间、容器和虚拟器之间的网络直通。
在存储需求的层面,OpenStack 除了提供云主机之外,还可以提供多种类型的云存储服务,例如:块存储、对象存储和文件存储。对此 Kubernetes 则有着完全不同的思考。对于 Kubernetes 而言重要的不是能提供何种存储服务,而是怎么简易的利用好存储资源,继而更好的支撑上层的应用编排。这一点与 Kubernetes 对网络的态度如出一辙,它始终围绕要上层业务思考,而非 IT 资源。单凭 Kubernetes 难以满足企业对云存储服务和网络服务需求的需求。
有失必有得,Kubernetes 自始至终给到笔者的感觉都是一个懂得取舍的智者。Kubernetes 的核心价值始终明确 —— 推动企业的业务创新。未来的业务都会运行在云上,而容器是走向 DevOps、Cloud Native 的标准工具,微服务架构是走向大流量时代的标准软件设计思路。容器改变了应用程序交付的方式,微服务架构改变了应用程序的开发形态。而 Kubernetes 的编排能力以及微服务框架能力,让容器和微服务架构能够落地到业务应用中,加速企业业务创新,快速适应云时代的发展与竞争。这一点是 Kubernetes 之于 OpenStack 而言难以企及的优势,由基因就已经决定了。
退一步回来说,Kubernetes 的优势还是要依托于高可靠的云基础设施的可用性之上。Kubernetes 面向应用层,变革的是业务架构,而 OpenStack 面向资源层,提供了抽象化和自动化的 IT 基础设施,改变的是资源供给模式,是上层平台的强力支撑。在使用容器且集群规模不大的场景中,直接用 Kubenetes 当然可以,但在大规模的集群场景中,不管应用是否只是单存的跑在容器中,都是 OpenStack & Kubernetes 更好。就更不用说当下百花齐放的 5G 时代了。AI、MEC、IoT 将会掀起新的时代潮流,领先的私有云不再仅是虚拟机、容器或裸机,而是我全都要,我又全都可以不要。支持、管理和协调这三种方法的能力是运营效率的关键。具备弹性、韧性(Toughness,AWS 内部一直在强调的关键字)的云计算平台,才是可以经受时代变革洪流的领先的云平台。
诚然,我相信 Kubernetes 就如 OpenStack 的发展历程一般,会度过许多成长过程中的难关和挑战。但同时也可以确定的是,Kubernetes 并不会轻率的、奋不顾身的去挑战 OpenStack 在私有云 IaaS 领域的标准地位,因为 Kubernetes 自身也面临着诸多对手,例如 Serverless、例如 Lambda。Kubernetes 要想全面俘获企业级市场的信任必将经历长期的博弈过程,虚拟机、容器、裸机三种资源提供平台将会长期共存。
当然了,假如你问我 Kubernetes 和 OpenStack 我更喜欢哪一个,那么 Kubernetes 的许多思想和设计理念我认为都是比较先进的,但我们也不能忘记他之所以先进的原因 —— 站在巨人的肩膀上。
上述属于个人观点,碍于能力,仅供参考。写于上海 OpenInfra Summit 之前,希望届时能与大家在现场继续交流。
OpenStack v.s. Kubernetes的更多相关文章
- OpenStack宣布用Kubernetes重写底层编排引擎
Mirantis是OpenStack的主要贡献者,今天他宣布将使用Kubernetes作为底层编排引擎重写其私有云平台.我们认为这是推进OpenStack和Kubernetes 社区伟大的一步. Op ...
- Openstack+Kubernetes+Docker微服务实践之路--Kubernetes
经过几番折腾终于搞定Kubernetes了,我们要在Openstack上部署Kubernetes集群,使用最新工具Kubeadm来安装,由于不能直接访问Kubernetes的源,我们需要一台可以穿墙的 ...
- OpenStack VS Kubernetes,谁是你心中的王者?
当下云计算的领域里热度最高的两个项目,无疑是OpenStack和Kubernetes.如果云计算是一个风起云涌的江湖,毫不夸张的说OpenStack和Kubernetes就是江湖里的泰山北斗.Op ...
- 在 Kubernetes 上部署 OpenStack 是什么体验
红蓝出 CP,OpenStack 和 Kubernetes 在一起会怎样? 背景 从去年开始就想深入地学习 Kubernetes,首先想到是在 OpenStack 上能比较轻松地玩转,所以去 尝试了 ...
- Docker系列(八):Kubernetes横空出世背后的秘密
Docker与CoreOS的恩怨情仇 2013年2月,Docker建立了一个网站发布它的首个演示版本, 3月,美国加州Alex Polvi正在自己的车库开始 他的 第二次创业 有了第一桶金的Alex这 ...
- 【转】OpenStack和Docker、ServerLess能不能决定云计算胜负吗?
还记得在十多年前,SaaS鼻祖SalesForce喊出的口号『No Software』吗?SalesForce在这个口号声中开创了SaaS行业,并成为当今市值460亿美元的SaaS之王.今天谈谈『No ...
- OpenStack Newton:集虚拟化,裸金属和容器部署的统一云平台(转载)
2016-10-08木屐大数据在线 国庆长假第六天,OpenStack第十四版本Newton(牛顿?)发布,官方介绍中强调这是一个集虚拟化.裸金属和容器技术的一体化平台,可通过一套API来管理裸金属. ...
- 手把手带你入门kubernetes部署
实验环境准备 k8s-master 192.168.2.156 k8s-node节点 192.168.2.161 Ps:两台保证时间同步,firewalld防火墙关闭,selinxu关闭,系统 ...
- yum安装k8s集群(kubernetes)
此案例是以一个主,三个node来部署的,当然node可以根据自己情况部署 192.168.1.130 master 192.168.1.131 node1 192.168.1.132 node2 19 ...
随机推荐
- jeffy-vim-v2.9
http://pan.baidu.com/s/1qW1DlP6
- C# 调用 python3
1.C# 调用python 本质上是使用命令行运行python 1.1 C# 使用命令行 program.cs using System; using System.Diagnostics; usin ...
- golang 2 ways to delete an element from a slice
2 ways to delete an element from a slice yourbasic.org/golang Fast version (changes order) a := []st ...
- JAVA遇见HTML——Servlet篇:Servlet基础
代码实现: HelloServlet package servlet; import java.io.IOException; import java.io.PrintWriter; import j ...
- linux实操_shell系统函数
basename函数: 功能:返回完整路径最后/的后面部分,常用于获取文件名. 基本语法: basename 路径 后缀 不加后缀:运行后 加后缀:运行后 dirname函数: 功能:返回完整路径最后 ...
- 如何查看float在内存中存储方式
float fla = -1000; unsigned int *pfla = (unsigned int*)&fla; printf("fla=%X\n",*pfla); ...
- ZooKeeper某一QuorumPeerMain挂了
问题在哪呢?好久没没有出现类似问题了 解决方案: 之前zookeeper 是可以正常启动的,今天启动zookeeper时报如上错误.经过测试发现: 只要在~/zookeeper/data/ 下删除文件 ...
- c++代码中“引用”的使用
这些上机实验在Qt5.9上完成的,具体步骤 结构体引用 #include <iostream> #include<stdlib.h> using namespace std; ...
- 顺序表Vector
程序中会使用数据结构:例如:顺序表.链表.二叉树: 数据结构在底层中本质上只有两种:数据之间挨着和不挨着: 1.关于Vector
- 常见http响应状态码(status)
1.100-199信息响应 100 Continue: 服务器通知浏览器之前一切正常,请客户端继续请求,如果请求结束,可忽略: 101 Switching Protocal: 针对请求头的Upgrad ...