OpenStack和K8s有什么区别?OpenStack和K8s是2种不同的开源类软件类型,简单的说就是OpenStack面向资源层,改变的是资源供给模式;而K8s面向应用层,变革的是业务架构。
所以,使用容器且集群规模不大,直接用K8s就可以;集群规模大,不管应用是否只是跑在容器中,都是OpenStack+K8s更好。
OpenStack+K8s是各取所长,并不只是因为惯性,而是对于多租户需求来说,Container(容器)的隔离性还需要加强,需要加一层VM(虚拟机)来弥补,而OpenStack是很好的方案。不过,VM+Container的模式,必然有性能的损耗,所以OpenStack基金会也推出一个项目叫Kata Containers,希望减少虚拟化的开销,兼顾容器的性能和隔离性。
OpenStack服务架构
OpenStack实现方案
- OpenStack的网络分为flat、vlan、vxlan
- br-tun是vxlan的隧道,隧道id对应了对应vlan id的vlan二层
- br-int是添加vlan头、解vlan头的部分
- route是ovs虚拟出来的路由器,不同vlan对应不同网关,通过snat出外网
- 浮动ip是ovs在虚拟路由器上dnat反向到vm的过程
K8s集群架构
K8s实现方案
- K8s是通过services来提供内部服务访问的,由ingress负载到集群不同的机器上去
- fannal实现是通过iptable实现Node节点ip虚拟的集群ip容器内ip端口的3级转换
OpenStack和K8s之间的区别在于,OpenStack本质上是为了构建多租户基础设施的解决方案而设计的,而K8s其实是按照一个服务管理器来设计的。在OpenStack中,多租户设计是首要原则,而在K8s中,第一个原则则是PID(进程ID)控制器。OpenStack仍是构建云基础设施的一个重要工具,而K8s则是一个面向不同应用场景的工具而已。
OpenStack和K8s适用于不同的工作负载。例如,OpenStack更适合电信运营商,他们的工作负载大都是有状态的,而且需要长时间运行。而K8s更适合基于REST或HTTP的工作负载。