技能get | 如何将OpenStack部署在Kubernetes上?
Posted K8S技术社区
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技能get | 如何将OpenStack部署在Kubernetes上?相关的知识,希望对你有一定的参考价值。
11月4日K8S GeekGathering深圳站圆满落幕!获取演讲资料请文末加群!
第16届 OpenStack 悉尼峰会上, Kubernetes+OpenStack 成为峰会讨论的热点之一,更多的开发者将目光集中在了二者的融合方式上,当前有很多公司已经实现将 Kubernetes 部署到 OpenStack 中,而本次会议中,有更多的开发者开始研究如何将OpenStack 中的服务部署到 Kubernetes 中,实现 OpenStack 服务的容器化。
把 Kubernetes 部署在 OpenStack 之上是一件复杂的工作。选择上有很多种,比如 Kops、Kubeadm、Kubespray、Rancher、Tectonic 和 Magnum 。
来自 NEC 的工程师认为,每一项工具都有其优点和缺点,Magnum虽然是部署 OpenStack 最为方便快捷的方式,但在 OpenStack 中这项工具并不总是提供给你的,Kops 是 K8s 提供的官方工具,但是它并不支持 OpenStack , 在本次的峰会中,他提出了一种新颖的方式将 Kubernetes 部署在 OpenStack 中。Kubernetes 可以用来管理和部署容器和应用,并支持自动扩容和升级,那么可以考虑使用 Kubernetes 来将 Kubernetes 部署到 OpenStack 中。当然这种方式目前还面临一些技术问题有待解决。
Kubernetes自部署架构图
Kubernetes 和 OpenStack 之间的融合趋势不可避免,很多言论认为 Kubernetes会取代 OpenStack ,也有人认为 Kubernetes 无法撼动 OpenStack 的地位。来自 Bitnami 的工程师从不同层面阐述了自己的观点,Kubernetes 更多面向的是应用层,而 OpenStack 考虑的是物理机的抽象。
很多公司已经实现将 Kubernetes 部署到 OpenStack 中,本次会议更多的开发者开始研究如何将OpenStack 中的服务部署到 Kubernetes 中,实现 OpenStack 服务的容器化。这样可以充分利用 Kubernetes 的自动扩容、服务管理、滚动升级等一系列的优点。但将 OpenStack 部署到容器之中面临很多需要解决的问题。
来自 Kumulus 的工程师 Robert Starmer 针对是否需要将 OpenStack 部署到 Kubernetes 中提出了部署 OpenStack 所面临的问题、解决办法,以及目前可以用来将 OpenStack 部署在 Kubernetes 中的工具。
首先要将 OpenStack 顺利部署到 Kubernetes 中,要求 Kubernetes 基础设施具备以下能力:
而 OpenStack 希望通过 Kubernetes 获取以下几种能力:
在弹性服务方面,OpenStack 要求能够实现服务之间的解耦合和相应的负载均衡,而 Kubernetes 的 Kube-proxy 可以较好地满足这一需求。对于 Kubernetes 来说,OpenStack 的服务就是一个 Application 。
在监控服务可用性方面,要求必须在一个服务不可用时及时给出警告;当服务无法自动恢复或者进行自动恢复时及时给出警告。同时还需要能够监控一个服务的性能。依据这些数据可以决定是否可以进行服务扩展。在监控服务可用性方面可以借助于 Prometheus 帮助完成。
在故障恢复方面,如果一个服务出现问题可以及时恢复到正常状态,对于一个无状态的服务, Kubernetes 可以比较完美地支持,而对于有状态的服务故障的恢复可以借助于 Kubernetes 的Statful Set机制可以帮助解决问题。 但Robertstarmer 认为停掉所有 OpenStack 的服务进行升级时非常危险的事情,完美的解决方案还需要进一步探讨。
最后一点是升级,Kubernetes 支持滚动升级,有工程师直接利用 Kubernetes 的这种机制实现滚动升级,但是否能够完美支持还有待验证。
Kubernetes 看起来能够满足 OpenStack 的这些需求,使用 Kubernetes 来部署 OpenStack 有一些问题,Kubernetes本来就是一个复杂的工具,引入Kubernetes 势必会增加系统的复杂性。那么是否一定要将 OpenStack 部署到Kubernetes 还有根据实际情况,以及我们部署和使用 OpenStack 的目的是什么。
现在很多工具可以支持我们将 OpenStack 部署在 Kubernetes 中,Robert Starmer在他的演讲中提到了两个重要的工具OpenStack-helm和Kolla-Kubernete。
来自 Red Hat 的工程师 Flavio Percoco 同样提出了这两个方法。
Helm 是 Kubernetes 的包管理工具,类似于Yum。Helm 把 Kubernetes 资源比如( Deployments,Services,Ingress 等)打包到一个 Chart 中,Chart 定义了创建一个应用所需 K8s 的资源信息,以及安装应所需的依赖包信息。有了chart之后可以一键安装一个应用。Helm会解析 Chart 中的信息,将它分解为一个个资源发给K8s来创建。所以利用 Chart 进行 Kubernetes 的开发,关键是开发对应的Chart 。而 OpneStack-helm 的主要工作是将一个个服务( Nova, Neutron 等)封装成chart,然后通过 Helm 来一键安装。
部署 OpenStack 的另外一个重要利器是 Kolla-Kubernetes 。Kolla首先会部署一套 Kubernetes 集群,之后将 OpenStack 以镜像的形式运行在 Kubernetes 集群之中。
OpenStack与 Kubernetes 的融合已经是大势所趋,而将openstack部署在 Kubernetes 中在未来相信能够很好地实现。
感谢 EasyStack 工程师们 发自悉尼现场的报道。
添加K8S技术社区小助手,进群参与大咖交流!
以上是关于技能get | 如何将OpenStack部署在Kubernetes上?的主要内容,如果未能解决你的问题,请参考以下文章
Centos7安装部署openstack--glance镜像服务