一种访问地址的获取方法及系统的制作方法

文档序号:10538951阅读:326来源:国知局
一种访问地址的获取方法及系统的制作方法
【专利摘要】本发明公开了一种访问地址的获取方法,包括:Kube2sky获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址;Kube2sky将所述地址信息写入第一ETCD中;当用户利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ETCD中读取与所述主机名对应的所述IP地址。本发明还公开了一种访问地址的获取系统。
【专利说明】
一种访问地址的获取方法及系统
技术领域
[0001]本发明涉及互联网技术领域,尤其涉及一种访问地址的获取方法及系统。
【背景技术】
[0002]Docker技术相比虚拟机技术而言,它能让更多数量的应用程序在同一硬件上运行,开发人员可以快速构建可随时运行的容器化应用程序,从而简化了管理和部署应用程序的任务。Docker技术除了在开源领域广泛应用,越来越多的商业公司也将业务迀移到了Docker容器中。而Kubernetes是开源的容器集群管理系统,其提供应用部署、维护、扩展机制等功能,轻量易部署,启动快速,构成了从容器运行调度、应用存储支持、虚拟网络构成,到用户交互API(Applicat1n Programming Interface,应用程序编程接口)等一套完整的容器管理软件桟,利用Kubernetes能方便地管理跨机器运行Docker容器化的应用。
[0003]DNS(Domain Name System,域名系统)的主要作用是将IP地址映射为便于人们记忆的名称,另外在域中还提供资源定位和命名空间的作用。Kubernetes本身以插件的形式提供了集群内的DNS解决方案,该方案虽然提供Pod(Pod是Kubernetes中创建、调度和管理的最小部署单位)级的解析,但只能以IP地址组成的名字来解析对应Pod的IP地址,例如:在Kubernetes集群的default命名空间下,DNS后缀设置为cIuster.local,一个名为test的Pod包含一个主机名为hostname的Docker容器,该Pod的IP地址为1.2.3.4,目前的DNS方案可以通过1-2-3-4.default.pod.cluster.local来访问Pod,但不能直接通过hostname来访问Docker容器。
[0004]但是,当在Kubernetes中部署Zookeeper、HDFS(HadoopDistributed FileSystem,分布式文件系统)等服务时,服务中的各个节点间需要通过主机名实现相互访问,而现有的Kubernetes DNS解决方案只能提供Pod级的访问解析,因此通过现有KubernetesDNS方案并不能在Kubernetes中部署这些服务。

【发明内容】

