CN112416523A - 一种使用RuntimeClass实现多容器运行时的方法 - Google Patents
一种使用RuntimeClass实现多容器运行时的方法 Download PDFInfo
- Publication number
- CN112416523A CN112416523A CN202011331992.8A CN202011331992A CN112416523A CN 112416523 A CN112416523 A CN 112416523A CN 202011331992 A CN202011331992 A CN 202011331992A CN 112416523 A CN112416523 A CN 112416523A
- Authority
- CN
- China
- Prior art keywords
- runtime
- runtimeclass
- container
- cluster
- cri
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 244000035744 Hura crepitans Species 0.000 claims description 9
- 241001026509 Kata Species 0.000 claims description 5
- 238000004883 computer application Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种使用RuntimeClass实现多容器运行时的方法,属于计算机应用技术领域。本发明的使用RuntimeClass实现多容器运行时的方法,通过利用kubernetesRuntimeClass容器运行时类的特性,在kubernetes集群内声明不同的容器运行时资源,实现在kubernetes集群中同时支持多种不同的容器运行时组件,并选择合适的运行时来调度不同的Pod,同时实现支持异构集群部署运行。该发明的使用RuntimeClass实现多容器运行时的方法能够极大的提高集群的扩展能力,同时使异构集群的配置和实现更加便捷灵活,具有很好的推广应用价值。
Description
技术领域
本发明涉及计算机应用技术领域,具体提供一种使用RuntimeClass实现多容器运行时的方法。
背景技术
Kubernetes是谷歌开源的容器集群管理系统,它的发展非常迅速,已经成为最流行和最活跃的容器编排系统。它提供了完善的集群管理能力,包括多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和服务发现机制、内建负载均衡器、故障发现和自我修复能力、服务滚动升级和在线扩容、可扩展的资源自动调度机制、多粒度的资源配额管理能力。
从架构上来说,Kubernetes的组件可以分为Master和Node两部分,其中Master是整个集群的大脑,所有的编排、调度、API访问等都由Master来负责。而Node则是负责运行具体的容器,并为容器提供存储、网络等必要功能。其中,Container runtime负责镜像管理以及Pod和容器的真正运行(CRI),默认的容器运行时为Docker。
在CRI之下,包括两种容器运行时的实现:
一种是内置的dockershim,实现了Docker容器引擎的支持以及CNI网络插件(包括kubenet)的支持。
另一种是外部的容器运行时,用来支持runc、containerd、gVisor等外部容器运行时。
在Kubernetes集群中,每个节点底层由一个叫做“容器运行时”的组件进行支撑,它负责诸如启停容器等操作。自从Kubernetes社区开源起,Docker即成为最广为人知的应用最广泛的运行时组件。尽管Docker是Kubernetes默认使用的运行时组件,但并非唯一可用的容器运行时。事实上,随着Kubernetes的广泛应用,仅仅依赖Docker这一个运行时无法满足越来越多样化的云原生应用场景。由此催生出越来越多的容器运行时组件。然而在早期的kubernetes中不管是Docker还是RKT等运行时组件,都需要通过内部、不太稳定的接口直接集成到kubelet的源码中。这样的集成过程要求不仅需要对kubelet内部原理十分熟悉,并且仅仅是更新容器运行时就需要重新发布kubernetes版本,这在Kubernetes社区中也造成了巨大的维护管理成本。这些因素都导致容器运行时发展初期难以灵活使用和扩展。
发明内容
本发明的技术任务是针对上述存在的问题,提供一种能够极大的提高集群的扩展能力,同时使异构集群的配置和实现更加便捷灵活的使用RuntimeClass实现多容器运行时的方法。
为实现上述目的,本发明提供了如下技术方案:
一种使用RuntimeClass实现多容器运行时的方法,该方法通过利用kubernetesRuntimeClass容器运行时类的特性,在kubernetes集群内声明不同的容器运行时资源,实现在kubernetes集群中同时支持多种不同的容器运行时组件,并选择合适的运行时来调度不同的Pod,同时实现支持异构集群部署运行。
作为优选,Kubelet与容器运行时通过CRI接口通信,CRI接口在创建沙箱时,支持选择运行时处理器。
作为优选,Kubelet使用Docker、CRI-O或Containerd作为运行时。
作为优选,Kubelet使用CRI-O作为运行时时,在创建沙箱时指定Kata或Runv作为运行时处理器。
作为优选,Kubelet使用Containerd作为运行时时,在创建沙箱时指定Runc作为运行时处理器。
Kubelet默认使用Docker作为运行时,只支持Docker一种容器运行时处理器。
Kubernetes支持RuntimeClass资源,可以管理集群中的运行时,并支持调度到对应运行时所在的节点上。
作为优选,当创建Pod时,若指定RuntimeClass资源,通过RuntimeClass获取到Pod运行的节点和需要执行的运行时处理器,调度到对应节点上创建Pod。
作为优选,使用RuntimeClass资源,同时配置并启用ApiServer和Kubelet组件内的RumtimeClass特性开关。在kubernetes 1.14版本及以后RuntimeClass作为Beta特性默认为启用状态。
作为优选,RuntimeClass的配置依赖于运行时接口CRI的实现,根据集群中的CRI实现来具体配置对应的RuntimeClass,如contanerd,cri-o等。需要说明的是,RuntimeClass假设集群中的节点配置是同构的(换言之,所有的节点在容器运行时方面的配置是相同的)。如果需要支持异构节点,需要确保RuntimeClass准入控制器的特性开关处于启用状态,并配置scheduling字段来支持pod被正确地调度到支持指定运行时的节点上。
与现有技术相比,本发明的使用RuntimeClass实现多容器运行时的方法具有以下突出的有益效果:所述使用RuntimeClass实现多容器运行时的方法可以优雅灵活的通过声明式定义任意符合标准规范的CRI容器运行时为kubernetes RuntimeClass资源,解决了在同一集群内混合使用多个容器运行时的难题,极大提高了集群的扩展能力,同时使异构集群的配置和实现更加便捷灵活,具有良好的推广应用价值。
附图说明
图1是本发明所述使用RuntimeClass实现多容器运行时的方法的示意图;
图2是本发明所述使用RuntimeClass实现多容器运行时的方法的操作流程图。
具体实施方式
下面将结合附图和实施例,对本发明的使用RuntimeClass实现多容器运行时的方法作进一步详细说明。
实施例
本发明的使用RuntimeClass实现多容器运行时的方法,通过利用kubernetesRuntimeClass容器运行时类的特性,在kubernetes集群内声明不同的容器运行时资源,实现在kubernetes集群中同时支持多种不同的容器运行时组件,并选择合适的运行时来调度不同的Pod,同时实现支持异构集群部署运行。
Kubelet与容器运行时通过CRI接口通信,CRI接口在创建沙箱时,支持选择运行时处理器。
如图1和图2所示,Kubelet使用Docker、CRI-O或Containerd作为运行时。其中在Docker运行时节点上,Kubelet默认使用Docker作为运行时,只支持Docker一种容器运行时处理器。Kubelet使用CRI-O作为运行时时,在创建沙箱时指定Kata或Runv作为运行时处理器。其中,在Kata运行时节点上指定Kata为运行时处理器,在Windows运行时节点上指定CRI-O为运行时处理器。Kubelet使用Containerd作为运行时时,在创建沙箱时指定Runc作为运行时处理器,运行在Containerd运行时节点上。
Kubernetes支持RuntimeClass资源,可以管理集群中的运行时,并支持调度到对应运行时所在的节点上。
当创建Pod时,若指定RuntimeClass资源,通过RuntimeClass获取到Pod运行的节点和需要执行的运行时处理器,调度到对应节点上创建Pod。
使用RuntimeClass资源,同时配置并启用ApiServer和Kubelet组件内的RumtimeClass特性开关。在kubernetes 1.14版本及以后RuntimeClass作为Beta特性默认为启用状态。
配置方式:启用ApiServer的特性开关,需要编辑ApiServer组件的
manifest配置文件,在ApiServer启动参数--feature-gates的flag追加加RuntimeClass值,示例:
--feature-gates=”..,RuntimeClass”
Kubelet配置方式与此同理。
RuntimeClass的配置依赖于运行时接口CRI的实现,根据集群中的CRI实现来具体配置对应的RuntimeClass,如contanerd,cri-o等。需要说明的是,RuntimeClass假设集群中的节点配置是同构的(换言之,所有的节点在容器运行时方面的配置是相同的)。如果需要支持异构节点,需要确保RuntimeClass准入控制器的特性开关处于启用状态,并配置scheduling字段来支持pod被正确地调度到支持指定运行时的节点上。
在上面的步骤中,每个配置都需要有一个用于标识配置的handler。针对每个handler需要创建一个RuntimeClass对象。RuntimeClass资源当前只有两个重要的字段:RuntimeClass名(metadata.name)和handler(handler)。对象定义如下所示:
apiVersion:node.k8s.io/v1beta1#RuntimeClass定义于node.k8s.io API组
kind:RuntimeClass
metadata:
name:myclass#用来引用RuntimeClass的名字
#RuntimeClass是一个集群层面的资源
handler:myconfiguration#对应的CRI配置的名称。
一旦完成集群中RuntimeClasses的配置,使用起来非常方便。在Pod spec中指定runtimeClassName即可。例如:
apiVersion:v1
kind:Pod
metadata:
name:mypod
spec:
runtimeClassName:myclass
#...。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (8)
1.一种使用RuntimeClass实现多容器运行时的方法,其特征在于:该方法通过利用kubernetes RuntimeClass容器运行时类的特性,在kubernetes集群内声明不同的容器运行时资源,实现在kubernetes集群中同时支持多种不同的容器运行时组件,并选择合适的运行时来调度不同的Pod,同时实现支持异构集群部署运行。
2.根据权利要求1所述的使用RuntimeClass实现多容器运行时的方法,其特征在于:Kubelet与容器运行时通过CRI接口通信,CRI接口在创建沙箱时,支持选择运行时处理器。
3.根据权利要求2所述的使用RuntimeClass实现多容器运行时的方法,其特征在于:Kubelet使用Docker、CRI-O或Containerd作为运行时。
4.根据权利要求3所述的使用RuntimeClass实现多容器运行时的方法,其特征在于:Kubelet使用CRI-O作为运行时时,在创建沙箱时指定Kata或Runv作为运行时处理器。
5.根据权利要求4所述的使用RuntimeClass实现多容器运行时的方法,其特征在于:Kubelet使用Containerd作为运行时时,在创建沙箱时指定Runc作为运行时处理器。
6.根据权利要求5所述的使用RuntimeClass实现多容器运行时的方法,其特征在于:当创建Pod时,若指定RuntimeClass资源,通过RuntimeClass获取到Pod运行的节点和需要执行的运行时处理器,调度到对应节点上创建Pod。
7.根据权利要求6所述的使用RuntimeClass实现多容器运行时的方法,其特征在于:使用RuntimeClass资源,同时配置并启用ApiServer和Kubelet组件内的RumtimeClass特性开关。
8.根据权利要求7所述的使用RuntimeClass实现多容器运行时的方法,其特征在于:RuntimeClass的配置依赖于运行时接口CRI的实现,根据集群中的CRI实现来具体配置对应的RuntimeClass。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011331992.8A CN112416523A (zh) | 2020-11-24 | 2020-11-24 | 一种使用RuntimeClass实现多容器运行时的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011331992.8A CN112416523A (zh) | 2020-11-24 | 2020-11-24 | 一种使用RuntimeClass实现多容器运行时的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112416523A true CN112416523A (zh) | 2021-02-26 |
Family
ID=74777761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011331992.8A Pending CN112416523A (zh) | 2020-11-24 | 2020-11-24 | 一种使用RuntimeClass实现多容器运行时的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416523A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797843A (zh) * | 2016-09-02 | 2018-03-13 | 华为技术有限公司 | 一种容器功能增强的方法和装置 |
CN110780998A (zh) * | 2019-09-29 | 2020-02-11 | 武汉大学 | 基于Kubernetes的动态负载均衡资源调度方法 |
CN111522639A (zh) * | 2020-04-16 | 2020-08-11 | 南京邮电大学 | Kubernetes集群架构系统下多维资源调度方法 |
CN111857951A (zh) * | 2020-07-07 | 2020-10-30 | 海尔优家智能科技(北京)有限公司 | 容器化部署平台及部署方法 |
US20200356397A1 (en) * | 2019-05-09 | 2020-11-12 | International Business Machines Corporation | Dynamically changing containerized workload isolation in response to detection of a triggering factor |
-
2020
- 2020-11-24 CN CN202011331992.8A patent/CN112416523A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797843A (zh) * | 2016-09-02 | 2018-03-13 | 华为技术有限公司 | 一种容器功能增强的方法和装置 |
US20200356397A1 (en) * | 2019-05-09 | 2020-11-12 | International Business Machines Corporation | Dynamically changing containerized workload isolation in response to detection of a triggering factor |
CN110780998A (zh) * | 2019-09-29 | 2020-02-11 | 武汉大学 | 基于Kubernetes的动态负载均衡资源调度方法 |
CN111522639A (zh) * | 2020-04-16 | 2020-08-11 | 南京邮电大学 | Kubernetes集群架构系统下多维资源调度方法 |
CN111857951A (zh) * | 2020-07-07 | 2020-10-30 | 海尔优家智能科技(北京)有限公司 | 容器化部署平台及部署方法 |
Non-Patent Citations (1)
Title |
---|
贾之光: "从零开始入门 K8s _ 理解 RuntimeClass 与使用多容器运行时", 《微信公众号阿里巴巴云原生》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11442746B2 (en) | Dynamically loaded plugin architecture | |
US9311161B2 (en) | Automatically configured management service payloads for cloud IT services delivery | |
CN112416524A (zh) | 基于docker和kubernetes离线的跨平台的CI/CD的实现方法及装置 | |
CN111897539B (zh) | 一种根据服务角色的进行应用部署的方法及装置 | |
US9274843B2 (en) | Multi-redundant switchable process pooling for cloud it services delivery | |
JP6231020B2 (ja) | クラウドコンピューティング環境におけるプロセスの調整 | |
CN113687913B (zh) | 一种面向边缘计算异构环境的轻量级应用适配方法 | |
US20190138678A1 (en) | Code Module Selection for Device Design | |
US20210382731A1 (en) | Method for componentization of enterprise applications using plugins | |
Gogouvitis et al. | Seamless computing in industrial systems using container orchestration | |
US10324701B1 (en) | Rapid deployment of computing instances | |
CN105786603B (zh) | 一种基于分布式的高并发业务处理系统及方法 | |
US7770159B2 (en) | Virtual types | |
CN111274002A (zh) | 支撑paas平台构建方法、装置、计算机设备及存储介质 | |
US20150012669A1 (en) | Platform runtime abstraction | |
WO2024002243A1 (zh) | 应用管理方法、应用订阅方法及相关设备 | |
CN113918223A (zh) | 用于数据处理的分布式计算系统和方法以及存储介质 | |
US20120072709A1 (en) | Unstacking Software Components for Migration to Virtualized Environments | |
CN114996337A (zh) | 多集群数据库管理系统及方法 | |
CN114489585A (zh) | 一种治理功能插件化的微服务开发框架及实现方法 | |
JP2024501005A (ja) | コンテナクラスタのための管理方法および装置 | |
CN112953770A (zh) | 边缘云网关免配置接入的方法、系统、介质及云端管理系统 | |
JP2003022186A (ja) | オブジェクト集合方法およびシステム | |
CN112416523A (zh) | 一种使用RuntimeClass实现多容器运行时的方法 | |
CN113867776B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210226 |
|
RJ01 | Rejection of invention patent application after publication |