一种注入容器的方法及装置制造方法及图纸

技术编号:33336232 阅读:7 留言:0更新日期:2022-05-08 09:18
本发明专利技术提供一种注入容器的方法及装置,所述方法包括:确定基于部署容器化的应用Kubernetes的自定义资源类型AdvancedSidecar;基于AdvancedSidecar,通过扩展器extender确定调度策略;给需要注入容器Sidecar的Kubernetes的最小运行单元Pod打上标签;提交容器Sidecar描述文件advanced

【技术实现步骤摘要】
一种注入容器的方法及装置


[0001]本专利技术涉及计算机信息
,尤其涉及一种注入容器的方法及装置。

技术介绍

[0002]信息社会发展到如今,后台应用的规模越来越大,应用之间调用越来越复杂,越来越频繁,成千上万个业务早已不是以前一台物理机就能解决用户的访问的需求的时代。
[0003]所以就出现了为了解决大规模软件应用部署的方案,如SOA、分布式、微服务。虽然这些方案解决了软件应用的横向和纵向扩展的能力,理论上能解决任何并发,任何数量业务的后台应用需求,但是随后带来了比单体应用更复杂的监管和告警需求。基于此,Istio平台依托Google开源的Kubernetes应用的自动化部署、大规模可伸缩、应用容器化管理等优点,继而扩展了连接、安全、控制和观察等能力,让软件应用研发人员更加专注业务的研发。
[0004]Istio的核心功能主要是基于网络代理-Sidecar来实现的,给Kubernetes的最小运行单元Pod注入一个代理容器,管理Pod进出流量。Sidecar即挎斗模式将应用程序的组件部署到单独的进程或容器中,以提供隔离和封装。使用此模式还可以使用异构组件和技术来构建应用程序。
[0005]一个Kubernetes的命名空间如要启用Istio的Sidecar,则需要给命名空间打上“istio-injection=enabled“的label,然后新创建的Pod则会被注入Sidecar容器。如今越来越多的企业使用Istio来部署后台应用,很多云厂商也有Istio的PaaS服务。
[0006]但是当要给大量的命名空间的Pod注入Sidecar的时候,会带来一些问题:会给Kubernetes的APIServer带来调度压力、大量Pod终结然后重启会导致耗费大量时间、新旧Pod的附加属性不同等问题。
[0007]Istio没有解决这些问题,当要给老的Pod注入Sidecar的时候,必须要重启Pod,这样必须就要先删掉Pod,然后在创建Pod的时候,把Sidecar容器注入到Pod当中一起启动起来,当Sidecar容器和业务容器都启动起来的时候才能正确接收流量。
[0008]Istio的原生方式的缺点是:
[0009]Kubernetes的APIServer会不断调度各方面资源创建Pod,给Kubernetes集群带来压力;
[0010]由于大量Pod终结然后重启,从创建Pod到容器创建成功再到Pod标记为可用的时候,包括了很多没必要的细节,如挂载数据卷、拉取应用容器镜像、网络创建等,这样需要的时间就会比较漫长;
[0011]新旧Pod的附加属性不同,如Pod的ip更改了,导致对该ip做了白名单限制的服务不可用等问题。

技术实现思路