[0005]有鉴于此,本发明实施例的主要目的在于提供一种访问地址的获取方法及系统,以实现访问Kubernetes集群中的Docker容器的目的。
[0006]为实现上述目的,本发明实施例提供了一种访问地址的获取方法,包括:
[0007]Kube2sky获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址;
[0008]Kube2sky将所述地址信息写入第一ETCD中;
[0009]当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一 ET⑶中读取与所述主机名对应的所述IP地址。
[0010]可选的,所述Kube2sky获取Docker容器的地址信息,包括:
[0011]服务器将Pod的创建信息发送给客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息,所述服务器和所述客户端为所述Kubernetes集群中的设备;
[0012]所述客户端根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器;
[0013]所述服务器将所述地址信息写入第二ET⑶中;
[0014]Kube2Sky通过所述服务器从所述第二 ET⑶中获取所述地址信息。
[0015]可选的,所述Kube2sky将所述地址信息写入第一ET⑶中,包括:
[0016]若所述地址信息为新增Docker容器的地址信息,则在所述第一ET⑶中增加所述地址信息;
[0017]若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一 ET⑶中的所述已有Docker容器的原有地址信息。
[0018]可选的,所述方法还包括:
[0019]若所述Pod在所述Kubernetes集群中被删除,则Kube2sky通过所述服务器从所述第二 ET⑶中获取所述地址信息,并将所述地址信息从所述第一 ET⑶删除。
[0020]可选的,所述Kube2sky将所述地址信息写入第一ET⑶中,包括:
[0021]Kube2sky将所述主机名作为ET⑶键的一部分,把所述IP地址作为所述ET⑶键对应值的一部分,且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一 ET⑶中。
[0022]可选的,所述第一ET⑶和所述第二ET⑶为相同或不同的ET⑶。
[0023]本发明实施例还提供了一种访问地址的获取系统,包括:
[0024]Kube2sky,用于获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址;
[0025]Kube2sky,还用于将所述地址信息写入第一ETCD中;
[0026]SkyDNS,用于当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一 ET⑶中读取与所述主机名对应的所述IP地址。
[0027]可选的,所述系统还包括客户端和服务器,所述服务器和所述客户端为所述Kubernetes集群中的设备;
[0028]所述服务器,用于将Pod的创建信息发送给所述客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息;
[0029]所述客户端,用于根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器;
[0030]所述服务器,还用于将所述地址信息写入第二ET⑶中;
[0031]所述Kube2Sky,具体用于通过所述服务器从所述第二ET⑶中获取所述地址信息。
[0032]可选的,所述Kube2sky包括:
[0033]信息增加单元,用于若所述地址信息为新增Docker容器的地址信息,则在所述第一ET⑶中增加所述地址信息;
[0034]信息替换单元,用于若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一 ET⑶中的所述已有Docker容器的原有地址信息。
[°035] 可选的,所述Kube2sky,还用于若所述Pod在所述Kubernetes集群中被删除,贝Ij通过所述服务器从所述第二ET⑶中获取所述地址信息,并将所述地址信息从所述第一ET⑶删除。
[0036]可选的,所述Kube2Sky,具体用于将所述主机名作为ET⑶键的一部分,把所述IP地址作为所述ET⑶键对应值的一部分,且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一 ET⑶中。
[0037]可选的,所述第一ET⑶和所述第二ET⑶为相同或不同的ET⑶。
[0038]本发明实施例提供的访问地址的获取方法及系统,Kube2sky获取Docker容器的地址信息,所述地址信息包括所述Docker容器的主机名和IP地址;Kube2sky将所述地址信息写入第一ET⑶中;当用户利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ET⑶中读取与所述主机名对应的所述IP地址。可见,Kube2sky通过获取Docker容器的主机名与IP地址的对应关系,并将主机名与IP地址的对应关系写入第一ET⑶中,使得SkyDNS可以通过读取第一ET⑶中的关系记录来解析容器主机名,因此Kubernetes集群内部可使用容器主机名直接访问具体的容器,为在Kubernetes集群中部署Zookeeper、HDFS等服务提供了解决方案。
【附图说明】
[0039]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0040]图1为本发明实施例提供的访问地址的获取方法的流程示意图;
[0041 ]图2为本发明实施例提供的信息交互示意图;
[0042]图3为本发明实施例提供的主机名和IP地址的获取方法的流程示意图;
[0043]图4为本发明实施例提供的访问地址的获取系统的组成示意图。
【具体实施方式】
[0044]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0045]在介绍本发明实施例前,首先介绍本发明中涉及的一些相关术语:
[0046]Docker: —个开源的引擎,可以为任何Linux下的应用创建一个轻量级的、可移植的、自给自足的容器。
[0047 ] Docker容器:在Docker中为进程组创建的隔离环境。
[0048]Kubernetes: 一个开源的容器集群管理系统,构建于Docker之上,提供资源调度、部署运行、服务发现、扩容缩容等功能,用于管理跨机器运行容器化的应用。
[0049]PocUKubernetes中创建、调度和管理的最小部署单位。
[0050]Kubernetes Service:是一种抽象概念,它定义了一个Pod逻辑集合以及访问它们的策略。
[0051 ] DNS:全称为Domain Name System,中文名为“域名系统”,是因特网使用的命名系统,用于将人们使用的机器名字转换为IP地址。
[0052]ETCD:—个开源的、高可用的键值存储系统,主要用于共享配置和服务发现。
[0053]Kube2sky:用于连接Kubernetes和SkyDNS的中间件,监控Kubernetes Service变化并通过ET⑶将这些变化反馈给SkyDNS。
[0054]SkyDNS:—种用于服务发现的分布式系统,使用RAFT机制实现高可用性和一致性,使用DNS查询来发现可用的服务。
[0055]ZooKeeper:是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby—个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
[0056]参见图1,为本发明实施例提供的访问地址的获取方法的流程示意图,该方法包括步骤101至步骤103,下面结合图2所示的信息交互示意图来说明图1中各个步骤,图2中的交互主体包括Kubernetes客户端、Kubernetes服务端、ETCD1(即第一ETCD)、ETCD2(即第二ETCD)、Kube2sky和SkyDNS。
[0057]步骤101:Kube2sky获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名(hostname)和IP 地址(IP)。
[0058]参见图3所示的主机名和IP地址的获取方法的流程示意图,在本发明实施例中,步骤101具体可以包括以下步骤301至步骤304。
[0059]步骤301:服务器将Pod的创建信息发送给客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息,所述服务器和所述客户端为所述Kubernetes集群中的设备。
[0000]步骤301对应图2中的服务端与客户端的交互步骤I,具体的,在Kubernetes集群中,包括至少一个Kubernetes客户端和至少一个Kubernetes服务器(即服务端),当Kubernetes集群需要创建Pod时,首先在Kubernetes服务端侧建立Pod,当Pod被成功创建后,Pod中相应的容器信息也被成功创建,Kubernetes服务端将Pod的创建信息发送给Kubernetes客户端,由于Pod的创建信息中包含至少一个Docker容器的创建信息,这样Kubernetes客户端便可以根据Docker容器的创建信息来创建对应的Docker容器了。此外,Kubernetes服务端还将Pod的创建信息保存进ET⑶2中与Pod相关的字段里。
[0061]其中,所述Docker容器可以是新建Pod中的容器、也可以是已有Pod中的容器。当Kubernetes服务端新建一个Pod时,需要Kubernetes客户端新建Pod中的Docker容器,Kubernetes客户端便可获取新建Docker容器的主机名和Kubernetes集群分配的IP地址;当出现已有Pod被重启等操作时,也需要Kubernetes客户端重建已有Pod中的Docker容器,Kubernetes客户端便可获取已有Docker容器的主机名和Kubernetes集群重新分配的IP地址。
[0062]步骤302:所述客户端根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器。
[0063]步骤302对应图2中的服务端与客户端的交互步骤2,具体的,当Kubernetes客户端接收到Kubernetes服务端发送的Pod的创建信息后,会根据Pod创建信息中携带的Docker容器的创建信息创建并启动相应的Docker容器,由于Docker容器的创建信息中包含有Kubernetes集群分配给Docker容器的主机名和IP地址等相关信息,所以当Docker容器启动成功后,Kubernetes客户端可以根据所述相关信息收集到Docker容器的主机名(hostname)和集群内分配给Docker容器的IP地址(InternalIP),并将这些信息上报给Kubernetes服务端。
[0064]步骤303:所述服务器将所述地址信息写入第二ET⑶中。
[0065]步骤303对应图2中的服务端与ET⑶2的交互步骤3,具体的,当Kubernetes服务端接收到Kubernetes客户端发送的地址信息(包括Docker容器的主机名和IP地址)后,由于ETCD2中的与Pod相关的字段里保存有Pod的创建信息,所以,Kubernetes服务端将接收到的Docker容器的地址信息写进ET⑶2中与Pod相关的字段里。其中,写入ET⑶2中的地址信息是新增Docker容器的地址信息或已有Docker容器的变化后的地址信息。
[0066]步骤304:KUbe2Sky通过所述服务器从所述第二 ETCD中获取所述地址信息。
[0067]在本发明实施例中,当Kubernetes集群内的Pod被成功创建时,Pod中相应的Docker容器也被创建,此时Kube2sky将监控到有新Docker容器的主机名与IP地址的对应关系被加入到Kubernetes集群中;当Kubernetes集群内的Pod被成功删除时,该Pod内的Dockers容器会被停止并被回收,此时Kube2sky也将监控到有Docker容器主机名与IP地址的对应关系从Kubernetes集群中被移除了 ;当Docker容器主机名与IP地址的对应关系发生变化时,例如Pod被重启了,Docker容器的IP地址会发生变化,Kube2sky也将监控到这些变化。
[0068]下面介绍Kube2sky如何监控上述内容。
[0069]步骤304对应图2中的服务端与Kube2sky的交互步骤4和6、服务端与ET⑶2的交互步骤5,具体的,首先Kube2sky会定期询问Kubernetes服务端,即询问是否有新增或删除或变化的Docker容器的地址信息(交互步骤4),然后Kubernetes服务端从ETCD2中查询Kubernetes集群中各个Docker容器的地址信息(交互步骤5),当Kubernetes服务端查询到有新增或删除或变化的Docker容器的地址信息时,会将该地址信息发送给Kube2sky (交互步骤6)。
[0070]步骤102:Kube2sky将所述地址信息写入第一ETCD中。
[0071 ] 步骤102对应图2中的ET⑶I (即所述第一ET⑶)与Kube2sky的交互步骤7,具体地,对于Kubernetes集群中的某个新建Pod,关于新建Pod中的每个Docker容器,需要在ETOH中生成容器IP地址和容器主机名的对应关系记录,以便SkyDNS可以通过这条记录实现对这个新建Pod中Docker容器的DNS解析;对于Kubernetes集群中的某个已有PocU当已有Pod中的Docker容器的IP地址发生变化时,Kube2sky可监测到该变化并根据该变化更新ET⑶I记录中的IP地址;当Kubernetes集群中删除了某个Pod后,Kube2sky可监测到删除了哪个Pod,并将ET⑶I中与这个Pod相关的记录删除。
[0072]所以,当Kube2sky通过Kubernetes服务端发现ETO)2中与Pod相关的字段值发生了上述更新,即所述更新内容为:新增了 Docker容器的主机名和IP地址、或者已有Docker容器的主机名和IP地址发生了变化、或者删除了已有Docker容器的主机名和IP地址,Kube2sky会通过Kubernetes服务端从ET⑶2中拿到所述更新内容(包括Docker容器的主机名和IP地址),如果更新内容是新增的某Docker容器的主机名和IP地址或已有Docker容器的变化后的主机名和IP地址,则将该主机名和IP地址以SkyDNS可识别的记录形式写进ET⑶I中与该Docker容器相关的字段里,如果所述更新内容是删除了的某Docker容器的主机名和IP地址,则将该主机名和IP地址从ET⑶I中删除。进一步地,ETCDl还会向SkyDNS发送更新通知(对应图2中的ETCl与Kube2sky的交互步骤7)。
[0073]基于上述内容,步骤102可以包括:
[0074]若所述地址信息为新增Docker容器的地址信息,则在所述第一ET⑶中增加所述地址信息;
[0075]若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一 ET⑶中的所述已有Docker容器的原有地址信息。
[0076]进一步地,如果Kubernetes集群中删除了某Pod,则Pod中各个Docker容器的主机名和IP地址也会被相应的删除,因此,所述方法还包括:若所述Pod在所述Kubernetes集群中被删除,则Kube2Sky通过所述服务器从所述第二ETCD中获取所述地址信息,并将所述地址信息从所述第一 ET⑶删除。
[0077]进一步地,当Kube2sky监控到容器主机名与容器IP地址的对应关系发生了变化、或新增了容器主机名与容器IP地址的对应关系后,Kube2sky将会把容器主机名作为ET⑶I键的一部分、把IP地址作为该键对应值的一部分以SkyDNS可识别的格式写入到ET⑶I中。例如Kubernete s集群中有一个主机名为“kaf ka-l-wkf al”的Docker容器,它的IP地址为“172.20.0.12”,在ET⑶I中对应的记录可以为如下形式:
[0078]键--“/skydns/sohu/domeos/kafka-l-wkfal/19d074al,,;
[0079]值--“{ “host”:,,172.20.0.12” , “pr1rity”: 10, “weight”: 10, “ttl”: 30},,。
[0080]基于上述内容,步骤102还可以包括:
[0081 ] Kube2sky将所述主机名作为ET⑶键的一部分、把所述IP地址作为所述ET⑶键对应值的一部分、且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一 ET⑶中。
[0082]步骤103:当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一 ET⑶中读取与所述主机名对应的所述IP地址。
[0083]步骤103对应图2中的SkyDNS与Kubernetes集群的交互步骤8,具体地,当Kubernetes集群内部通过主机名访问Docker容器时,SkyDNS可根据ETCDI中与SkyDNS相关的字段对Docker容器的主机名进行解析,S卩SkyDNS可以通过读取ET⑶I中的主机名和IP地址的对应关系记录来解析出该主机名对应的IP地址。比如,在Kubernetes集群中部署Zookeeper等服务时,各个节点间通过主机名实现相互访问,因此需要将主机名与其对应的IP地址的对应关系加入ETCDl中,以便SkyDNS为Kubernetes集群提供DNS服务。
[0084]综上,在Kubernetes集群中新建Pod、删除Pod以及已有Pod中的容器IP地址的改变都会触发相应的事件,当Kube2sky监测到这些事件时,Kube2sky通过访问Kubernetes服务端的API接口,可以获取集群中Pod的相关信息,包括该Pod内所有容器的主机名和IP地址等,然后将这些信息以SkyDNS可识别的格式写入ET⑶I对应键值里。当Kubernetes集群需要对Pod中容器主机名进行解析时,SkyDNS就可以读取ET⑶I中的相关记录解析出该主机名对应的IP地址。
[0085]需要说明的是,所述第一ETCD和所述第二ETCD为相同或不同的ETCD。由于所述第一ETCD和所述第二ETCD中的数据是相互隔离的,所以,所述第一ETCD和所述第二ETCD可以是不同的ET⑶,所述第一 ET⑶和所述第二 ET⑶也可以是相同的ET⑶,所述第一 ET⑶和所述第二 ETCD中的数据位于不同的数据区域。
[0086]本发明实施例提供的访问地址的获取方法,Kube2sky获取Docker容器的地址信息,所述地址信息包括所述Docker容器的主机名和IP地址;Kube2sky将所述地址信息写入第一ET⑶中;当用户利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ET⑶中读取与所述主机名对应的所述IP地址。可见,Kube2sky通过获取Docker容器的主机名与IP地址的对应关系,并将主机名与IP地址的对应关系写入第一ET⑶中,使得SkyDNS可以通过读取第一ET⑶中的关系记录来解析容器主机名,因此Kubernetes集群内部可使用容器主机名直接访问具体的容器,为在Kubernetes集群中部署Zookeeper、HDFS等服务提供了解决方案。
[0087]参见图4,为本发明实施例提供的访问地址的获取系统的组成示意图,该系统包括:
[0088]Kube2sky401,用于获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址;
[0089]Kube2sky401,还用于将所述地址信息写入第一ETCD中;
[0090]SkyDNS402,用于当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一 ET⑶中读取与所述主机名对应的所述IP地址。
[0091]在本发明实施例中,所述系统还包括客户端和服务器,所述服务器和所述客户端为所述Kubernetes集群中的设备;
[0092]所述服务器,用于将Pod的创建信息发送给所述客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息;
[0093]所述客户端,用于根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器;
[0094]所述服务器,还用于将所述地址信息写入第二ET⑶中;
[0095]所述Kube2Sky,具体用于通过所述服务器从所述第二ET⑶中获取所述地址信息。
[0096]在本发明实施例中,所述Kube2sky包括:
[0097]信息增加单元,用于若所述地址信息为新增Docker容器的地址信息,则在所述第一ET⑶中增加所述地址信息;
[0098]信息替换单元,用于若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一 ET⑶中的所述已有Docker容器的原有地址信息。
[00"] 在本发明实施例中,所述Kube2sky,还用于若所述Pod在所述Kubernetes集群中被删除,则通过所述服务器从所述第二ETCD中获取所述地址信息,并将所述地址信息从所述第一 ET⑶删除。
[0100]在本发明实施例中,所述Kube2sky,具体用于将所述主机名作为ET⑶键的一部分、把所述IP地址作为所述ET⑶键对应值的一部分、且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一ET⑶中。
[0101]在本发明实施例中,所述第一ET⑶和所述第二ET⑶为相同或不同的ET⑶。
[0102]通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0103]需要说明的是,对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0104]还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0105]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种访问地址的获取方法,其特征在于,包括: Kube2sky获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址; Kube2sky将所述地址信息写入第一 ETCD中; 当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ET⑶中读取与所述主机名对应的所述IP地址。2.根据权利要求1所述的方法,其特征在于,所述Kube2sky获取Docker容器的地址信息,包括: 服务器将Pod的创建信息发送给客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息,所述服务器和所述客户端为所述Kubernetes集群中的设备; 所述客户端根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器; 所述服务器将所述地址信息写入第二ET⑶中; Kube2Sky通过所述服务器从所述第二 ET⑶中获取所述地址信息。3.根据权利要求2所述的方法,其特征在于,所述Kube2sky将所述地址信息写入第一ET⑶中,包括: 若所述地址信息为新增Docker容器的地址信息,则在所述第一ET⑶中增加所述地址信息; 若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一 ET⑶中的所述已有Docker容器的原有地址信息。4.根据权利要求2所述的方法,其特征在于,所述方法还包括: 若所述Pod在所述Kubernetes集群中被删除,则Kube2sky通过所述服务器从所述第二ET⑶中获取所述地址信息,并将所述地址信息从所述第一 ET⑶删除。5.根据权利要求1所述的方法,其特征在于,所述Kube2sky将所述地址信息写入第一ET⑶中,包括: Kube2sky将所述主机名作为ET⑶键的一部分,把所述IP地址作为所述ET⑶键对应值的一部分,且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一 ET⑶中。6.根据权利要求2至5任一项所述的方法,其特征在于,所述第一ETCD和所述第二ETCD为相同或不同的ETCD。7.—种访问地址的获取系统,其特征在于,包括: Kube2sky,用于获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址; Kube2sky,还用于将所述地址信息写入第一ETCD中; SkyDNS,用于当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一 ET⑶中读取与所述主机名对应的所述IP地址。8.根据权利要求7所述的系统,其特征在于,所述系统还包括客户端和服务器,所述服务器和所述客户端为所述Kubernetes集群中的设备; 所述服务器,用于将Pod的创建信息发送给所述客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息; 所述客户端,用于根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器; 所述服务器,还用于将所述地址信息写入第二 ET⑶中; 所述Kube2Sky,具体用于通过所述服务器从所述第二 ET⑶中获取所述地址信息。9.根据权利要求8所述的系统,其特征在于,所述Kube2sky包括: 信息增加单元,用于若所述地址信息为新增Docker容器的地址信息,则在所述第一ET⑶中增加所述地址信息; 信息替换单元,用于若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一 ET⑶中的所述已有Docker容器的原有地址信息。10.根据权利要求8所述的系统,其特征在于, 所述Kube2sky,还用于若所述Pod在所述Kubernetes集群中被删除,则通过所述服务器从所述第二 ET⑶中获取所述地址信息,并将所述地址信息从所述第一 ET⑶删除。11.根据权利要求7所述的系统,其特征在于, 所述Kube2sky,具体用于将所述主机名作为ET⑶键的一部分,把所述IP地址作为所述ET⑶键对应值的一部分,且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一 ETCD中。12.根据权利要求8至11任一项所述的系统,其特征在于,所述第一ETCD和所述第二ET⑶为相同或不同的ET⑶。
【文档编号】H04L29/12GK105897946SQ201610217807
【公开日】2016年8月24日
【申请日】2016年4月8日
【发明人】许孝盛
【申请人】北京搜狐新媒体信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1