Kubernetes 与 OpenStack

简介: Kubernetes 与 OpenStack


网络异常,图片无法展示
|

网络异常,图片无法展示
|


OpenStack 是面向资源层的 IaaS 云平台管理软件,可以帮助用户构建和管理私有云和公有云。


目前,OpenStack 仍然是开源 IaaS 领域的主流平台,有超过 80%的中国企业正在使用 OpenStack。但是随着 K8s 的日益普及,有很多 OpenStack 用户开始关注云原生。有一些用户也尝试将工作负载从 Openstack 迁移到云原生环境中。

 

OpenStack + Kubernetes 是目前相对流行的云应用解决方案栈。对于那些部署了 OpenStack,同时又在尝试使用 Kubernetes 的用户,为了帮助他们更好地同时管理 OpenStack 和 K8s,我们建议用户以 K8s 作为底座,OpenStack 由 K8s 统一部署和管理,以及统一编排。各种租户子网(跨 K8s 和 OpenStack)能够动态定义和连接/断开,用以支持动态变化的租户需求。

 

在这种场景下,OpenStack VMs 和 Kubernetes Pods 的网络互通成为了一个亟待解决的问题。同时, OpenStack 所提供的网络隔离功能也应该在与 Kubernetes 连接的过程中生效: 属于一个 VPC 的 VMs 理所应当地不能访问另外一个 VPC 的 VMs 以及 Pods/Svcs。

 

面对这样的需求,灵雀云 Kube-OVN 团队工程师与 Intel 的 OpenStack 专家共同拟定了相应的方案。在方案里,Kube-OVN 需要提供的基本功能如下:


  • 提供 Kubernetes Pods 和 OpenStack VMs 之间的路由交换, 实现网络互通;
  • 为 Kubernetes 提供和 OpenStack 相同的网络隔离规范, 保证 VPC 之间的网络隔离。


目前有两类实现方案, 一种是基于 ovn-ic 的方案, 以松耦合的方式提供路由交换和网络隔离;另一种是基于同一个 ovn 底座的方案, 这是一种紧耦合的方案。

方案前置要求:


  • Kube-OVN 升级到 V 1.7 版本以上;
  • OpenStack usurri +. 必须基于 ovn 部署。


方案一:基于 ovn-ic

组网方式一:

ovn-ic 是 ovn 提供的一个 inter-connection 工具, 用于在不同的 ovn 控制器之间交换路由,可靠性和性能由 ovn 保证。

网络异常,图片无法展示
|

如图所示,ovn-ic 作为中间人, 相互交换 OpenStack OVN 和 Kubernetes Kube-OVN 的路由信息。

这样设计的好处是部署简单, OpenStack 和 Kubernetes 相对独立,互相之间不会影响。

同时也有一些弊端:OpenStack 和 Kubernetes 分别部署, 资源利用率独立计算;而且 OpenStack 的网络隔离特性无法展现。

 

组网方式二:

依然基于 ovn-ic, 但是会为 OpenStack 的每个租户建立一个 Kubernetes 集群。

网络异常,图片无法展示
|

如图所示,ovn-ic 会负责打通 OpenStack 集群中的每个 VPC 网络和其对应的 Kubernetes 集群的路由。

这样设计的好处是部署简单, OpenStack 和 Kubernetes 相对独立, 互相不受对方变化的影响,同时能够支持 OpenStack 的网络隔离特性。

也有同样的弊端,OpenStack 和 Kubernetes 分别部署, 资源利用率独立计算。

方案二:基于相同 OVN 底座

这个方案要求 Kubernetes 与 OpenStack 基于相同的 ovn 控制器部署。Kube-OVN 目前支持 OpenStack 部署在 Kube-OVN 的 ovn 控制器上。

网络异常,图片无法展示
|