[0012]本专利技术实施例提供一种注入容器的方法及装置,用于实现不需要重启Pod就能注
入Sidecar,不会对Pod的工作造成任何影响,注入过程当中Pod能正确处理所有的流量。
[0013]为了解决上述技术问题,本专利技术实施例提供如下技术方案:
[0014]一种注入容器的方法,所述方法包括:
[0015]确定基于部署容器化的应用Kubernetes的自定义资源类型AdvancedSidecar;
[0016]基于AdvancedSidecar,通过扩展器extender确定调度策略;
[0017]给需要注入容器Sidecar的Kubernetes的最小运行单元Pod打上标签;
[0018]提交容器Sidecar描述文件advanced-sidecar.yaml到API服务器组件;
[0019]通过扩展器extender确定要注入容器Sidecar的节点的Pod,并Sidecar描述文件以及节点的Pod存储到存储器Etcd;
[0020]通过节点上的kubelet执行器从存储器Etcd读取节点的Pod的相关信息并将容器Sidecar注入所述节点的Pod。
[0021]可选的,所述AdvancedSidecar包括:选择需要注入容器Sidecar的Pod、注入的容器Sidecar的相关信息,挂载的卷Volume以及一个修改网络流量转发规则的脚本文件。
[0022]可选的,容器Sidecar描述文件advanced-sidecar.yaml包括:
[0023]Kubernetes提供的自定义类的类型的Kind,包括CustomResourceDefinition文件;
[0024]CustomResourceDefinition文件注册到Kubernetes集群当中;
[0025]描述文件advanced-sidecar.yaml定义的资源类型名“AdvancedSidecar”。
[0026]可选的,所述通过节点上的kubelet执行器将容器Sidecar注入所述节点的Pod,包括:
[0027]查询AdvancedSidecar的调度任务;
[0028]通过扩展器extender选择满足注入容器的Pod,若Pod所存在的节点的资源超出了限制范围,则标记为inject-fail,否则,调度成功。
[0029]可选的,所述扩展器extender包括:
[0030]第一扩展功能组件,用于获取API服务器组件转发的将要给Pod注入容器Sidecar的信息;
[0031]第二扩展功能组件,用于创建容器,并加入Pod的网络命名空间,执行容器的脚本命令初始化Pod的Iptables的网络流量,把Pod的所有进出口流量交给Sidecar转发。
[0032]本专利技术实施例提供一种注入容器的装置,所述装置包括:
[0033]第一确定模块,用于确定基于部署容器化的应用Kubernetes的自定义资源类型AdvancedSidecar;
[0034]第二确定模块,用于基于AdvancedSidecar,确定调度策略;
[0035]处理模块,用于给需要注入容器Sidecar的Kubernetes的最小运行单元Pod打上标签;提交容器Sidecar描述文件advanced-sidecar.yaml到API服务器组件,通过扩展器extender确定要注入容器Sidecar的节点的Pod,并Sidecar描述文件以及节点的Pod存储到存储器Etcd;
[0036]通过节点上的kubelet执行器从存储器Etcd读取节点的Pod的相关信息并将容器Sidecar注入所述节点的Pod。
[0037]可选的,所述AdvancedSidecar包括:选择需要注入容器Sidecar的Pod、注入的容
器Sidecar的相关信息,挂载的卷Volume以及一个修改网络流量转发规则的脚本文件。
[0038]可选的,容器Sidecar描述文件advanced-sidecar.yaml包括:
[0039]Kubernetes提供的自定义类的类型的Kind,包括Custo本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种注入容器的方法,其特征在于,所述方法包括:确定基于部署容器化的应用Kubernetes的自定义资源类型AdvancedSidecar;基于AdvancedSidecar,通过扩展器extender确定调度策略;给需要注入容器Sidecar的Kubernetes的最小运行单元Pod打上标签;提交容器Sidecar描述文件advanced-sidecar.yaml到API服务器组件,通过扩展器extender确定要注入容器Sidecar的节点的Pod,并Sidecar描述文件以及节点的Pod存储到存储器Etcd;通过节点上的kubelet执行器从存储器Etcd读取节点的Pod的相关信息并将容器Sidecar注入所述节点的Pod。2.根据权利要求1所述的注入容器的方法,其特征在于,所述AdvancedSidecar包括:选择需要注入容器Sidecar的Pod、注入的容器Sidecar的相关信息,挂载的卷Volume以及一个修改网络流量转发规则的脚本文件。3.根据权利要求2所述的注入容器的方法,其特征在于,容器Sidecar描述文件advanced-sidecar.yaml包括:Kubernetes提供的自定义类的类型的Kind,包括CustomResourceDefinition文件;CustomResourceDefinition文件注册到Kubernetes集群当中;描述文件advanced-sidecar.yaml定义的资源类型名“AdvancedSidecar”。4.根据权利要求1所述的注入容器的方法,其特征在于,所述通过节点上的kubelet执行器将容器Sidecar注入所述节点的Pod,包括:查询AdvancedSidecar的调度任务;通过扩展器extender选择满足注入容器的Pod,若Pod所存在的节点的资源超出了限制范围,则标记为inject-fail,否则,调度成功。5.根据权利要求4所述的注入容器的方法,其特征在于,所述扩展器extender包括:第一扩展功能组件,用于获取API服务器组件转发的将要给Pod注入容器Sidecar的信息;第二扩展功能组件,用于创建容器,并加入Pod的网络命名空间,执行容器的脚本命令初始化Pod的Iptables的网络流量,把Pod的所有进出口流量交给Sidecar转发。6.一种注入容器的装置,其特征在于,所述装置包括:第一确定模块,用于确定基于部署容器化的应用Kubernetes的自定义...

【专利技术属性】
技术研发人员:张其
申请(专利权)人:中国移动通信集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1