摘要:该文基于OpenStack和Kubernetes两大云计算领域开源技术研究了二者的融合及双向部署技术。OpenStack通过虚拟化技术将计算、存储、网络等资源抽象成计算资源池、网络资源池和存储资源池,实现基础虚拟资源的统一调度管理。Kubernetes能够对容器化应用进行编排、运行、维护和扩展等,可以实现容器管理功能。基于OpenStack集群实现Kuber-netes集群的部署可利用OpenStack的Magnum项目融合Kubernetes集群提供容器服务。基于Kubernetes集群实现EOpen-Stack集群的部署的核心思想是将OpenStack组件容器化,可使用Kolla、OpenStack-helm以及Tripleo等项目,保证其更高效稳定的运行,资源得到充分利用并且便于扩展和维护。
关键词:OpenStack;Kubernetes;云计算;双向部署
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2020)01-0010-03
隨着现代计算机技术的不断发展,尤其是近年来国家网络信息体系的不断建设,云计算及相关领域的技术越来越受到重视。云计算是一种按需计费的商业模式,能够使消费者通过便捷的、可用的网络访问,进一步使用由云服务商提供的计算资源共享池(资源主要包括软件、网络、服务器、存储等),即只需要投入极少的管理工作就能快速提供资源,且消费者与服务提供商之间的互动会大幅减少。
OpenStack是一个构建稳定高效的开源云管理平台项目,OpenStack集群通过虚拟化技术将计算、存储、网络等资源抽象成计算资源池、网络资源池和存储资源池,并将这些资源池进行统一划分和管理,提供市场所需的虚拟资源及虚拟服务能力。Kubernetes是一个开源的容器集群管理系统,能够支持不同的容器技术,Docker是Kubernetes集群系统普遍应用的容器化技术,利用Kubernetes集群便于管理跨主机的容器化应用,实现容器化程序的自动部署、实例化和运行管理能力。
OpenStack和Kubernetes都是开源的技术,二者的集群部署技术都已十分成熟,但OpenStack和Kubernetes的融合是当今虚拟化系统的研究热点,更多的开发者聚焦于两种集群的融合技术中,是未来OpenStack虚拟化集群和Kubernetes容器集群的发展方向,能够使云计算供应商提供更好的应用及资源,有利于促进云计算领域IaaS层资源与PaaS层平台服务的深入融合。
1OpenStack与Kubernetes概述
1.1OpenStack概述
OpenStack是一个构建稳定高效的开源云管理平台项目,通过虚拟化技术将计算、存储、网络等资源抽象成计算资源池、网络资源池和存储资源池,通过keystone、nova、neutron、glance、cinder等组件实现对虚拟机、裸金属、块存储、文件存储、对象存储、网络、负载均衡、安全组、防火墙等基础虚拟资源的统一调度管理。OpenStack架构如图1所示。
OpenStack集群部署组件中keystone组件为nova、neutron、cinder、glance、ceilometer、swift等组件提供认证服务,保障集群的认证管理功能;nova组件为虚拟机VM提供部署和计算能力,便于虚拟机增、删、改、查等全生命周期管理;neutron组件为虚拟机VM提供网络服务,保障集群内的网络架构功能;cinder为虚拟机VM提供云硬盘存储能力,并将备份存储在swift中统一管理,支撑集群的云存储功能;glanee组件为虚拟机提供镜像服务,支撑集群的应用部署镜像环境,并将镜像存储在swift中统一管理;swfit组件为集群保障对象存储功能,主要管理镜像和备份存储能力;ceilometer组件为nova、neutron、cinder、glanee等组件提供监控能力,用于集群的监控管理功能;horizon组件为nova、neutron、cinder、glance、swift、keystone等组件提供可视化界面,便于各个组件功能的可视化操作管理;heat组件为集群提供编排能力,能够实现各个组件功能的应用编排。
1.2 Kubernetes概述
Kubernetes是由Google公司开源实现的跨主机集群自动部署、扩展管理容器化集群的系统。利用Kubemetes集群便于管理跨主机运行的容器化应用,能够对容器化应用进行编排、运行、维护和扩展等,可以实现容器的负载均衡、资源监控、日志访问与获取、认证和授权、健康检查、水平扩展和自动发现等功能。Kubernetes架构如图2所示。
Kubernetes集群分为Master和Minion两种类型的节点,Master为控制节点,Minion为计算节点。Master节点上部署着Kubernetes的主要控制组件:kube-apiserver、kube-controller-manager、kube-scheduler、etcd等,能够处理Kubemetes API请求,能够融合控制器处理集群中常规任务的后台进程,能够调度Kubernetes集群中部署的最小单元模型pod,能够提供存储Kubernetes集群的数据信息的键值对存储服务。Minion节点上部署着kubelet、kube-proxy等组件,用于维护pod的运行时环境,kubelet是pod的代理服务,能够通过apiserver或本地配置实现监视已分配的pod、加载volume、下载密钥、启动运行pod中的容器、定时执行健康检测、报告pod运行状态、创建镜像备份等功能。kube-proxy能够通过在主机节点上维护一个网络规则和连接转发来实现Kubernetes抽象出的服务概念,底层通过iptables实现流量转发。