在这个方案中,OpenStack 在部署时, 网络组件沿用了 Kubernetes 中的 Kube-OVN 提供的接口,因此,OpenStack 和 Kubernetes 的网络底座是同一个 ovn。相应地,Kubernetes 和 OpenStack 的组网能力也完全相同。

这个方案的好处显而易见:


  • OpenStack 和 Kubernetes 能够在同一个 host node 部署 VM 和 Pod,能够最大化一个 host node 的资源利用率;
  • 支持 OpenStack 的网络隔离特性。

当然,也会有一些弊端,包括部署复杂,Kubernetes 和 OpenStack 在虚拟网络组网时会有相互影响等。这两种方案已经登陆 GitHub(https://github.com/kubeovn/kube-ovn/blob/master/docs/OpenstackOnKubernetes.md),哪种会更满足你的使用场景?


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
消息中间件 Kubernetes 关系型数据库
教程get | K8S部署OpenStack容器云(下)
如何借助OpenStack Kolla-K8S项目,通过K8S对OpenStack进行容器化部署?并最终部署一套All-In-One类型的OpenStack容器云?让我们继续部署: 部署kolla-kubernetes ■  覆盖默认的RBAC设置 通过kubectl replace命令进行默.
4976 0
|
存储 弹性计算 Kubernetes
k8s 开通openstack
【2月更文挑战第20天】
343 3
|
Kubernetes 开发工具 C语言
利用 Kuryr 整合 OpenStack 与 Kubernetes 网络
Kubernetes Kuryr 是 OpenStack Neutron 的子项目,其主要目标是通过该项目来整合 OpenStack 与 Kubernetes 的网络。该项目在 Kubernetes 中实作了原生 Neutron-based 的网络,因此使用 Kuryr-Kubernetes 可以让你的 OpenStack VM 与 Kubernetes Pods 能够选择在同一个子网上运作,并且能够使用 Neutron 的 L3 与 Security Group 来对网络进行路由,以及阻挡特定来源 Port。
2504 0
|
Kubernetes 容器
eBay构建自有工具集成Kubernetes和OpenStack
为了让开发人员保持快乐,电子商务公司eBay开发了一个框架,用于在其大规模OpenStack云上部署容器。 eBay云计算基础设施和平台高级总监Suneet Nandwani表示,从eBay云计划的第一天起,该电子商务公司就一直致力于保持开发人员的快乐。
1365 0
|
存储 Kubernetes 容器
IT专家们谈OpenStack和Kubernetes的未来
一位来自451 Research的分析师Carl Brooks表示:“如果你正确构建了运营云,并使用像K8s这样的容器技术,将会使它变得更加可行。 Brooks说,这对OpenStack私有云构建来说很重要。
1456 0
|
缓存 Kubernetes 容器
OpenStack与Kubernetes融合架构下的优化实践
如果你想使用Kubernetes来构建你的应用程序环境,通过OpenStack来部署Kubernetes其架构是一种推荐的方式,本文将与大家分享Kubernetes在OpenStack上的编排方式与其优化方法。
2355 0
|
Kubernetes API Docker
如何用Ansible部署Kubernetes集群到OpenStack
最近的Austin OpenStack峰会上,参会者中对容器感兴趣的人数之多,让我印象深刻。几乎所有跟容器相关的会议现在都意识到了它的优点。通过将应用程序容器化,就能够将主机操作系统虚拟化。这也就意味着,你可以在主机操作系统中为每个容器创建隔离环境,比如文件系统,网络堆栈和进程空间,令容器之间互相可见。
3154 0
|
网络协议 Linux 网络安全
openstack 云平台一体化部署(超详细)
openstack 云平台一体化部署(超详细)
2050 0
openstack 云平台一体化部署(超详细)
|
消息中间件 缓存 Shell
跟我一起来学OpenStack部署
跟我一起来学OpenStack部署
681 0
|
存储 数据安全/隐私保护 Docker
Kolla-ansible部署openStack
Kolla-ansible部署openStack
1512 11