一种实现Kubernetes集群外服务发现的方法及装置制造方法及图纸

技术编号:38007124 阅读:12 留言:0更新日期:2023-06-30 10:24
本发明专利技术公开了一种实现Kubernetes集群外服务发现的方法及装置,涉及集群服务技术领域。该实现Kubernetes集群外服务发现的方法,包括在Kubernetes中部署Service Controller ManagerDeployment和ConfigMap,并通过service注解增强,其支持scm/enabled和scm/proxymode注解,通过SCM监听原生的Kubernetes service,通过SCM识别集群外节点的软件环境,并自适应或按照用户指定在集群外节点上完成Cluster IP和其相关的负载均衡设置。本发明专利技术无依赖、零成本,无SLB相关的成本,具有高可用性,且能够自适应设置代理。且能够自适应设置代理。且能够自适应设置代理。

【技术实现步骤摘要】
一种实现Kubernetes集群外服务发现的方法及装置


[0001]本专利技术涉及集群服务
,具体为一种实现Kubernetes集群外服务发现的方法及装置。

技术介绍

[0002]Kubernetes提供了云原生的服务发现机制service,service包括ClusterIP、NodePort、LoadBalancer。它们在某些需求简单、无成本顾虑、网络设施能力良好等情况下能较好地发挥作用,但在其他实际环境中则会面临极大的挑战。
[0003]例如,使用NodePort service无外部依赖、无成本,但有外部流量单点的问题,需cl ient实现复杂的负载逻辑;例如,使用LoadBalancer service能解决前者的问题,但每个LoadBalancer service都需要额外的SLB实例,部署成本和运维成本随着数量规模的攀升而攀升,而在IaaS能力较弱的场景下(无SLB)就只能在降低可用性或复杂改造中做选择;又例如,企业在实施容器化迁移的过程中集群外业务对集群内业务的访问,在迁移前和迁移后难以保持一致,表现为业务迁移进集群后需更改为新的IP(Cluster IP)或域名。

技术实现思路

[0004]解决的技术问题
[0005]针对现有技术的不足,本专利技术提供了一种实现Kubernetes集群外服务发现的方法及装置,解决了Kubernetes提供了云原生的服务发现机制service,service包括ClusterIP、NodePort、LoadBalancer,但是它们无法满足需求复杂,有成本顾虑且网络设施能力不佳等情况下的问题。
[0006]技术方案
[0007]为实现以上目的,本专利技术通过以下予以实现:一种实现Kubernetes集群外服务发现的方法,包括以下方法步骤:
[0008]S1:在Kubernetes中部署Service Control ler ManagerDeployment和ConfigMap,其中Service Control ler ManagerDeployment简称为SCM;
[0009]S2:通过service注解增强,其支持scm/enabled和scm/proxymode注解;
[0010]S3:通过SCM监听原生的Kubernetes service,SCM根据默认配置叠加service annotat ion的指定配置决定scm

loadbalancer

service的网络模式,并支持中转和直连两种模式;
[0011]S4:通过SCM识别集群外节点的软件环境,依次包括ebpf、ipvs和iptables,并自适应或按照用户指定在集群外节点上完成Clus ter IP和其相关的负载均衡设置,还包括service域名的设置。
[0012]优选的,所述默认配置即为SCM ConfigMap,SCM需观察集群主机和endpoint的变化,及时调整集群外主机上的proxy。
[0013]优选的,所述S1中SCM部署部分,包括SCM以Deployment的方式部署和SCM配置以
ConfigMap的方式挂载到SCM Pod上。
[0014]优选的,所述SCM的配置项包括:
[0015]a、集群外主机信息;
[0016]b、网络连接模式即connectMode,支持转发和直连,默认为转发;转发表示集群外主机上的请求经集群主机NodePort做中转,direct表示集群外主机的请求与Pod IP直连;
[0017]c、代理模式即proxyMode,支持auto、ebpf、ipvs、iptables,默认为auto;Auto表示根据集群外主机的系统情况选择最优方案,依次为ebpf、ipvs、iptables;ebpf、ipvs、iptables各自表示采用自身技术实现代理。
[0018]优选的,所述S2中注解增强部分中,SCM会针对携带特定annotat ion的service进行处理,annotat ion包括:
[0019]a、scm/enabled=[true|false],true表示开启,开启时SCM会在集群外主机上为ClusterIP/NodePort类型的service生成proxy,False或没有该annotation时SCM忽略该service;
[0020]b、scm/proxymode=[auto|ebpf|ipvs|iptables],含义同SCM ConfigMap,优先级高于SCM ConfigMap中的配置。
[0021]优选的,所述S3的service监听步骤中,SCM l ist&watch service针对类型为ClusterIP/NodePort且annotation scm/enabled=true的service进行过滤,接着根据事件类型做进一步的处理,包括Add、Update、Delete。
[0022]优选的,根据不同的事件类型进行进一步处理具体为:
[0023]a、当事件类型为Add,connectMode=transfer,SCM l ist集群节点;connectMode=direct,SCM则l ist该service对应的endpoint;
[0024]b、当事件类型为Update,connectMode=transfer无需查询集群节点;connectMode=direct,重新l ist该service对应的endpoint;
[0025]c、当事件类型为Delete,SCM不做获取集群主机和endpoint的操作。
[0026]优选的,所述S4实现在集群外主机配置或删除scm

