CN113504916A - 一种代码更新方法和装置、计算机设备及介质 - Google Patents

一种代码更新方法和装置、计算机设备及介质 Download PDF

Info

Publication number
CN113504916A
CN113504916A CN202110834491.XA CN202110834491A CN113504916A CN 113504916 A CN113504916 A CN 113504916A CN 202110834491 A CN202110834491 A CN 202110834491A CN 113504916 A CN113504916 A CN 113504916A
Authority
CN
China
Prior art keywords
code
platform
update
image file
updating
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110834491.XA
Other languages
English (en)
Inventor
刘炜
邵振军
卞雪达
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BOE Technology Group Co Ltd
Original Assignee
BOE Technology Group Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BOE Technology Group Co Ltd filed Critical BOE Technology Group Co Ltd
Priority to CN202110834491.XA priority Critical patent/CN113504916A/zh
Publication of CN113504916A publication Critical patent/CN113504916A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于Kubernetes平台的代码更新方法和装置、计算机设备及介质,其中一实施例的基于Kubernetes平台的代码更新方法,包括:服务器响应于更新的代码生成更新程序包并发送至Kubernetes平台的工作节点以更新工作节点的当前运行容器;响应于当前运行容器的正常运行,代码操作平台调用工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中。本发明提供的代码更新方法通过将更新程序包直接发送至工作节点来更新该工作节点的当前运行容器并利用该工作节点的应用容器引擎构建镜像文件,使得能够简化Kubernetes平台的代码更新流程,提高开发效率,具有广泛的应用前景。

Description

