System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于Kubernetes云原生集群的服务流量精准控制方法和系统技术方案_技高网

基于Kubernetes云原生集群的服务流量精准控制方法和系统技术方案

技术编号:40082776 阅读:5 留言:0更新日期:2024-01-23 14:59
本发明专利技术公开了基于Kubernetes云原生集群的服务流量精准控制方法和系统,涉及互联网技术,针对现有技术中流量控制问题提出本方案。若metadata.annotations的caih.io/inactive的value为true时,将修改该容器组的status中的conditions中type是Ready的项目,将该字典中的status字段修改为"False";当监听到容器组对应字段为"False"时,令服务的流量不被导入到该容器组中。优点在于,通过引入一种结合MutatingAdmissionWebhook精确控制服务流量的方法,为多种场景中控制流量导向提供了一种解决方法,解决了当前Kubernetes原生集群中无法人工控制同一批容器组如何承载流量的缺陷,并且不需要删除或者重启容器组,只需对pod的yaml进行相应的简单配置,即可实现精确控制服务流量导入哪些容器,提升了集群的可控性。

【技术实现步骤摘要】

本专利技术涉及网络技术,尤其涉及基于kubernetes云原生集群的服务流量精准控制方法和系统。


技术介绍

1、在kubernetes云原生集群中,通常以容器组(pod)作为最小负载单位,服务(service)是通常作为流量入口、负载均衡的一个逻辑资源,简单来说,就是一个服务之后可以关联多个容器组,将请求按照一定规则导入不同的容器组中。服务一般通过标签选择器(label selector)选择关联的容器组,但是通常会关联到一组具有相同标签的容器组。在某些场景下,例如需要精确的控制某个或某几个容器组不接受流量,只能通过修改容器组的标签,重建容器组,再规划容器组运行的具体节点来实现。这个过程操作复杂,花费时间较长,会造成一定的服务流量中断。若单纯的缩容工作负载,使得容器组数量减少到目标数量,这样没法精确的选择哪些容器组应该被缩容,通常的缩容是遵循一定的判断规则,没法精确的指定容器组。

2、在kubernetes云原生集群中,在容器组运行时,现有技术不能方便的精确控制服务关联的已经运行的容器组,使得服务的流量能够选定容器组接收,为了克服当前云原生kubernetes集群现有的缺陷,本专利技术提出了一种基于kubernetes的服务流量精准控制方法和系统。

3、该专利技术的方法及其系统通过引入一个预先设定的注释配置,加上admissionwebhooks,实现了精确控制服务流量分发到指定容器组的功能。在现在标准的kubernetes集群中,服务通过标签选择器选择了一组容器组,并且通过配置就绪探针(readinessprobe)来对容器组的就绪状态进行监测,当容器组就绪后,服务就能将流量导入对应的容器组中。但是当需要维护或者其他原因,要对某些节点上的容器组进行维护,不希望流量导入,单纯的删除或者缩容并不能保证流量能够被精确的控制。

4、本专利技术针对此问题,提出了一种利用注释配置的服务流量精准控制方法,可以使得可以精确的选择服务选择器选中的任意容器组进行流量分发,完成服务精确的流量导入,不完全依赖就绪检查探针机制。


技术实现思路

1、本专利技术目的在于提供基于kubernetes云原生集群的服务流量精准控制方法和系统,以解决上述现有技术存在的问题。

2、本专利技术中所述基于kubernetes云原生集群的服务流量精准控制方法,所述kubernetes云原生集群加载并运行有若干个模块;api-server为kubernetes云原生集群的控制入口,用于接受控制请求;请求在api-server中处理过程中,会对请求的内容进行修改和验证,

3、其特征在于,

4、包含以下的验证机制:

5、在集群中配置admission controller,类型是mutatingadmissionwebhook;

6、在api-server收到pod类型的创建和修改请求后,api-server会执行一连串的admission controller,先串行执行预先配置的mutatingadmissionwebhook,并行执行validatingadmissionwebhook;

7、在执行到所述mutatingadmissionwebhook后,将对该创建或修改的容器组资源的metadata.annotations字段进行监测,若metadata.annotations存在caih.io/inactive字段,则进行拦截,并进行下一步操作;

8、若metadata.annotations的caih.io/inactive的value为true时,表明人为设置了该annotation对该容器组进行强制禁用,即不停止该容器组但禁止该容器组不接收服务中导入的流量;mutatingadmissionwebhook将修改该容器组的status中的conditions中type是ready的项目,将该字典中的status字段修改为"false";

9、继续执行后续的admissionwebhook;endpoints controller持续监听,当监听到容器组的status中的conditions中type是ready的项目status字段为"false"时,将服务对应的端点中的容器组ip变为notreadyaddresses,令服务的流量不被导入到该容器组中。

10、具有caih.io/inactive=“true”的容器组在生命周期内禁止恢复为ready状态。

11、只有当caih.io/inactive为“false”或者该注释被删除时,容器组的status中的conditions中type是ready的项目的status字段被mutatingadmissionwebhook修改为"true"时,此时容器组准备就绪,服务对应的端点中的容器组ip变为readyaddresses,服务会将流量导入到该容器组中。

12、本专利技术中所述系统利用所述服务流量精准控制方法进行流量控制。

13、本专利技术中所述基于kubernetes云原生集群的服务流量精准控制方法和系统,其优点在于,通过引入一种结合mutatingadmissionwebhook精确控制服务流量的方法,为多种场景中控制流量导向提供了一种解决方法,解决了当前kubernetes原生集群中无法人工控制同一批容器组如何承载流量的缺陷,并且不需要删除或者重启容器组,只需对pod的yaml进行相应的简单配置,即可实现精确控制服务流量导入哪些容器,提升了集群的可控性。

本文档来自技高网...

【技术保护点】

1.基于Kubernetes云原生集群的服务流量精准控制方法,所述Kubernetes云原生集群加载并运行有若干个模块;api-server为Kubernetes云原生集群的控制入口,用于接受控制请求;请求在api-server中处理过程中,会对请求的内容进行修改和验证,

2.根据权利要求1所述基于Kubernetes云原生集群的服务流量精准控制方法和系统,其特征在于,具有caih.io/inactive=“true”的容器组在生命周期内禁止恢复为ready状态。。

3.根据权利要求2所述基于Kubernetes云原生集群的服务流量精准控制方法和系统,其特征在于,只有当caih.io/inactive为“false”或者该注释被删除时,容器组的status中的conditions中type是Ready的项目的status字段被MutatingAdmissionWebhook修改为"True"时,此时容器组准备就绪,服务对应的端点中的容器组ip变为ReadyAddresses,服务会将流量导入到该容器组中。

4.基于Kubernetes云原生集群的系统,其特征在于,利用如权利要求1-3任一时所述服务流量精准控制方法进行流量控制。

...

【技术特征摘要】

1.基于kubernetes云原生集群的服务流量精准控制方法,所述kubernetes云原生集群加载并运行有若干个模块;api-server为kubernetes云原生集群的控制入口,用于接受控制请求;请求在api-server中处理过程中,会对请求的内容进行修改和验证,

2.根据权利要求1所述基于kubernetes云原生集群的服务流量精准控制方法和系统,其特征在于,具有caih.io/inactive=“true”的容器组在生命周期内禁止恢复为ready状态。。

3.根据权利要求2所述基于kubernete...

【专利技术属性】
技术研发人员:赵凯麟黄芳凤崔思恒
申请(专利权)人:中国一东盟信息港股份有限公司
类型:发明
国别省市:

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

1