loadbalancer

service,即proxy和本地域名;当proxyMode为auto时,SCM将自适应选择最优的代理工具,具体为通过SCM依次检查集群外主机上是否具备proxy的软件条件,优先级从ebpf到ipvs再到iptables,一旦满足则返回给SCM。
[0027]优选的,所述S4中scm

loadbalancer

service设置的具体配置方法包括以下步骤:
[0028]R1、配置时,通过SCM根据探测结果或指定配置在集群外主机配置proxy,proxy负责将Cluster IP均衡负载到各个集群主机的NodePort或endpoint的Port上,实现负载均衡;同时SCM会在集群外主机上配置本地域名,并映射到虚拟的Cluster IP上;以iptables为例,初始化命令为iptables

AOUTPUT

t nat

p tcp

d【Cluster IP】
‑‑
dport【service port】[<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种实现Kubernetes集群外服务发现的方法,其特征在于:包括以下方法步骤:S1:在Kubernetes中部署Service Controller ManagerDeployment和ConfigMap,其中Service Controller ManagerDeployment简称为SCM;S2:通过service注解增强,其支持scm/enabled和scm/proxymode注解;S3:通过SCM监听原生的Kubernetes service,SCM根据默认配置叠加service annotation的指定配置决定scm

loadbalancer

service的网络模式,并支持中转和直连两种模式;S4:通过SCM识别集群外节点的软件环境,依次包括ebpf、ipvs和iptables,并自适应在集群外节点上完成Cluster IP和其相关的负载均衡设置,还包括service域名的设置。2.根据权利要求1所述的一种实现Kubernetes集群外服务发现的方法,其特征在于:所述默认配置即为SCM ConfigMap,SCM需观察集群主机和endpoint的变化,及时调整集群外主机上的proxy。3.根据权利要求1所述的一种实现Kubernetes集群外服务发现的方法,其特征在于:所述S1中SCM部署部分,包括SCM以Deployment的方式部署和SCM配置以ConfigMap的方式挂载到SCM Pod上。4.根据权利要求3所述的一种实现Kubernetes集群外服务发现的方法,其特征在于:所述SCM的配置项包括:a、集群外主机信息;b、网络连接模式即connectMode,支持转发和直连,默认为转发;转发表示集群外主机上的请求经集群主机NodePort做中转,direct表示集群外主机的请求与Pod IP直连;c、代理模式即proxyMode,支持auto、ebpf、ipvs、iptables,默认为auto;Auto表示根据集群外主机的系统情况选择最优方案,依次为ebpf、ipvs、iptables;ebpf、ipvs、iptables各自表示采用自身技术实现代理。5.根据权利要求1所述的一种实现Kubernetes集群外服务发现的方法,其特征在于:所述S2中注解增强部分中,SCM会针对携带特定annotation的service进行处理,annotation包括:a、scm/enabled=[true|false],true表示开启,开启时SCM会在集群外主机上为ClusterIP/NodePort类型的service生成proxy,False或没有该annotation时SCM忽略该service;b、scm/proxymode=[auto|ebpf|ipvs|iptables],含义同SCM ConfigMap,优先级高于SCM ConfigMap中的配置。6.根据权利要求1所述的一种实现Kubernetes集群外服务发现的方法,其特征在于:所述S3的service监听步骤中,SCM list&amp;watch service针对类型为ClusterIP/NodePort且annotationscm/enabled=true的service进行过滤,接着根据事件类型做进一步的处理,包括Add、Update、Delete。7.根...

【专利技术属性】
技术研发人员:蔡岳阳林位宁
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1