一种代码更新方法和装置、计算机设备及介质
技术领域
本发明涉及互联网技术领域,特别是涉及一种基于Kubernetes平台的代码更新方法和装置、计算机设备及介质。
背景技术
DevOps(Development和Operation的组合词,中译开发运维自动化一体化)和Kubernetes(简称K8S)给IT行业带来了前所未有的高效能。DevOps完成了从代码提交到部署的自动化,完全不再需要人为干预,从而解放了开发、运维人员。而容器化使得服务器部署更加便捷,Kubernetes对容器的治理和生命周期管理,使得容器化部署可以更安全、稳定的运行。
目前,对于生产环境,DevOps和Kubernetes的结合几乎完美,但在开发环境中,开发人员提交代码后需要等待一段时间服务才能更新,即使仅对代码做了很少的更改,也需要DevOps与Kubernetes跑完约定好的所有流程,而在开发环境,通常并不需要服务时时刻刻都是可用的,因此为安全牺牲的这一部分时间并不值得,而且目前在DevOps和Kubernetes的约定里,并不能删除这些步骤。
发明内容
为了解决上述问题至少之一,本发明第一个方面提供一种基于Kubernetes平台的代码更新方法,包括:
服务器响应于更新的代码生成更新程序包并发送至Kubernetes平台的工作节点以更新工作节点的当前运行容器;
响应于当前运行容器的正常运行,服务器调用工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中。
在一些可选的实施例中,服务器包括代码仓库和代码操作平台,服务器响应于更新的代码生成更新程序包并发送至Kubernetes平台的工作节点以更新工作节点的当前运行容器进一步包括:
响应于代码仓库的更新的代码,代码操作平台从代码仓库拉取更新的代码;
代码操作平台根据更新的代码进行编译生成更新程序包;
代码操作平台将更新程序包发送至Kubernetes平台的工作节点的本地目录,以使得本地目录根据更新程序包修改当前运行容器的底层文件。
在一些可选的实施例中,响应于当前运行容器的正常运行,服务器调用工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中进一步包括:
响应于当前运行容器的正常运行,代码操作平台调用工作节点的应用容器引擎根据当前运行容器构建第一镜像文件;
代码操作平台将第一镜像文件存储到镜像仓库中。
在一些可选的实施例中,在响应于当前运行容器的正常运行,代码操作平台调用工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中之后,代码更新方法还包括:
响应于Kubernetes平台的空闲状态,代码操作平台向Kubernetes平台的管理节点发送更新请求以更新Kubernetes平台的调度信息。
在一些可选的实施例中,响应于Kubernetes平台的空闲状态,代码操作平台向Kubernetes平台的管理节点发送更新请求以更新Kubernetes平台的调度信息进一步包括:
响应于Kubernetes平台的空闲状态,代码操作平台向Kubernetes平台的管理节点发送更新请求,以使得管理节点的Schedule计算调度信息并存储在管理节点的调度信息数据库中。
在一些可选的实施例中,在响应于Kubernetes平台的空闲状态,代码操作平台向Kubernetes平台的管理节点发送更新请求以更新Kubernetes平台的调度信息之后,代码更新方法还包括:
代码操作平台根据更新程序包调用本地应用容器引擎构建第二镜像文件并将第二镜像文件存储到镜像仓库中。
在一些可选的实施例中,镜像仓库为Harbor、Nexus、Registry和Portus中的一个。
本发明第二方面提供一种实现上文所述代码更新方法的代码更新装置,包括:
生成单元,配置为响应于更新的代码生成更新程序包并发送至Kubernetes平台的工作节点以更新工作节点的当前运行容器;
更新单元,配置为响应于当前运行容器的正常运行,调用工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中。
在一些可选的实施例中,还包括:
调度信息更新单元,配置为响应于Kubernetes平台的空闲状态,向Kubernetes平台的管理节点发送更新请求以更新Kubernetes平台的调度信息;以及
镜像构建单元,配置为根据更新程序包调用本地应用容器引擎构建第二镜像文件并将第二镜像文件存储到镜像仓库中。
本发明的第三个方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上文所述的方法。
本发明的第四个方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如上文所述的方法。
本发明的有益效果如下:
本发明针对目前现有的问题,制定一种基于Kubernetes平台的代码更新方法和装置、计算机设备及介质,并通过将更新程序包直接发送至工作节点来更新该工作节点的当前运行容器并利用该工作节点的应用容器引擎构建镜像文件,使得Kubernetes不必再按照与应用容器引擎约定的全流程走完更新过程,从而能够简化Kubernetes平台的代码更新流程,简化了开发环境中从代码提交服务的流程,通过省去不必要的流程,能够缩短了开发人员的等待时间,省到提高开发效率,具有广泛的应用前景。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出根据现有技术的基于Kubernetes平台的代码更新方法的流程框图;
图2示出根据本发明一实施例的基于Kubernetes平台的代码更新方法的示意性流程图;
图3示出根据本发明实施例的应用基于Kubernetes平台的代码更新方法的硬件架构的示意性框图;
图4示出根据本发明实施例的基于Kubernetes平台的代码更新方法中一部分步骤的流程框图;图5示出图4所示的基于Kubernetes平台的代码更新方法的一部分步骤的具体方法流程图;
图6示出根据本发明另一实施例的基于Kubernetes平台的代码更新方法中一部分步骤的流程框图;
图7示出根据本发明另一实施例的基于Kubernetes平台的代码更新方法中一部分步骤的流程框图;
图8示出根据本发明实施例的基于Kubernetes平台的代码更新方法中另一部分步骤的流程框图;
图9示出图8所示的基于Kubernetes平台的代码更新方法的另一部分步骤所包括的具体方法流程图;
图10示出根据本发明一实施例的基于Kubernetes平台的代码更新装置的示意性结构框图;
图11示出根据本发明另一实施例的基于Kubernetes平台的代码更新装置的示意性结构框图;以及
图12示出本发明的另一个实施例所述的一种计算机设备的结构示意图。
具体实施方式
为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
需要在此说明的是,为了叙述简便,下文中均以简称K8S表示Kubernetes平台。
DovOps是一组过程、方法与系统的统称,用于开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。K8S是一个全新的基于容器技术的分布式架构领先方案,同时它也是一个开放的平台,它用于管理云平台中多个主机上的容器化的应用,它的存在使得我们并不需要再考虑服务宕机和灰度发布的问题,而在此之前这是生产上不得不面对的两个难题。
然而,发明人经研究发现,在现有技术中,K8S平台与DevOps已经约定了完整的更新流程,使得每次更新过程均非常繁琐、耗时。如图1所示,开发人员通过一个或多个客户端101向服务器10上传程序代码,服务器10包括代码仓库103和代码操作平台105,代码操作平台105自代码仓库103拉取更新的代码并进行更新的代码的编译和打包生成更新程序包,并调用本地应用容器引擎构建更新程序包的镜像文件。
代码操作平台将构建好的镜像文件上传至镜像仓库12,同时向K8S平台的管理节点11-0发送更新请求,该更新请求可以直接送达管理节点11-0的控制单元112(kubelet)也可以送达通信单元115(apiserver)。管理节点11-0的控制单元112接收到更新请求后,经由通信单元115传输至Schedule 114以对更新请求进行计算得到更新的调度信息,并将该调度信息经由通信单元115写入管理节点的数据库113(etcd)。
基于更改请求,K8S平台的工作节点11-1的控制单元116(kubelet),例如工作节点11-1之一的测试节点通过管理节点11-0的通信单元115从数据库113中读取其存储的调度信息,并将数据库113中的调度信息发送至该测试节点11-1的应用容器引擎117;应用容器引擎117自镜像仓库12拉取本次更新代码的镜像文件,启动容器118(container)并将镜像文件写入新的容器118,待新的容器118正常运行后关闭运行原代码的容器118,基于该更新将新的容器信息写入工作节点11-1的本地目录,至此,对于一次代码更新才跑完整个更新流程。本领域技术人员应理解,pod是K8S平台中控制单元能够控制的最小直接控制单元,但是最终启动和更新的是容器(container)中的内容。下文中,容器指的是容器(container)虽然未具体明示,应理解是经由pod启动的容器(container)。
由以上分析可知,目前每一次更新流程均需要将镜像文件存入镜像仓库并向K8S平台的管理节点发送更新请求,并且需要在该管理节点中完成调度信息的计算与存储,并需要管理节点的控制单元读取信息并调度工作节点的应用容器引擎从镜像仓库下载镜像文件启动新的容器才能完成容器的更新。虽然该流程稳定可靠,但是对于开发人员来说,往往仅仅是对代码进行了微小的更改并且仅需要在测试节点上进行更新测试来获知结果,并不需要服务时时刻刻均是可用的,在这种情况下,为安全可靠牺牲的时间则是不值得的。然而,目前K8S平台与DevOps的约定里,甚至不能够删除这些不必要的更新流程。
为了解决以上问题至少之一,如图2所示,本发明的实施例提供一种基于K8S平台的代码更新方法,包括:
S1、服务器响应于更新的代码生成更新程序包并发送至K8S平台的工作节点以更新工作节点的当前运行容器;
S2、响应于当前运行容器的正常运行,代码操作平台调用工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中。
在本实施例中,通过将更新程序包直接发送至工作节点来更新该工作节点的当前运行容器并利用该工作节点的应用容器引擎构建镜像文件,使得K8S不必再按照与应用容器引擎约定的全流程走完更新过程,从而能够简化K8S平台的代码更新流程,简化了开发环境中从代码提交服务的流程,通过省去不必要的流程,能够缩短了开发人员的等待时间,省到提高开发效率,具有广泛的应用前景。
为了更好的理解本发明的实施例,先结合硬件结构描述DevOps与K8S平台的硬件基础。
图3示出基于K8S平台的DevOps自动化系统架构,包括:开发端20、管理节点21-0、多个工作节点21-1和镜像仓库22。
其中,开发端20包括:开发人员的客户端的一台或多台电脑201,以及服务端,用于计算代码的开发、复查、集成、编译和版本控制。具体结合图4所示,服务端包括代码仓库203(即,代码仓库)、代码操作平台205,代码操作平台实时监控代码仓库203中是否有代码更新,当发现更新的代码时,自自动拉取更新的代码并对代码进行编译和打包。
管理节点21-0基于K8S平台实现,参照图8所示,用于管理镜像仓库22和其下属的多个工作节点21-1。其中,工作节点21-1可以为测试节点、或运维节点等的其它工作节点。每个工作节点包括控制单元216、应用容器引擎217、容器218、本地目录219。
镜像仓库22用于以应用容器引擎镜像的形式存储计算机代码。镜像仓库22可以为Harbor、Nexus、Registry和Portus中的一个。
下面参照具体的示例详细描述本发明的代码更新方法的详细流程。
步骤S1、服务器响应于更新的代码生成更新程序包并发送至K8S平台的工作节点以更新所述工作节点的当前运行容器。
结合图4和图5所示,步骤S1进一步具体包括步骤S12至步骤S13。
具体地,服务器包括代码仓库203和代码操作平台205,代码仓库203例如可以为Gitlab,代码操作平台205例如可以为Jenkins,但本发明并不限于此。开发人员通过本地的客户端向代码仓库203提交更新的代码,在步骤S11中,响应于代码仓库203的更新的代码,代码操作平台205从代码仓库203自动拉取更新的代码。
在步骤S12中,代码操作平台205根据更新的代码进行编译生成更新程序包。在该步骤中,代码操作平台205只对更新的代码进行编译打包,但不构建镜像文件。
在步骤S13中,编译完成后,代码操作平台205将更新程序包发送至K8S平台的工作节点的本地目录219,以使得本地目录219根据更新程序包修改当前运行容器的底层文件。
在本实施例中,根据代码操作平台205的更新程序包,对当前运行容器(container)的底层文件进行修改,实现了更新代码在工作节点的同步,从而使得在该容器的下次运行时将直接运行更新的底层数据,因此直接完成对该工作节点的容器更新而不必再经由管理节点中的多个流程,节约了代码更新时间,使得开发人员能够快速得到更新代码的运行结果,大大节约开发时间。
其中,底层文件是指容器化引擎,例如Docker,中的文件对应在宿主机中的位置,例如存储在测试节点21-1中的数据目录219中。容器218虽然是一个隔离环境,但是它的文件也是同样放在宿主机中的。如果容器化引擎中的目录或文件被挂载出来,那么它可以放到宿主机或共享存储的任意位置。而如果没有被挂载出来,则会放到容器化引擎的宿主机的数据目录下,例如若容器化引擎217为Docker,容器为Container218,默认在宿主机的数据目录219的/var/lib/docker目录下。
在该示例中,假定开发人员仅是对代码中的一小部分进行了更新改进,并需要对该更新改进进行测试,工作节点21-1默认为测试节点。但本发明并不旨在对工作节点21-1进行限制,在需要时,本次更新过程也可以在代码操作平台与其它工作节点之间进行。
考虑到对更新的代码的存储问题,在本发明的实施例中,在步骤S2中,响应于当前运行容器的正常运行,代码操作平台调用工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中。
可选地,如图6所示,K8S平台还包括Kube-proxy 220,通过Kube-proxy 220可以经由网络将客户端的用户界面与工作节点21-1的容器联通,从而通过外部的web的用户界面可以直观判断服务是否正常运行。
进一步可选地,如图7所示,工作节点21-1还包括网桥221,在代码操作平台205主动调用容器化引擎217来启动容器218时,其通过网桥221完成该访问调用过程,同时利用网桥221,可以作为另外一种与Web端的用户界面联通的方式,从而通过外部的web的用户界面可以直观判断服务是否正常运行。
以上均可以作为间接判断服务运行情况的方式,除此以外,还可以使用代码查看的命令行方式。具体可以为:通过为服务器连接鼠标、键盘和显示器,利用本地登录服务器;另外也可以通过xshell、mobax等工具远程登录到服务器。命令行方式的代码例如具体可以为:
以上均可以作为间接判断服务运行情况的方式,除此以外,还可以使用代码查看的命令行方式。具体可以为:通过为服务器连接鼠标、键盘和显示器,利用本地登录服务器;另外也可以通过xshell、mobax等工具远程登录到服务器。
例如:通过docker的命令行方式。
第一,通过K8S平台查看某个容器组pod启动在哪个工作节点,其中,容器组pod为K8S平台的最小管理单元,容器组pod包括1到n个容器Container。
具体的,可知容器Container启动在node04节点。
Figure BDA0003176625290000081
第二,登录启动的工作节点查看容器Container。
具体的:例如输入dockerps|grep CONTAINER_NAME查看容器,返回容器ID:208515271e23。
Figure BDA0003176625290000082
第三,进入容器组pod的主容器Container。
具体的:例如输入docker exec–it 509208882b6e sh。
Figure BDA0003176625290000083
第四,查看容器工作目录下文件。
具体的:例如输入查看目录指令“ls”,输出该目录下内容:文件app.jar,子目录agent目录、dev目录、home目录、lib64目录等
Figure BDA0003176625290000084
再例如:通过K8S的命令行方式
首先,通过K8S的kubectl命令查看该容器。
Figure BDA0003176625290000085
其次,通过K8S的kubectl命令进入该容器。
Figure BDA0003176625290000091
最后,查看容器工作目录下的文件。
具体的:例如输入查看目录指令“ls”,输出该目录下内容:文件app.jar,子目录agent目录、dev目录、home目录、lib64目录等
Figure BDA0003176625290000092
可知,两种使用命令行方式查看到的文件是一致的。
参照图8和图9,在步骤S21中,响应于当前运行容器218的正常运行,代码操作平台205调用工作节点的应用容器引擎根据当前运行容器构建第一镜像文件。容器化引擎例如可以为Docker,但本申请并不限于此,其他种类的容器化引擎也是可以的。本领域技术人员应理解,这里的当前运行容器即为已经更改了底层文件后的更新的容器。
更为具体地,通常镜像文件是多层只读文件,应用容器引擎只能够读取镜像文件并根据镜像文件的内容启动具体容器而不能够对镜像文件进行修改生成新的镜像文件。在本发明中,代码操作平台调用工作节点21-1上的应用容器引擎服务,通过应用容器引擎在镜像文件的上层增加一层读写层,通过增加读写层后的镜像文件启动容器218后,则该容器218具有读和写的能力,基于正常运行的更新的容器218,将其上层的读写层更改为只读层,则经由工作节点上的应用容器引擎服务构建更新后的容器218的第一镜像文件。
在步骤S22中,代码操作平台将第一镜像文件存储到镜像仓库22中。这里的镜像仓库22为Harbor、Nexus、Registry和Portus中的一个。本领域技术人员应理解,本发明的实施例并不限于此,其它类型的镜像仓库也是可以的。
通过以上设置,服务端的代码操作平台不必构建镜像文件并将其存储到镜像仓库,而是在代码操作平台对更新代码进行编译生成更新程序包后直接将数据同步到本地目录中,并且代码操作平台直接调用工作节点21-1的应用容器引擎,由工作节点21-1的应用容器引擎基于正常运行后的更新的容器构建镜像文件,使得构建镜像文件的过程并不增加开发人员获取更新代码的运行结果的时间,进一步缩短了开发时间。
在一些可选的实施例中,若开发人员确定更新的代码是稳定可用的,则可以在闲时进一步在K8S上跑完一遍完整的流程,在管理节点中更新调度信息,从而可以使得其它工作节点也可以得到更新的代码程序包,完成本次代码更新。
因而可选地,在响应于当前运行容器的正常运行,代码操作平台调用工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中之后,代码更新方法还包括:响应于K8S平台的空闲状态,代码操作平台向K8S平台的管理节点发送更新请求以更新K8S平台的调度信息。
具体地,参照图8所示,在利用精简的流程对测试节点完成更新后,在确定K8S平台处于的空闲状态时,代码操作平台205向管理节点21-0的通信单元215或者管理单元212发送更新请求,Schedule 214根据其它工作节点的资源计算调度信息,并经由通信单元215将计算得到的调度信息存储到数据库213中,管理单元212定时查询数据库213中的调度信息,以获取各节点上的期望状态,例如运行何种容器、运行的副本数量、网络或者存储如何配置等。
因此,通过以上方式,使得对K8S平台的开发过程中的某一工作节点的代码更新与其它工作节点的代码更新过程区分开,在开发时在某一工作节点上以直接修改容器的底层文件的方式快速完成代码更新并获知运行结果,而对有必要的已经验证稳定的更新代码,利用闲时告知K8S平台的管理节点以正常流程完成工作节点集群的代码更新过程,避免不必要的更新过程对开发时间的浪费,节约了开发时间,具有广泛的应用前景。
考虑到使用更新代码构建镜像文件具有更好的稳定性,在一些可选的实施例中,参照图8中虚线箭头表示的流程所示,在响应于K8S平台的空闲状态,代码操作平台205向K8S平台的管理节点发送更新请求以更新K8S平台的调度信息之后,代码更新方法还包括:代码操作平台205根据更新程序包调用本地应用容器引擎构建第二镜像文件并将第二镜像文件存储到镜像仓库中。
通过该设置,使得随后进行更新的工作节点均可以在镜像仓库中下载稳定的镜像文件,获得良好的运行效果。
相应于基于K8S平台的代码更新方法,参照图10所示,本发明的实施例还提供一种实现上文所述代码更新方法的代码更新装置,包括:
生成单元,配置为响应于更新的代码,生成更新程序包并发送至K8S平台的工作节点以更新工作节点的当前运行容器;
更新单元,配置为响应于当前运行容器的正常运行,调用工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中。
在本实施例中,通过将更新程序包直接发送至工作节点来更新该工作节点的当前运行容器并利用该工作节点的应用容器引擎构建镜像文件,使得K8S不必再按照与应用容器引擎约定的全流程走完更新过程,从而能够简化K8S平台的代码更新流程,简化了开发环境中从代码提交服务的流程,通过省去不必要的流程,能够缩短了开发人员的等待时间,省到提高开发效率,具有广泛的应用前景。
在一些可选的实施例中,参照图11所示,代码更新装置还包括:
调度信息更新单元,配置为响应于K8S平台的空闲状态,向K8S平台的管理节点发送更新请求以更新K8S平台的调度信息;以及
镜像构建单元,配置为通过代码操作平台根据更新程序包调用本地应用容器引擎构建第二镜像文件并将第二镜像文件存储到镜像仓库中。
通过以上方式,使得对K8S平台的开发过程中的某一工作节点的代码更新与其它工作节点的代码更新过程区分开,在开发时在某一工作节点上以直接修改容器的底层文件的方式快速完成代码更新并获知运行结果,而对有必要的已经验证稳定的更新代码,利用闲时告知K8S平台的管理节点以正常流程完成工作节点集群的代码更新过程,避免不必要的更新过程对开发时间的浪费,节约了开发时间,具有广泛的应用前景。
本发明的另一个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现:响应于代码仓库的更新代码,代码操作平台生成更新程序包并发送至K8S平台的工作节点以更新工作节点的当前运行容器;响应于当前运行容器的正常运行,代码操作平台调用工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中。
在实际应用中,所述计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
如图12所示,本发明的另一个实施例提供的一种计算机设备的结构示意图。图12显示的计算机设备13仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图12所示,计算机设备13以通用计算设备的形式表现。计算机设备13的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机设备13典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备13访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备13可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图12未显示,通常称为“硬盘驱动器”)。尽管图12中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备13也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备13交互的设备通信,和/或与使得该计算机设备13能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口52进行。并且,计算机设备13还可以通过网络适配器50与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图12所示,网络适配器50通过总线18与计算机设备13的其它模块通信。应当明白,尽管图12中未示出,可以结合计算机设备13使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理器单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的一种基于K8S平台的代码更新方法。
本发明针对目前现有的问题,制定一种基于K8S平台的代码更新方法和装置、计算机设备及介质,并通过将更新程序包直接发送至工作节点来更新该工作节点的当前运行容器并利用该工作节点的应用容器引擎构建镜像文件,使得K8S不必再按照与应用容器引擎约定的全流程走完更新过程,从而能够简化K8S平台的代码更新流程,简化了开发环境中从代码提交服务的流程,通过省去不必要的流程,能够缩短了开发人员的等待时间,省到提高开发效率,具有广泛的应用前景。
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

