CN105897946B - 一种访问地址的获取方法及*** - Google Patents
一种访问地址的获取方法及*** Download PDFInfo
- Publication number
- CN105897946B CN105897946B CN201610217807.XA CN201610217807A CN105897946B CN 105897946 B CN105897946 B CN 105897946B CN 201610217807 A CN201610217807 A CN 201610217807A CN 105897946 B CN105897946 B CN 105897946B
- Authority
- CN
- China
- Prior art keywords
- etcd
- address information
- address
- docker container
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种访问地址的获取方法,包括:Kube2sky获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址;Kube2sky将所述地址信息写入第一ETCD中;当用户利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ETCD中读取与所述主机名对应的所述IP地址。本发明还公开了一种访问地址的获取***。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种访问地址的获取方法及***。
背景技术
Docker技术相比虚拟机技术而言,它能让更多数量的应用程序在同一硬件上运行,开发人员可以快速构建可随时运行的容器化应用程序,从而简化了管理和部署应用程序的任务。Docker技术除了在开源领域广泛应用,越来越多的商业公司也将业务迁移到了Docker容器中。而Kubernetes是开源的容器集群管理***,其提供应用部署、维护、扩展机制等功能,轻量易部署,启动快速,构成了从容器运行调度、应用存储支持、虚拟网络构成,到用户交互API(Application Programming Interface,应用程序编程接口)等一套完整的容器管理软件栈,利用Kubernetes能方便地管理跨机器运行Docker容器化的应用。
DNS(Domain Name System,域名***)的主要作用是将IP地址映射为便于人们记忆的名称,另外在域中还提供资源定位和命名空间的作用。Kubernetes本身以插件的形式提供了集群内的DNS解决方案,该方案虽然提供Pod(Pod是Kubernetes中创建、调度和管理的最小部署单位)级的解析,但只能以IP地址组成的名字来解析对应Pod的IP地址,例如:在Kubernetes集群的default命名空间下,DNS后缀设置为cluster.local,一个名为test的Pod包含一个主机名为hostname的Docker容器,该Pod的IP地址为1.2.3.4,目前的DNS方案可以通过1-2-3-4.default.pod.cluster.local来访问Pod,但不能直接通过hostname来访问Docker容器。
但是,当在Kubernetes中部署Zookeeper、HDFS(Hadoop Distributed FileSystem,分布式文件***)等服务时,服务中的各个节点间需要通过主机名实现相互访问,而现有的Kubernetes DNS解决方案只能提供Pod级的访问解析,因此通过现有KubernetesDNS方案并不能在Kubernetes中部署这些服务。
发明内容
有鉴于此,本发明实施例的主要目的在于提供一种访问地址的获取方法及***,以实现访问Kubernetes集群中的Docker容器的目的。
为实现上述目的,本发明实施例提供了一种访问地址的获取方法,包括:
Kube2sky获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址;
Kube2sky将所述地址信息写入第一ETCD中;
当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ETCD中读取与所述主机名对应的所述IP地址。
可选的,所述Kube2sky获取Docker容器的地址信息,包括:
服务器将Pod的创建信息发送给客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息,所述服务器和所述客户端为所述Kubernetes集群中的设备;
所述客户端根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器;
所述服务器将所述地址信息写入第二ETCD中;
Kube2sky通过所述服务器从所述第二ETCD中获取所述地址信息。
可选的,所述Kube2sky将所述地址信息写入第一ETCD中,包括:
若所述地址信息为新增Docker容器的地址信息,则在所述第一ETCD中增加所述地址信息;
若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一ETCD中的所述已有Docker容器的原有地址信息。
可选的,所述方法还包括:
若所述Pod在所述Kubernetes集群中被删除,则Kube2sky通过所述服务器从所述第二ETCD中获取所述地址信息,并将所述地址信息从所述第一ETCD删除。
可选的,所述Kube2sky将所述地址信息写入第一ETCD中,包括:
Kube2sky将所述主机名作为ETCD键的一部分,把所述IP地址作为所述ETCD键对应值的一部分,且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一ETCD中。
可选的,所述第一ETCD和所述第二ETCD为相同或不同的ETCD。
本发明实施例还提供了一种访问地址的获取***,包括:
Kube2sky,用于获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址;
Kube2sky,还用于将所述地址信息写入第一ETCD中;
SkyDNS,用于当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ETCD中读取与所述主机名对应的所述IP地址。
可选的,所述***还包括客户端和服务器,所述服务器和所述客户端为所述Kubernetes集群中的设备;
所述服务器,用于将Pod的创建信息发送给所述客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息;
所述客户端,用于根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器;
所述服务器,还用于将所述地址信息写入第二ETCD中;
所述Kube2sky,具体用于通过所述服务器从所述第二ETCD中获取所述地址信息。
可选的,所述Kube2sky包括:
信息增加单元,用于若所述地址信息为新增Docker容器的地址信息,则在所述第一ETCD中增加所述地址信息;
信息替换单元,用于若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一ETCD中的所述已有Docker容器的原有地址信息。
可选的,所述Kube2sky,还用于若所述Pod在所述Kubernetes集群中被删除,则通过所述服务器从所述第二ETCD中获取所述地址信息,并将所述地址信息从所述第一ETCD删除。
可选的,所述Kube2sky,具体用于将所述主机名作为ETCD键的一部分,把所述IP地址作为所述ETCD键对应值的一部分,且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一ETCD中。
可选的,所述第一ETCD和所述第二ETCD为相同或不同的ETCD。
本发明实施例提供的访问地址的获取方法及***,Kube2sky获取Docker容器的地址信息,所述地址信息包括所述Docker容器的主机名和IP地址;Kube2sky将所述地址信息写入第一ETCD中;当用户利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ETCD中读取与所述主机名对应的所述IP地址。可见,Kube2sky通过获取Docker容器的主机名与IP地址的对应关系,并将主机名与IP地址的对应关系写入第一ETCD中,使得SkyDNS可以通过读取第一ETCD中的关系记录来解析容器主机名,因此Kubernetes集群内部可使用容器主机名直接访问具体的容器,为在Kubernetes集群中部署Zookeeper、HDFS等服务提供了解决方案。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的访问地址的获取方法的流程示意图;
图2为本发明实施例提供的信息交互示意图;
图3为本发明实施例提供的主机名和IP地址的获取方法的流程示意图;
图4为本发明实施例提供的访问地址的获取***的组成示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在介绍本发明实施例前,首先介绍本发明中涉及的一些相关术语:
Docker:一个开源的引擎,可以为任何Linux下的应用创建一个轻量级的、可移植的、自给自足的容器。
Docker容器:在Docker中为进程组创建的隔离环境。
Kubernetes:一个开源的容器集群管理***,构建于Docker之上,提供资源调度、部署运行、服务发现、扩容缩容等功能,用于管理跨机器运行容器化的应用。
Pod:Kubernetes中创建、调度和管理的最小部署单位。
Kubernetes Service:是一种抽象概念,它定义了一个Pod逻辑集合以及访问它们的策略。
DNS:全称为Domain Name System,中文名为“域名***”,是因特网使用的命名***,用于将人们使用的机器名字转换为IP地址。
ETCD:一个开源的、高可用的键值存储***,主要用于共享配置和服务发现。
Kube2sky:用于连接Kubernetes和SkyDNS的中间件,监控Kubernetes Service变化并通过ETCD将这些变化反馈给SkyDNS。
SkyDNS:一种用于服务发现的分布式***,使用RAFT机制实现高可用性和一致性,使用DNS查询来发现可用的服务。
ZooKeeper:是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致***的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
参见图1,为本发明实施例提供的访问地址的获取方法的流程示意图,该方法包括步骤101至步骤103,下面结合图2所示的信息交互示意图来说明图1中各个步骤,图2中的交互主体包括Kubernetes客户端、Kubernetes服务端、ETCD1(即第一ETCD)、ETCD2(即第二ETCD)、Kube2sky和SkyDNS。
步骤101:Kube2sky获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名(hostname)和IP地址(IP)。
参见图3所示的主机名和IP地址的获取方法的流程示意图,在本发明实施例中,步骤101具体可以包括以下步骤301至步骤304。
步骤301:服务器将Pod的创建信息发送给客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息,所述服务器和所述客户端为所述Kubernetes集群中的设备。
步骤301对应图2中的服务端与客户端的交互步骤1,具体的,在Kubernetes集群中,包括至少一个Kubernetes客户端和至少一个Kubernetes服务器(即服务端),当Kubernetes集群需要创建Pod时,首先在Kubernetes服务端侧建立Pod,当Pod被成功创建后,Pod中相应的容器信息也被成功创建,Kubernetes服务端将Pod的创建信息发送给Kubernetes客户端,由于Pod的创建信息中包含至少一个Docker容器的创建信息,这样Kubernetes客户端便可以根据Docker容器的创建信息来创建对应的Docker容器了。此外,Kubernetes服务端还将Pod的创建信息保存进ETCD2中与Pod相关的字段里。
其中,所述Docker容器可以是新建Pod中的容器、也可以是已有Pod中的容器。当Kubernetes服务端新建一个Pod时,需要Kubernetes客户端新建Pod中的Docker容器,Kubernetes客户端便可获取新建Docker容器的主机名和Kubernetes集群分配的IP地址;当出现已有Pod被重启等操作时,也需要Kubernetes客户端重建已有Pod中的Docker容器,Kubernetes客户端便可获取已有Docker容器的主机名和Kubernetes集群重新分配的IP地址。
步骤302:所述客户端根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器。
步骤302对应图2中的服务端与客户端的交互步骤2,具体的,当Kubernetes客户端接收到Kubernetes服务端发送的Pod的创建信息后,会根据Pod创建信息中携带的Docker容器的创建信息创建并启动相应的Docker容器,由于Docker容器的创建信息中包含有Kubernetes集群分配给Docker容器的主机名和IP地址等相关信息,所以当Docker容器启动成功后,Kubernetes客户端可以根据所述相关信息收集到Docker容器的主机名(hostname)和集群内分配给Docker容器的IP地址(InternalIP),并将这些信息上报给Kubernetes服务端。
步骤303:所述服务器将所述地址信息写入第二ETCD中。
步骤303对应图2中的服务端与ETCD2的交互步骤3,具体的,当Kubernetes服务端接收到Kubernetes客户端发送的地址信息(包括Docker容器的主机名和IP地址)后,由于ETCD2中的与Pod相关的字段里保存有Pod的创建信息,所以,Kubernetes服务端将接收到的Docker容器的地址信息写进ETCD2中与Pod相关的字段里。其中,写入ETCD2中的地址信息是新增Docker容器的地址信息或已有Docker容器的变化后的地址信息。
步骤304:Kube2sky通过所述服务器从所述第二ETCD中获取所述地址信息。
在本发明实施例中,当Kubernetes集群内的Pod被成功创建时,Pod中相应的Docker容器也被创建,此时Kube2sky将监控到有新Docker容器的主机名与IP地址的对应关系被加入到Kubernetes集群中;当Kubernetes集群内的Pod被成功删除时,该Pod内的Dockers容器会被停止并被回收,此时Kube2sky也将监控到有Docker容器主机名与IP地址的对应关系从Kubernetes集群中被移除了;当Docker容器主机名与IP地址的对应关系发生变化时,例如Pod被重启了,Docker容器的IP地址会发生变化,Kube2sky也将监控到这些变化。
下面介绍Kube2sky如何监控上述内容。
步骤304对应图2中的服务端与Kube2sky的交互步骤4和6、服务端与ETCD2的交互步骤5,具体的,首先Kube2sky会定期询问Kubernetes服务端,即询问是否有新增或删除或变化的Docker容器的地址信息(交互步骤4),然后Kubernetes服务端从ETCD2中查询Kubernetes集群中各个Docker容器的地址信息(交互步骤5),当Kubernetes服务端查询到有新增或删除或变化的Docker容器的地址信息时,会将该地址信息发送给Kube2sky(交互步骤6)。
步骤102:Kube2sky将所述地址信息写入第一ETCD中。
步骤102对应图2中的ETCD1(即所述第一ETCD)与Kube2sky的交互步骤7,具体地,对于Kubernetes集群中的某个新建Pod,关于新建Pod中的每个Docker容器,需要在ETCD1中生成容器IP地址和容器主机名的对应关系记录,以便SkyDNS可以通过这条记录实现对这个新建Pod中Docker容器的DNS解析;对于Kubernetes集群中的某个已有Pod,当已有Pod中的Docker容器的IP地址发生变化时,Kube2sky可监测到该变化并根据该变化更新ETCD1记录中的IP地址;当Kubernetes集群中删除了某个Pod后,Kube2sky可监测到删除了哪个Pod,并将ETCD1中与这个Pod相关的记录删除。
所以,当Kube2sky通过Kubernetes服务端发现ETCD2中与Pod相关的字段值发生了上述更新,即所述更新内容为:新增了Docker容器的主机名和IP地址、或者已有Docker容器的主机名和IP地址发生了变化、或者删除了已有Docker容器的主机名和IP地址,Kube2sky会通过Kubernetes服务端从ETCD2中拿到所述更新内容(包括Docker容器的主机名和IP地址),如果更新内容是新增的某Docker容器的主机名和IP地址或已有Docker容器的变化后的主机名和IP地址,则将该主机名和IP地址以SkyDNS可识别的记录形式写进ETCD1中与该Docker容器相关的字段里,如果所述更新内容是删除了的某Docker容器的主机名和IP地址,则将该主机名和IP地址从ETCD1中删除。进一步地,ETCD1还会向SkyDNS发送更新通知(对应图2中的ETC1与Kube2sky的交互步骤7)。
基于上述内容,步骤102可以包括:
若所述地址信息为新增Docker容器的地址信息,则在所述第一ETCD中增加所述地址信息;
若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一ETCD中的所述已有Docker容器的原有地址信息。
进一步地,如果Kubernetes集群中删除了某Pod,则Pod中各个Docker容器的主机名和IP地址也会被相应的删除,因此,所述方法还包括:若所述Pod在所述Kubernetes集群中被删除,则Kube2sky通过所述服务器从所述第二ETCD中获取所述地址信息,并将所述地址信息从所述第一ETCD删除。
进一步地,当Kube2sky监控到容器主机名与容器IP地址的对应关系发生了变化、或新增了容器主机名与容器IP地址的对应关系后,Kube2sky将会把容器主机名作为ETCD1键的一部分、把IP地址作为该键对应值的一部分以SkyDNS可识别的格式写入到ETCD1中。例如Kubernetes集群中有一个主机名为“kafka-1-wkfal”的Docker容器,它的IP地址为“172.20.0.12”,在ETCD1中对应的记录可以为如下形式:
键——“/skydns/sohu/domeos/kafka-1-wkfal/19d074al”;
值——“{“host”:”172.20.0.12”,“priority”:10,“weight”:10,“ttl”:30}”。
基于上述内容,步骤102还可以包括:
Kube2sky将所述主机名作为ETCD键的一部分、把所述IP地址作为所述ETCD键对应值的一部分、且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一ETCD中。
步骤103:当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ETCD中读取与所述主机名对应的所述IP地址。
步骤103对应图2中的SkyDNS与Kubernetes集群的交互步骤8,具体地,当Kubernetes集群内部通过主机名访问Docker容器时,SkyDNS可根据ETCD1中与SkyDNS相关的字段对Docker容器的主机名进行解析,即SkyDNS可以通过读取ETCD1中的主机名和IP地址的对应关系记录来解析出该主机名对应的IP地址。比如,在Kubernetes集群中部署Zookeeper等服务时,各个节点间通过主机名实现相互访问,因此需要将主机名与其对应的IP地址的对应关系加入ETCD1中,以便SkyDNS为Kubernetes集群提供DNS服务。
综上,在Kubernetes集群中新建Pod、删除Pod以及已有Pod中的容器IP地址的改变都会触发相应的事件,当Kube2sky监测到这些事件时,Kube2sky通过访问Kubernetes服务端的API接口,可以获取集群中Pod的相关信息,包括该Pod内所有容器的主机名和IP地址等,然后将这些信息以SkyDNS可识别的格式写入ETCD1对应键值里。当Kubernetes集群需要对Pod中容器主机名进行解析时,SkyDNS就可以读取ETCD1中的相关记录解析出该主机名对应的IP地址。
需要说明的是,所述第一ETCD和所述第二ETCD为相同或不同的ETCD。由于所述第一ETCD和所述第二ETCD中的数据是相互隔离的,所以,所述第一ETCD和所述第二ETCD可以是不同的ETCD,所述第一ETCD和所述第二ETCD也可以是相同的ETCD,所述第一ETCD和所述第二ETCD中的数据位于不同的数据区域。
本发明实施例提供的访问地址的获取方法,Kube2sky获取Docker容器的地址信息,所述地址信息包括所述Docker容器的主机名和IP地址;Kube2sky将所述地址信息写入第一ETCD中;当用户利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ETCD中读取与所述主机名对应的所述IP地址。可见,Kube2sky通过获取Docker容器的主机名与IP地址的对应关系,并将主机名与IP地址的对应关系写入第一ETCD中,使得SkyDNS可以通过读取第一ETCD中的关系记录来解析容器主机名,因此Kubernetes集群内部可使用容器主机名直接访问具体的容器,为在Kubernetes集群中部署Zookeeper、HDFS等服务提供了解决方案。
参见图4,为本发明实施例提供的访问地址的获取***的组成示意图,该***包括:
Kube2sky401,用于获取Docker容器的地址信息,所述Docker容器为在Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址;
Kube2sky401,还用于将所述地址信息写入第一ETCD中;
SkyDNS402,用于当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ETCD中读取与所述主机名对应的所述IP地址。
在本发明实施例中,所述***还包括客户端和服务器,所述服务器和所述客户端为所述Kubernetes集群中的设备;
所述服务器,用于将Pod的创建信息发送给所述客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息;
所述客户端,用于根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器;
所述服务器,还用于将所述地址信息写入第二ETCD中;
所述Kube2sky,具体用于通过所述服务器从所述第二ETCD中获取所述地址信息。
在本发明实施例中,所述Kube2sky包括:
信息增加单元,用于若所述地址信息为新增Docker容器的地址信息,则在所述第一ETCD中增加所述地址信息;
信息替换单元,用于若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一ETCD中的所述已有Docker容器的原有地址信息。
在本发明实施例中,所述Kube2sky,还用于若所述Pod在所述Kubernetes集群中被删除,则通过所述服务器从所述第二ETCD中获取所述地址信息,并将所述地址信息从所述第一ETCD删除。
在本发明实施例中,所述Kube2sky,具体用于将所述主机名作为ETCD键的一部分、把所述IP地址作为所述ETCD键对应值的一部分、且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一ETCD中。
在本发明实施例中,所述第一ETCD和所述第二ETCD为相同或不同的ETCD。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本发明各个实施例或者实施例的某些部分所述的方法。
需要说明的是,对于实施例公开的***而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种访问地址的获取方法,其特征在于,包括:
服务器将Pod的创建信息发送给客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息,所述服务器和所述客户端为Kubernetes集群中的设备;
所述客户端根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器;
所述服务器将所述地址信息写入第二ETCD中;
Kube2sky通过所述服务器从所述第二ETCD中获取所述地址信息;
所述Docker容器为在所述Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址;
Kube2sky将所述地址信息写入第一ETCD中;
当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,SkyDNS从所述第一ETCD中读取与所述主机名对应的所述IP地址。
2.根据权利要求1所述的方法,其特征在于,所述Kube2sky将所述地址信息写入第一ETCD中,包括:
若所述地址信息为新增Docker容器的地址信息,则在所述第一ETCD中增加所述地址信息;
若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一ETCD中的所述已有Docker容器的原有地址信息。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述Pod在所述Kubernetes集群中被删除,则Kube2sky通过所述服务器从所述第二ETCD中获取所述地址信息,并将所述地址信息从所述第一ETCD删除。
4.根据权利要求1所述的方法,其特征在于,所述Kube2sky将所述地址信息写入第一ETCD中,包括:
Kube2sky将所述主机名作为ETCD键的一部分,把所述IP地址作为所述ETCD键对应值的一部分,且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一ETCD中。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述第一ETCD和所述第二ETCD为相同或不同的ETCD。
6.一种访问地址的获取***,其特征在于,包括:
服务器,用于将Pod的创建信息发送给客户端,所述Pod的创建信息中包含至少一个Docker容器的创建信息;
所述客户端,用于根据所述Docker容器的创建信息创建并启动所述Docker容器,并在所述Docker容器启动成功后,将所述Docker容器的地址信息上报至所述服务器;
所述服务器和所述客户端为Kubernetes集群中的设备;
所述服务器,还用于将所述地址信息写入第二ETCD中;
Kube2sky,具体用于通过所述服务器从所述第二ETCD中获取所述地址信息;
所述Docker容器为在所述Kubernetes集群的一个Pod中创建的容器,所述地址信息包括所述Docker容器的主机名和IP地址;
所述Kube2sky,还用于将所述地址信息写入第一ETCD中;
SkyDNS,用于当所述Kubernetes集群内利用所述主机名访问所述Docker容器时,所述SkyDNS从所述第一ETCD中读取与所述主机名对应的所述IP地址。
7.根据权利要求6所述的***,其特征在于,所述Kube2sky包括:
信息增加单元,用于若所述地址信息为新增Docker容器的地址信息,则在所述第一ETCD中增加所述地址信息;
信息替换单元,用于若所述地址信息为已有Docker容器的变化后的地址信息,则利用所述地址信息替换所述第一ETCD中的所述已有Docker容器的原有地址信息。
8.根据权利要求6所述的***,其特征在于,
所述Kube2sky,还用于若所述Pod在所述Kubernetes集群中被删除,则通过所述服务器从所述第二ETCD中获取所述地址信息,并将所述地址信息从所述第一ETCD删除。
9.根据权利要求6所述的***,其特征在于,
所述Kube2sky,具体用于将所述主机名作为ETCD键的一部分,把所述IP地址作为所述ETCD键对应值的一部分,且将所述主机名和所述IP地址以SkyDNS可识别的格式写入到所述第一ETCD中。
10.根据权利要求6至9任一项所述的***,其特征在于,所述第一ETCD和所述第二ETCD为相同或不同的ETCD。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610217807.XA CN105897946B (zh) | 2016-04-08 | 2016-04-08 | 一种访问地址的获取方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610217807.XA CN105897946B (zh) | 2016-04-08 | 2016-04-08 | 一种访问地址的获取方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105897946A CN105897946A (zh) | 2016-08-24 |
CN105897946B true CN105897946B (zh) | 2019-04-26 |
Family
ID=57012312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610217807.XA Active CN105897946B (zh) | 2016-04-08 | 2016-04-08 | 一种访问地址的获取方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105897946B (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10291472B2 (en) | 2015-07-29 | 2019-05-14 | AppFormix, Inc. | Assessment of operational states of a computing environment |
US10581687B2 (en) | 2013-09-26 | 2020-03-03 | Appformix Inc. | Real-time cloud-infrastructure policy implementation and management |
CN107277100B (zh) * | 2016-03-30 | 2022-03-04 | 阿普福米克斯有限公司 | 用于近实时云基础设施策略实现和管理的***和方法 |
CN106330923B (zh) * | 2016-08-26 | 2019-10-25 | 中国联合网络通信集团有限公司 | 基于Kubernetes***的节点注册方法及*** |
CN106790483A (zh) * | 2016-12-13 | 2017-05-31 | 武汉邮电科学研究院 | 基于容器技术的Hadoop集群***及快速构建方法 |
CN108234437A (zh) * | 2016-12-22 | 2018-06-29 | 航天信息股份有限公司 | 一种基于Docker 技术部署OpenStack 服务的方法及*** |
CN106686088A (zh) * | 2016-12-30 | 2017-05-17 | 广东浪潮大数据研究有限公司 | 一种支持Docker环境多网络模式的管理方法 |
CN106790658A (zh) * | 2017-01-19 | 2017-05-31 | 郑州云海信息技术有限公司 | 一种Docker网络插件实现方法 |
US11068314B2 (en) | 2017-03-29 | 2021-07-20 | Juniper Networks, Inc. | Micro-level monitoring, visibility and control of shared resources internal to a processor of a host machine for a virtual environment |
US10868742B2 (en) | 2017-03-29 | 2020-12-15 | Juniper Networks, Inc. | Multi-cluster dashboard for distributed virtualization infrastructure element monitoring and policy control |
US11323327B1 (en) | 2017-04-19 | 2022-05-03 | Juniper Networks, Inc. | Virtualization infrastructure element monitoring and policy control in a cloud environment using profiles |
CN107493191B (zh) * | 2017-08-08 | 2020-12-22 | 深信服科技股份有限公司 | 一种集群节点及自调度容器集群*** |
CN107580083B (zh) * | 2017-09-20 | 2020-11-03 | 北京京东尚科信息技术有限公司 | 一种容器ip地址分配的方法和*** |
CN107465765B (zh) * | 2017-09-21 | 2020-07-14 | 深圳市视维科技股份有限公司 | 一种基于容器云的智能应用网关实现方法 |
CN107707688A (zh) * | 2017-10-19 | 2018-02-16 | 杭州数梦工场科技有限公司 | 一种kubernetes集群解析宿主机主机名的方法及装置 |
CN108040079A (zh) * | 2017-10-26 | 2018-05-15 | 山东浪潮云服务信息科技有限公司 | 基于国产cpu和操作***的分布式容器集群服务发现方法 |
US10719352B2 (en) | 2018-01-22 | 2020-07-21 | International Business Machines Corporation | System and method for in-process namespace switching |
CN109101342B (zh) * | 2018-07-20 | 2020-07-10 | 北京百度网讯科技有限公司 | 分布式作业协调控制方法、装置、计算机设备及存储介质 |
CN109271233B (zh) * | 2018-07-25 | 2021-01-12 | 上海华云互越数据技术有限公司 | 基于Kubernetes组建Hadoop集群的实现方法 |
CN109104317B (zh) * | 2018-08-22 | 2021-06-29 | 中科曙光国际信息产业有限公司 | 基于Docker容器的大数据集群自动配置方法及装置 |
CN109525590B (zh) * | 2018-12-11 | 2021-12-07 | 中科曙光国际信息产业有限公司 | 数据包的传输方法及装置 |
CN111431955B (zh) * | 2019-01-10 | 2023-03-24 | 中科星图股份有限公司 | 流式数据处理***及方法 |
CN110266679B (zh) * | 2019-06-14 | 2023-02-28 | 腾讯科技(成都)有限公司 | 容器网络隔离方法及装置 |
CN110427249A (zh) * | 2019-07-26 | 2019-11-08 | 重庆紫光华山智安科技有限公司 | 任务分配方法、pod初始化方法及相关装置 |
CN110597568B (zh) * | 2019-08-30 | 2020-11-10 | 深圳市宏电技术股份有限公司 | 一种插件部署方法、***及终端 |
CN111104368B (zh) * | 2019-12-16 | 2023-08-22 | 浪潮云信息技术股份公司 | 一种实现容器存储扩容的方法及*** |
CN111182089B (zh) * | 2019-12-31 | 2022-09-20 | 北京金山云网络技术有限公司 | 容器集群***和访问大数据组件的方法、装置及服务器 |
CN111541738B (zh) * | 2020-03-31 | 2022-05-27 | 北京华三通信技术有限公司 | 一种通信方法及装置 |
WO2021196080A1 (en) * | 2020-04-01 | 2021-10-07 | Vmware Information Technology (China) Co., Ltd. | Auto deploying network elements for heterogeneous compute elements |
CN111464648B (zh) * | 2020-04-02 | 2021-11-05 | 聚好看科技股份有限公司 | 一种分布式本地dns***及域名查询方法 |
CN111796905B (zh) * | 2020-05-22 | 2021-04-16 | 浙商银行股份有限公司 | 一种kubernetes容器云平台VLAN网络的实现方法及*** |
CN111786984B (zh) * | 2020-06-28 | 2022-03-25 | 杭州海康威视数字技术股份有限公司 | Pod通信连接方法、装置及电子设备、存储介质 |
US11803408B2 (en) | 2020-07-29 | 2023-10-31 | Vmware, Inc. | Distributed network plugin agents for container networking |
CN113141405B (zh) * | 2021-04-23 | 2022-11-15 | 北京奇艺世纪科技有限公司 | 服务访问方法、中间件***、电子设备和存储介质 |
CN113965546A (zh) * | 2021-09-10 | 2022-01-21 | 济南浪潮数据技术有限公司 | 一种容器云平台为应用设置租户专用dns服务器的方法 |
CN114356432B (zh) * | 2021-10-29 | 2024-06-18 | 郑州云海信息技术有限公司 | 大数据平台配置***、方法、装置及存储介质 |
US20230231741A1 (en) | 2022-01-14 | 2023-07-20 | Vmware, Inc. | Per-namespace ip address management method for container networks |
US11848910B1 (en) | 2022-11-11 | 2023-12-19 | Vmware, Inc. | Assigning stateful pods fixed IP addresses depending on unique pod identity |
CN117519989B (zh) * | 2024-01-03 | 2024-04-02 | 上海燧原智能科技有限公司 | 一种分布式***托管方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103297548A (zh) * | 2012-02-23 | 2013-09-11 | 上海盛霄云计算技术有限公司 | 一种云计算环境中域名解析规则的更新方法及装置 |
CN104991815A (zh) * | 2015-06-19 | 2015-10-21 | 北京奇虎科技有限公司 | Docker容器的管理方法和*** |
-
2016
- 2016-04-08 CN CN201610217807.XA patent/CN105897946B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103297548A (zh) * | 2012-02-23 | 2013-09-11 | 上海盛霄云计算技术有限公司 | 一种云计算环境中域名解析规则的更新方法及装置 |
CN104991815A (zh) * | 2015-06-19 | 2015-10-21 | 北京奇虎科技有限公司 | Docker容器的管理方法和*** |
Non-Patent Citations (2)
Title |
---|
"Kubernetes初探:总体概述及使用示例";张俊;《https://blog.csdn.net/zhangjun2915/article/details/40598151》;20141104;正文第2小节第1至7行,第3小节第2至9行 |
"在k8s中搭建可解析hostname的DNS服务";Openxxs;《https://www.cnblogs.com/openxxs/p/5015734.html》;20160125;正文第1小节第2至4行,第2小节第2至6行 |
Also Published As
Publication number | Publication date |
---|---|
CN105897946A (zh) | 2016-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105897946B (zh) | 一种访问地址的获取方法及*** | |
CN101449559B (zh) | 分布式存储器 | |
US8165146B1 (en) | System and method for storing/caching, searching for, and accessing data | |
CN102638584B (zh) | 数据分布缓存方法及*** | |
CN103164525B (zh) | Web应用发布方法和装置 | |
CN103605698A (zh) | 一种用于分布异构数据资源整合的云数据库*** | |
CN104092770A (zh) | 基于云计算的企业内部通讯录管理方法和*** | |
CN107888666A (zh) | 一种跨地域数据存储***以及数据同步方法和装置 | |
CN110351532B (zh) | 视频大数据云平台云存储服务方法 | |
CN109005433B (zh) | 一种视频云服务平台架构及实现方法 | |
CN101442558A (zh) | 一种为p2sp网络提供索引服务的方法和*** | |
CN107800808A (zh) | 一种基于Hadoop架构的数据存储*** | |
CN113986873A (zh) | 一种海量物联网数据模型化的处理、存储与共享方法 | |
CN104104582B (zh) | 一种数据存储路径管理方法、客户端及服务器 | |
CN108509437A (zh) | 一种ElasticSearch查询加速方法 | |
CN102523111A (zh) | 支持可定制组的网络管理*** | |
US20160179823A1 (en) | Method for Processing and Displaying Real-Time Social Data on Map | |
CN110213156A (zh) | 一种跨中心群组即时通信方法和*** | |
CN108616581A (zh) | 基于olap/oltp混合应用的数据存储***及方法 | |
CN115811546A (zh) | 用于科技服务实现网络协同分布式处理的***及其方法 | |
CN108540367A (zh) | 一种消息处理方法及*** | |
TWI238620B (en) | Apparatus and method for collecting updated information from information providing server in network | |
EP3577587B1 (en) | Satellite and central asset registry systems and methods and rights management systems | |
CN104184824B (zh) | 手机报定制和推送的装置及方法 | |
CN106844763A (zh) | 一种对互联网媒体文件进行修改式展现的方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |