一种基于容器的服务访问方法与流程

文档序号:15931125发布日期:2018-11-14 01:39阅读:185来源:国知局
本发明涉及基于kubernetes的容器服务访问
技术领域
,特别涉及一种基于容器的服务访问方法。
背景技术
近年来,容器技术是比较流行的提供微服务的paas技术,swarm和kubernetes是两种比较流行的容器技术,其中kubernetes是近期最流行的容器编排管理技术。kubernetes是一个全新的基于容器技术的分布式架构领先方案,在docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性和高可用性。基于kubernetes能够提供高可用的微服务;为了访问这些服务,kubernetes提供了三种方式:nodeport、loadbalancer、externalip。1)nodeport使用起来比较方便,适合于开发测试阶段,但是nodeport个数有限,使用nodeport方式暴露的kubernetes服务个数有限。2)loadbalancer依赖于一个独立于kubernetes的负载均衡服务,并且使用nodeport,跟nodepport方式一样,暴露的kubernetes服务个数有限3)externalip方式是把一个kubernetes节点或一个节点上的一个ip暴露出去,通过externalip给用户暴露服务,只要externalip足够多,暴露的kubernetes服务个数没有限制,但是kubernetes本身只支持将kubernetes节点暴露为externalip,这个限制也限制了kubernetes暴露的服务个数。综上所述,kubernetes本身提供的服务暴露方式只适合开发测试阶段的使用,远达不到产品上线的要求。基于此,本发明提出了一种基于容器的服务访问方法。技术实现要素:本发明为了弥补现有技术的缺陷,提供了一种简单高效的基于容器的服务访问方法。本发明是通过如下技术方案实现的:一种基于容器的服务访问方法,其特征在于:(1)设计方案:a)服务访问支持7层的http协议和4层的tcp协议;b)使用ingress支持7层访问,使用externalip支持4层访问;c)规划ingress节点运行ingress-controller,规划externalip节点运行externalipcontroller;(2)service配置:a)service默认使用clusterip方式,默认不提供外部访问;b)对外暴露的service不使用nodeport方式;c)编写一个定时任务,检测eip对应节点的网络,当节点notready时,选择一个ready的节点与eip对应,并修改所有外部访问服务的externalip,调用eip管理的api反馈给它能用的节点ip;d)提供为一个service创建外部访问service的api,并初始化externalip和port,记录externalip:port与service的对应关系;(3)externalipcontroller设计a)在k8s集群中规划externalip节点,用于提供外部访问能力;b)在k8s的集群中externalip节点部署externalipcontroller,用于绑定外部访问网卡,并保证外部ip的高可用;c)externalip作为资源需要管理起来,提供获取externalip的api供服务使用,原则上包括k8s服务和应用服务的一个服务分配一个externalip,externalip不是eip,是局域网ip,只用于k8s集群内部使用;(4)externalip管理开发一个externalip的管理功能,通过界面管理externalip,提供增删改查功能;(5)externalservice管理开发一个externalservice的管理功能,通过界面管理externalip,端口号,服务名称和服务命名空间信息,并提供增删改查功能。所述步骤(1)设计方案中,通过eip访问externalip和ingress所在节点。所述步骤(2)service配置中,在需要提供7层外部访问时,通过配置ingress暴露域名访问;在需要提供4层外部访问时,需要service指定externalip,通过externalip:serviceport访问;当需要给具体服务暴露给外网时,需要编辑service,新增一个端口,分配externalip和端口号,管理这个新的service、externalip:serviceport的对应关系。所述步骤(2)service配置中,k8s系统服务也要用ingress暴露,不能使用ingress的nodeport需要在安全组增加策略,保证外部访问不到这些端口。所述步骤(3)externalipcontroller设计中,k8s集群中有管理网nodeip,业务网podip和clusterip,外部访问网externalip和存储网cephip四种网络,上述四种网络生产环境建议使用单独网卡。所述步骤(4)externalip管理中,提供给不同租户分配externalip的api,通过调用这个api,租户可以获得自己使用的externalip;同时针对部署在虚机上的k8s集群,调用api获取的是暴露服务的nodeip。所述步骤(5)externalservice管理中,提供给不同租户分配externalip和端口号的api,通过调用这个api,租户可以给具体服务分配externalip和端口号;同时针对部署在虚机上的k8s集群,调用api获取的是暴露服务的nodeip和端口号。本发明的有益效果是:该基于容器的服务访问方法,同时提供了基于tcp协议和http协议访问容器服务的一体化解决方案,可以有效的访问基于kubernetes的容器服务,并能有效管理externalip和port资源,还支持多租户模式,能够为不同租户提供不同的容器服务访问路径,且容器服务个数不受限制,使用方便快捷,为多租户提供了管理基于kubernetes容器服务的能力。附图说明附图1为本发明设计方案方法示意图。附图2为本发明externalipcontroller设计方法示意图。附图3为本发明7层访问方法示意图。附图4为本发明4层访问方法示意图。具体实施方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。该基于容器的服务访问方法,包括以下步骤:(1)设计方案:a)服务访问支持http协议(7层)和tcp协议(4层);b)7层访问使用ingress实现,4层访问使用externalip实现;c)通过ingress-controller支持ingress,通过externalipcontroller支持externalip;d)通过eip访问externalip和ingress所在节点;(2)service配置:a)service默认使用clusterip方式,默认不提供外部访问;i.需要提供7层外部访问时,通过配置ingress暴露域名访问(域名与eip对应);ii.需要提供4层外部访问时,需要service指定externalip,通过externalip:serviceport访问;b)service的nodeport方式不安全,不使用nodeport暴露服务;c)k8s系统服务也要用ingress暴露,不能使用ingress的nodeport需要在安全组增加策略,保证外部访问不到这些端口;d)当需要给具体服务暴露给外网时,需要编辑service,新增一个端口,分配externalip和端口号,管理这个新的service、externalip:serviceport的对应关系;e)编写一个定时任务,检测eip对应节点的网络,当节点notready时,选择一个ready的节点与eip对应,并修改所有外部访问服务的externalip,调用eip管理的api反馈给它能用的节点ip;f)提供为一个service创建外部访问service的api,并初始化externalip和port,记录externalip:port与service的对应关系;(3)externalipcontroller设计a)k8s集群中有四种网络:管理网(nodeip)、业务网(podip和clusterip)、外部访问网(externalip)、存储网(cephip),这四种网络可以共用一个网卡,也可以使用单独网卡,生产环境建议使用单独网卡;b)在k8s集群中规划externalip节点,用于提供外部访问能力,建议externalip节点至少两个,防止外部访问单点故障;c)在k8s的集群中externalip节点部署externalipcontroller,用于绑定外部访问网卡,并保证外部ip的高可用;d)externalip作为资源需要管理起来,提供获取externalip的api供服务使用,原则上一个服务(包括k8s服务和应用服务)分配一个externalip,externalip不是eip,是局域网ip,只用于k8s集群内部使用;(4)externalip管理a)开发一个externalip的管理功能,通过界面管理externalip,提供增删改查功能;b)提供给不同租户分配externalip的api,通过调用这个api,租户可以获得自己使用的externalip;c)针对部署在虚机上的k8s集群,调用api获取的是暴露服务的nodeip;(5)externalservice管理a)开发一个externalservice的管理功能,通过界面管理externalip、端口号、服务名称、服务命名空间等信息,并提供增删改查功能;b)提供给不同租户分配externalip和端口号的api,通过调用这个api,租户可以给具体服务分配externalip和端口号;c)针对部署在虚机上的k8s集群,调用api获取的是暴露服务的nodeip和端口号。表1根据用户或eip获取可用的externalip表2请求参数名称类型位置必选描述userstringurl是租户编号eipstringurl是eip编号requesturl示例如下:/apis/extensions/v1/externalips/available?user=zhangsan&eip=10.10.10.10response示例如下:当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1