Claims (11)

1.一种基于Kubernetes平台的代码更新方法,其特征在于,包括:
服务器响应于更新的代码生成更新程序包并发送至Kubernetes平台的工作节点以更新所述工作节点的当前运行容器;
响应于所述当前运行容器的正常运行,所述服务器调用所述工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中。
2.根据权利要求1所述的代码更新方法,其特征在于,所述服务器包括代码仓库和代码操作平台,所述服务器响应于更新的代码生成更新程序包并发送至Kubernetes平台的工作节点以更新所述工作节点的当前运行容器进一步包括:
响应于代码仓库的更新的代码,所述代码操作平台从代码仓库拉取所述更新的代码;
所述代码操作平台根据所述更新的代码进行编译生成更新程序包;
所述代码操作平台将所述更新程序包发送至Kubernetes平台的工作节点的本地目录,以使得所述本地目录根据所述更新程序包修改当前运行容器的底层文件。
3.根据权利要求2所述的代码更新方法,其特征在于,所述响应于所述当前运行容器的正常运行,所述服务器调用所述工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中进一步包括:
响应于所述当前运行容器的正常运行,所述代码操作平台调用所述工作节点的应用容器引擎根据所述当前运行容器构建第一镜像文件;
所述代码操作平台将所述第一镜像文件存储到镜像仓库中。
4.根据权利要求1-3中任一项所述的代码更新方法,其特征在于,在所述响应于所述当前运行容器的正常运行,所述代码操作平台调用所述工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中之后,所述代码更新方法还包括:
响应于Kubernetes平台的空闲状态,所述代码操作平台向Kubernetes平台的管理节点发送更新请求以更新Kubernetes平台的调度信息。
5.根据权利要求4所述的代码更新方法,其特征在于,所述响应于Kubernetes平台的空闲状态,所述代码操作平台向Kubernetes平台的管理节点发送更新请求以更新Kubernetes平台的调度信息进一步包括:
响应于Kubernetes平台的空闲状态,所述代码操作平台向Kubernetes平台的管理节点发送更新请求,以使得所述管理节点的Schedule计算调度信息并存储在管理节点的调度信息数据库中。
6.根据权利要求4所述的代码更新方法,其特征在于,在所述响应于Kubernetes平台的空闲状态,所述代码操作平台向Kubernetes平台的管理节点发送更新请求以更新Kubernetes平台的调度信息之后,所述代码更新方法还包括:
所述代码操作平台根据所述更新程序包调用本地应用容器引擎构建第二镜像文件并将所述第二镜像文件存储到镜像仓库中。
7.根据权利要求1所述的代码更新方法,其特征在于,所述镜像仓库为Harbor、Nexus、Registry和Portus中的一个。
8.一种实现如权利要求1-7中任一项所述代码更新方法的代码更新装置,其特征在于,包括:
生成单元,配置为响应于更新的代码生成更新程序包并发送至Kubernetes平台的工作节点以更新所述工作节点的当前运行容器;
更新单元,配置为响应于所述当前运行容器的正常运行,调用所述工作节点的应用容器引擎构建第一镜像文件并存储到镜像仓库中。
9.根据权利要求8所述的代码更新装置,其特征在于,还包括:
调度信息更新单元,配置为响应于Kubernetes平台的空闲状态,根据Kubernetes平台的管理节点接收的更新请求更新Kubernetes平台的调度信息;以及
镜像构建单元,配置为根据所述更新程序包调用本地应用容器引擎构建第二镜像文件并将所述第二镜像文件存储到镜像仓库中。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一项所述的方法。
CN202110834491.XA 2021-07-23 2021-07-23 一种代码更新方法和装置、计算机设备及介质 Pending CN113504916A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110834491.XA CN113504916A (zh) 2021-07-23 2021-07-23 一种代码更新方法和装置、计算机设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110834491.XA CN113504916A (zh) 2021-07-23 2021-07-23 一种代码更新方法和装置、计算机设备及介质

