一种基于Kubernetes的容器开发环境自动打包方法及系统
技术领域
本发明属于开发环境部署技术领域,具体涉及一种基于Kubernetes的容器开发环境自动打包方法及系统。
背景技术
随着人工智能、云计算、大数据等新一代信息技术的快速发展以及相关商业应用的快速推广,我国对新一代信息技术人才的需求越来越大。目前高校计算机实验室、在线网络教育平台等为新一代信息技术人才培养提供了多样化的计算机实验环境,而新一代信息技术学科的上机实践往往需要分布式集群实验环境,在高校的日常教学与科研环节中,为了方便计算机实验结果的复现、版本的管理以及进一步开发,经常需要统一实验环境。而传统的VM虚拟化技术却存在恢复时间长、占用资源多、打包传输繁琐等各类问题不易于管理。
发明内容
有鉴于此,本发明提出了一种基于Kubernetes的容器开发环境自动打包方法及系统,用于解决进行开发环境部署时无法快速打包的问题。
本发明第一方面,公开一种基于Kubernetes的容器开发环境自动打包方法,所述方法包括:
为教学平台搭建私有云镜像管理仓库,并进行基础配置;
创建新的镜像环境或加载过往镜像环境;
获取用户对镜像环境的修改或升级操作后提交的发布请求;
根据用户提交的发布请求启动对应的脚本并调用对应API程序对容器内容和教学平台当前镜像环境以及私有云镜像管理仓库中的已有镜像进行综合判断,实现容器的自动发布打包。
优选的,所述获取用户对镜像环境的修改或升级操作后提交的发布请求之前还包括:
通过预先搭建的Kubernetes框架,编写Kubernetes适用的API接口和脚本,所述脚本包括用于对应的镜像环境创建或加载的脚本和镜像打包脚本。
优选的,所述获取用户对镜像环境的修改或升级操作后提交的发布请求具体包括:
确认用户对镜像环境的修改或升级操作修改完成并准备发布时,通过API查找平台现有镜像版本以及相关描述信息,待用户确认需要发布当前版本后,要求用户为当前版本添加描述信息并向平台提交发布请求。
优选的,所述根据用户提交的发布请求启动对应的脚本并调用对应API程序对容器内容和教学平台当前环境以及私有云已有镜像进行综合判断,实现容器的自动发布打包具体包括:
平台接收到用户提交的发布请求后,启动Kubernetes框架对应的脚本并调用对应API程序来确认当前存储卷是否正常;
若存储卷不正常,获取到存储卷的pv后查找对应的gfs-volume信息,先停用再启用volume中对应的存储卷,直至存储卷正常为止;
若存储卷正常,执行镜像打包脚本,完成容器的自动发布打包。
优选的,所述若存储卷不正常,获取到存储卷的pv后查找对应的gfs-volume信息,先停用再启用volume中对应的存储卷,直至存储卷正常为止具体包括:
通过Kubernetes框架对应的脚本检查存储卷是否有状态不正常的pod存在,确定不正常的pod所用到的存储卷;
获取到不正常的pod所用到的存储卷的pv后,查找对应的gfs-volume信息,对于gfs-volume中brick的Online状态为N的卷,先停用再启用,直至存储卷正常为止;如果经过设定次数的停用与启用后依然有异常的情况,提示用户手动检查平台。
优选的,所述若存储卷正常,准备执行镜像打包脚本,完成容器的自动发布打包具体包括:
确认存储卷正常后,准备执行镜像打包脚本,将打包脚本将用户的描述信息以及当前容器ID保存并停止当前容器运行;
所述打包脚本携带描述信息和容器ID调用Docker命令完成镜像向私有云平台的申请;
完成申请后,将镜像导出成压缩文件并上传至平台所在的物理机上,将所述压缩文件push至已经预先搭建好的私有云容器管理平台;
将以上容器的自动发布打包记录保存至数据库以便后续查找。
优选的,执行镜像打包脚本,完成容器的自动发布打包的过程中,如果因为私有云仓库容量满或网络原因导致无法正常恢复,通过日志留下相应的记录,并通过数据库进行对应的回滚操作,确保数据的一致性。
本发明第二方面,公开一种基于Kubernetes的容器开发环境自动打包系统,所述系统包括:
环境管理模块:为教学平台搭建私有云镜像管理仓库,并进行基础配置;创建新的镜像环境或加载过往镜像环境;
数据提交模块:获取用户对镜像环境的修改或升级操作后提交的发布请求;
自动打包模块:根据用户提交的发布请求启动对应的脚本并调用对应API程序对容器内容和教学平台当前环境以及私有云镜像管理仓库中的已有镜像进行综合判断,实现容器的自动发布打包。
本发明第三方面,公开一种电子设备,其特征在于,包括:至少一个处理器、至少一个存储器、通信接口和总线;
其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令,以实现如本发明第一方面所述的方法。
本发明第四方面,公开一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机实现如本发明第一方面所述的方法。
本发明相对于现有技术具有以下有益效果:
1)本发明通过使用当前流行的容器技术,接合预先搭建的Kubernetes框架,通过编写Kubernetes适用的API接口和脚本对容器内容和平台当前环境以及私有云已有镜像进行综合判断,实现了容器自动化打包机制。
2)本发明根据用户提交的发布请求启动Kubernetes框架对应的脚本并调用对应API程序来确认当前存储卷是否正常;若存储卷不正常,通过先停用再启用修复对应的存储卷,直至存储卷正常为止;存储卷正常后,执行镜像打包脚本完成容器的自动发布打包。用户可以根据自身需要选择合适的开发环境进行部署,在高校的日常教学与科研环节中,可方便教学平台教学或实验结果的复现、版本的管理以及进一步开发,用户可根据需要快速统一实验环境,相对于传统的VM虚拟化技术,具有部署时间短、占用资源少、打包传输易于管理等优势。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的基于Kubernetes的容器开发环境自动打包方法流程示意图;
图2为本发明的基于Kubernetes的容器开发环境自动打包系统结构示意图。
具体实施方式
下面将结合本发明实施方式,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
请参阅图1,本发明提出一种基于Kubernetes的容器开发环境自动打包方法,所述方法包括:
S1、为教学平台搭建私有云镜像管理仓库,并进行基础配置;
具体的通过Docker搭建私有云镜像管理仓库,编辑Docker配置文件完成其常用的各类配置使其正常工作。结合预先搭建的Kubernetes框架,编写Kubernetes适用的API接口和脚本,用于对应的镜像环境创建和镜像环境打包,包括用于对应的镜像环境创建或加载的脚本和用于开发环境自动化打包的镜像打包脚本。
S2、创建新的镜像环境或加载过往镜像环境;
具体的,调用Dockerfile脚本在教学平台上创建新的镜像环境或从私有云镜像管理仓库中加载过往镜像环境。Dockerfile是由一系列命令和参数构成的脚本,这些命令作用于基础镜像并最终创建一个新的镜像。可以用于开发环境的重复快速准确的生成,Docker通过读取Dockerfile中的指令自动生成映镜像。
S3、获取用户对镜像环境的修改或升级操作后提交的发布请求;
用户想进行开发环境进行部署时,依据自身需求对镜像环境进行修改或升级等操作,确认用户对镜像环境的修改或升级操作修改完成并准备发布时,向平台提交发布请求,通过API查找平台现有镜像版本以及相关描述信息,待用户确认需要发布当前版本后,提示用户为当前版本添加描述信息并向平台提交最终发布请求。
S4、平台接收到用户提交的发布请求后,启动Kubernetes框架对应的脚本并调用对应API程序来确认当前存储卷是否正常;
具体的,通过Kubernetes框架对应的脚本检查存储卷是否有状态不正常的pod存在,若有状态不正常的pod存在,则认为当前存储卷不正常。
S5、若存储卷不正常,获取到存储卷的pv后查找对应的gfs-volume信息,先停用再启用volume中对应的存储卷,直至存储卷正常为止;
所述步骤S4具体包括:
有状态不正常的pod存在,确定不正常的pod所用到的存储卷;
获取到不正常的pod所用到的存储卷的pv,查找对应的gfs-volume信息,对于gfs-volume中brick(块)的Online状态为N的卷,先停用再启用,直至存储卷正常为止;如果经过设定次数的停用与启用后依然有异常的情况,提示用户手动检查平台。遇到不可预见的无法恢复pod情况时,比如停用与启用达到3次依然有异常,说明该场景下场景通过停用启用存储卷无法有效使其恢复正常,需要用户自行检查错误原因,排除故障。
S6、若存储卷正常,执行镜像打包脚本,完成容器的自动发布打包。
具体的,确认存储卷正常后,通过执行镜像打包脚本完成容器的自动发布打包的原理为:
所述镜像打包脚本首先保存用户的描述信息以及当前容器ID并停止当前容器运行;
然后镜像打包脚本携带用户描述信息和容器ID调用Docker命令完成镜像向私有云平台的申请;
完成申请后,将镜像导出成压缩文件并上传至平台所在的物理机上,再将所述压缩文件push至已经预先搭建好的私有云容器管理平台;
最后将以上容器的自动发布打包记录保存至数据库以便后续查找。
此外,执行镜像打包脚本,完成容器的自动发布打包的过程中,如果因为私有云镜像管理仓库容量满或网络原因导致无法正常恢复,可通过日志留下相应的记录,并通过数据库进行对应的回滚操作,确保数据的一致性。
S7、完成容器的自动发布打包后,待下一次用户需要同步镜像时,进入步骤S2可再次调用脚本完成镜像环境的同步。
本发明通过使用Docker容器机制,结合预先搭建的Kubernetes框架,以及云计算等相关技术实现了基于Kubernetes的容器开发环境自动打包方法及系统。通过编写Kubernetes适用的API接口和脚本对容器内容和平台当前环境以及私有云已有镜像进行综合判断,实现了容器自动化打包机制。用户可以根据自身需要选择合适的开发环境进行部署,在高校的日常教学与科研环节中,可根据用户需要快速统一实验环境,为了方便教学平台教学或实验结果的复现、版本的管理以及进一步开发,相对于传统的VM虚拟化技术,具有部署时间短、占用资源少、打包传输易于管理等优势。
与上述方法实施例相对应,本发明还公开一种基于Kubernetes的容器开发环境自动打包系统,所述系统包括:
环境管理模块100:用于为教学平台搭建私有云镜像管理仓库,并进行基础配置;创建新的镜像环境或加载过往镜像环境;
数据提交模块200:用于获取用户对镜像环境的修改或升级操作后提交的发布请求;
自动打包模块300:用于根据用户提交的发布请求启动对应的脚本并调用对应API程序对容器内容和教学平台当前环境以及私有云镜像管理仓库中的已有镜像进行综合判断,实现容器的自动发布打包。所述自动打包模块具体包括:
异常判断单元301:用于接收到用户提交的发布请求后,启动Kubernetes框架对应的脚本并调用对应API程序来确认当前存储卷是否正常;
存储卷修复单元302:若存储卷不正常,获取到存储卷的pv后查找对应的gfs-volume信息,先停用再启用volume中对应的存储卷,直至存储卷正常为止;
镜像打包单元303:用于确认存储卷正常后,准备执行镜像打包脚本,通过镜像打包脚本保存用户的描述信息以及当前容器ID并停止当前容器运行;通过所述镜像打包脚本携带用户描述信息和容器ID调用Docker命令完成镜像向私有云平台的申请;完成申请后,将镜像导出成压缩文件并上传至平台所在的物理机上,将所述压缩文件push至已经预先搭建好的私有云容器管理平台;
本发明可根据用户提交的发布请求启动Kubernetes框架对应的脚本并调用对应API程序来确认当前存储卷是否正常;对存储卷不正常的情况,获取到存储卷的pv后查找对应的gfs-volume信息,先停用再启用volume中状态异常的存储卷,直至存储卷正常为止;若存储卷正常,执行镜像打包脚本,不需要复杂部署即可快速完成容器的自动发布打包及开发环境的自助管理。
本发明还公开一种电子设备,包括:至少一个处理器、至少一个存储器、通信接口和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令,以实现本发明前述的方法。
本发明还公开一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机实现本发明实施例所述方法的全部或部分步骤。所述存储介质包括:U盘、移动硬盘、只议存储器ROM、随机存取存储器RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以分布到多个网络单元上。本领域普通技术人员在不付出创造性的劳动的情况下,可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
以上所述仅为本发明的较佳实施方式而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。