Publications (1)

Publication Number Publication Date
CN113504916A true CN113504916A (zh) 2021-10-15

Family

ID=78014319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110834491.XA Pending CN113504916A (zh) 2021-07-23 2021-07-23 一种代码更新方法和装置、计算机设备及介质

Country Status (1)

Country Link
CN (1) CN113504916A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024067117A1 (en) * 2022-09-30 2024-04-04 International Business Machines Corporation Image optimization for pipeline workloads

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024067117A1 (en) * 2022-09-30 2024-04-04 International Business Machines Corporation Image optimization for pipeline workloads

Similar Documents

Publication Publication Date Title
US11288557B2 (en) Long running workflows for document processing using robotic process automation
KR102493449B1 (ko) 엣지 컴퓨팅 테스트 방법, 장치, 전자 장치 및 컴퓨터 판독 가능 매체
CN109120678B (zh) 用于分布式存储系统的服务托管的方法和装置
US20230297488A1 (en) Long running workflows for robotic process automation
CN110196731B (zh) 一种运维系统、方法及存储介质
WO2019195121A1 (en) Digital worker management system
JPH07146844A (ja) 製造装置の制御および調整を行う統合オートメーション開発システムおよび方法
US11110601B2 (en) Scheduling robots for robotic process automation
US20100162226A1 (en) Zero downtime mechanism for software upgrade of a distributed computer system
US20130067476A1 (en) Automatic transcoding and semantic adaptation between scripting and workflow systems
US20090157793A1 (en) Apparatus, system and method of executing monolithic application programs on grid computing systems
CN113312037A (zh) 应用于微服务的数据处理方法、装置、设备和存储介质
CN113934464A (zh) Linux系统中启动安卓应用的方法、装置和电子设备
CN113900834B (zh) 基于物联网技术的数据处理方法、装置、设备及存储介质
CN111818145B (zh) 一种文件传输方法、装置、系统、设备及存储介质
CN110494849B (zh) 用于确定跨平台应用迁移的成功的系统和方法
CN113504916A (zh) 一种代码更新方法和装置、计算机设备及介质
CN113191889A (zh) 风控配置方法、配置系统、电子设备及可读存储介质
CN113760638A (zh) 一种基于kubernetes集群的日志服务方法和装置
CN113296796A (zh) 项目发布方法、装置、系统、存储介质、电子设备
US20200174770A1 (en) Webserver interface for deployment management tool
CN116051031A (zh) 项目调度系统、介质及电子设备
CN114489704A (zh) 基于策略的版本编译部署方法及装置
CN112559006A (zh) 企业客户端自动升级方法、系统、设备及存储介质
CN112083939A (zh) 批量升级方法、装置、系统及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination