CN117081959B - 一种网络连通性监测与恢复方法、系统、介质及设备 - Google Patents

一种网络连通性监测与恢复方法、系统、介质及设备 Download PDF

Info

Publication number
CN117081959B
CN117081959B CN202311337943.9A CN202311337943A CN117081959B CN 117081959 B CN117081959 B CN 117081959B CN 202311337943 A CN202311337943 A CN 202311337943A CN 117081959 B CN117081959 B CN 117081959B
Authority
CN
China
Prior art keywords
pod
network
module
container
deployment
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
Application number
CN202311337943.9A
Other languages
English (en)
Other versions
CN117081959A (zh
Inventor
蒋驰
陈南飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mingyang Industrial Technology Research Institute Shenyang Co ltd
Original Assignee
Mingyang Industrial Technology Research Institute Shenyang Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mingyang Industrial Technology Research Institute Shenyang Co ltd filed Critical Mingyang Industrial Technology Research Institute Shenyang Co ltd
Priority to CN202311337943.9A priority Critical patent/CN117081959B/zh
Publication of CN117081959A publication Critical patent/CN117081959A/zh
Application granted granted Critical
Publication of CN117081959B publication Critical patent/CN117081959B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity

Landscapes

  • Engineering & Computer Science (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种网络连通性监测与恢复方法、系统、介质及设备,其中,包括网络监测维护模块、网络恢复模块、部署改造模块、镜像改造模块和容器镜像仓库,网络监测维护模块分别与Pod和网络恢复模块通信连接,网络恢复模块分别与Pod和部署改造模块通信连接,部署改造模块分别与容器镜像仓库和部署所述Pod的节点通信连接,容器镜像仓库与镜像改造模块通信连接。本发明可以用于在Kubernetes集群中监测Pod业务接口的网络连通性,并且在网络连通性出现异常时自动为Pod业务接口恢复网络通信。

Description

一种网络连通性监测与恢复方法、系统、介质及设备
技术领域
本发明涉及Kubernetes集群技术领域,具体地说是一种网络连通性监测与恢复方法、系统、介质及设备。
背景技术
在将传统应用向Kubernetes集群系统进行迁移时,传统应用将以Pod(容器组,即一组容器)形式部署在Kubernetes集群系统中。在Kubernetes集群系统中,正常情况下,Pod被创建以后只有一个网络接口eth0,Kubernetes集群系统无法为Pod创建多个网络接口。在本发明中,将eth0这个网络接口称为Pod管理接口。
部分传统应用在部署时需要由宿主服务器提供多个网络接口。不同的网络接口,分别用来承载不同类型的网络流量,比如管理网流量、业务网流量等。将传统应用向Kubernetes集群系统进行迁移时,应当尽量保证通过Pod启动的应用,与传统应用具有相同的网络运行环境,以此保证网络通信的可靠性,同时减少由应用改造带来的迁移成本较高的问题。
在Kubernetes集群系统中,Pod管理接口隶属于集群网络,集群网络的搭建可以由多种CNI组件来实现,包括但不限于Calico、Flannel等组件。随着技术的发展,目前在为Kubernetes集群系统搭建集群网络的同时,还可以采用Multus CNI组件与MacVlan CNI组件为Kubernetes集群系统搭建新的网络(在本发明中将其称为业务网络),并且可以在业务网络中按需为Pod创建一个或者多个网络接口(在本发明中将其称为业务接口),并且可以为业务接口分配固定不变的静态IPv4、IPv6地址。此时,Pod将拥有一个管理接口,以及一个或者多个业务接口。
然而,在生产环境中采用Deployment方式部署Pod,基于Multus CNI组件与MacVlan CNI组件为Pod创建一个或者多个业务接口、并且为业务接口分配静态IPv6地址,在重启该Deployment之后,该Pod可以正常启动与运行,但是该Pod的业务接口与所属业务网络的网关之间的连通性有较大的概率存在问题,该Pod的业务接口有较大的概率无法与所属业务网络的网关进行通信,从而导致该Pod无法正常地对外提供业务服务。
基于此,如何在Kubernetes集群系统中监测Pod业务接口的网络连通性,并且在网络连通性出现异常时自动为Pod业务接口恢复网络通信,是十分迫切和必要的。
发明内容
为此,本发明所要解决的技术问题在于提供一种网络连通性监测与恢复方法、系统、介质及设备,可以用于在Kubernetes集群中监测Pod业务接口的网络连通性,并且在网络连通性出现异常时自动为Pod业务接口恢复网络通信。
为解决上述技术问题,本发明提供如下技术方案:
一种网络连通性监测与恢复方法,用于对Kubernetes集群中具有一个或多个业务接口Pod的业务接口网络连通性进行监测与恢复,包括如下步骤:
S100)利用网络监测维护模块对Pod的业务接口网络连通性进行监测,当监测到Pod的业务接口掉线时,由网络监测维护模块向网络恢复模块发送恢复网络指令;
S200)网络恢复模块接收到恢复网络指令之后,向部署改造模块发送在发生Pod掉线的节点上重新部署Pod的指令;
S300)部署改造模块接收到在发生Pod掉线的节点上重新部署Pod的指令后在发生Pod掉线的节点上重新部署Pod,并为重新部署的Pod的业务接口重新添加缺省路由;
S400)网络恢复模块在监测到Pod重新部署完成后,跳转至步骤S100)继续执行。
上述方法,在步骤S100)中,网络监测维护模块利用网络监测子模块通过如下步骤对Pod的业务接口网络连通性进行监测:
S101)在Pod中检查用于表示Pod IPv6业务网络缺省网关的环境变量IPV6_DEFAULT_GATEWAY是否存在,如果存在,则跳转至步骤S102)执行,反之,则跳转至步骤S103)执行;
S102)执行命令ping6 -c 1 $IPV6_DEFAULT_GATEWAY,检测Pod业务接口网络连通性,如果网络监测子模块接收到Pod IPv6业务网络缺省网关返回的数据包,表示Pod业务接口网络连通性正常且检测成功,然后休眠10分钟后继续执行命令ping6-c 1 $IPV6_DEFAULT_GATEWAY以检测Pod业务接口网络连通性,反之,则表示Pod业务接口网络连通不正常且检测失败,休眠5秒后执行命令ping6 -c 1 $IPV6_DEFAULT_GATEWAY以检测Pod业务接口网络连通性,并对检测失败次数进行计数,当连续检测失败次数小于或等于阈值时,则继续休眠5秒后执行命令ping6 -c 1 $IPV6_DEFAULT_GATEWAY以检测Pod业务接口网络连通性,而当连续检测失败次数大于阈值时,跳转步骤S103)继续执行;
S103)获取Pod的名称并在Kubernetes集群Etcd数据库中根据该Pod的名称获取用于部署该Pod的Deployment对象,然后为该Deployment对象添加一个标签,键为“network-connectivity”,值为“abnormal”;
S104)向网络恢复模块发送重新部署Pod的指令。
上述方法,在步骤S300)中,在完成重新部署的Pod部署后,部署改造模块利用启动子模块通过如下步骤完成为重新部署的Pod的业务接口重新添加缺省路由的操作:
S310)在重新部署的Pod的容器中检查用于表示多接口Pod IPv6业务网络缺省网关的环境变量IPV6_DEFAULT_GATEWAY是否存在,若不存在,则结束执行,反之,则跳转至步骤S311)继续执行;其中,本步骤中的结束执行为结束为重新部署的Pod的业务接口重新添加缺省路由的操作;
S311)在重新部署的Pod中检查IPv6缺省路由是否存在,若存在,则执行命令ip-6route del default删除IPv6缺省路由,然后再执行命令ip-6 route add default via ${IPV6_DEFAULT_GATEWAY}为重新部署的Pod添加IPv6缺省路由,将IPV6_DEFAULT_GATEWAY设置为IPv6缺省网关。
上述方法,在步骤S400)中,网络恢复模块通过下述步骤完成对重新部署的Pod部署完成的确认与重启:
S410)当监听到Deployment对象被创建或编辑时,网络恢复模块获取Deployment对象的全部信息;
S411)根据步骤S410)中获得Deployment对象的全部信息,检查Deployment对象的Labels标签中是否存在键为“network-connectivity”的标签,若不存在,则结束执行,反之,则将键为“network-connectivity”的标签的值记作val,跳转至步骤S412)继续执行;其中,本步骤中的结束执行为结束对重新部署的Pod部署完成的确认与重启;
S412)检查val是否与“abnormal”相等,如若不相等,则执行结束,反之,则重启Deployment对象,完成对重新部署的Pod部署完成的确认与重启。
上述方法,在步骤S300)中,部署改造模块重新部署的Pod中有且仅有一个容器,部署该容器时使用容器优改镜像对该容器进行部署;容器优改镜像由镜像改造模块将容器基础镜像通过如下步骤优化改造得到:
S320)提取容器基础镜像的镜像名称与镜像标签;
S321)在镜像改造模块的Dockerfile模板库中查找是否存在与步骤S320)中提取的镜像名称完全相同的Dockerfile模板,若存在,则根据该Dockerfile模板构建容器优改镜像,并将构建好的容器优改镜像上传至容器镜像仓库,反之,则结束执行。
上述方法,在步骤S321)中,根据该Dockerfile模板构建容器优改镜像时,容器优改镜像的镜像名称为包含有容器镜像仓库的IP地址与端口和容器基础镜像的镜像名称的镜像名称。
一种利用上述网络连通性监测与恢复方法对网络连通性进行监测与恢复的系统,包括:
网络监测维护模块,用于对具有一个或多个业务接口的Pod的业务接口网络连通性进行监测且当监测到Pod的业务接口掉线时向网络恢复模块发送恢复网络指令;
网络恢复模块,用于接收到恢复网络指令之后向部署改造模块发送在发生Pod掉线的节点上重新部署Pod的指令并对部署改造模块所重新部署的Pod进行重启;
部署改造模块,用于在发生Pod掉线的节点上重新部署Pod并为重新部署的Pod的业务接口重新添加缺省路由;
网络监测维护模块分别与Pod和网络恢复模块通信连接,网络恢复模块分别与Pod和部署改造模块通信连接,部署改造模块与部署所述Pod的节点通信连接。
上述系统,还包括:
镜像改造模块,用于通过根据容器基础镜像和Dockerfile模板构建容器优改镜像;
容器镜像仓库,用于存放容器优改镜像并为Kubernetes集群提供容器镜像上传和下载服务;容器镜像仓库由镜像仓库管理模块进行部署;
镜像改造模块与容器镜像仓库通信连接,容器镜像仓库与部署改造模块通信连接。
计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法。
计算机设备,包括可读存储介质、处理器以及存储在可读存储介质上并可在处理器上运行的计算机程序,所述计算机程序被处理器执行时实现上述方法。
本发明的技术方案取得了如下有益的技术效果:
本发明可以用于在Kubernetes集群中监测Pod业务接口的网络连通性,并且在网络连通性出现异常时自动为Pod业务接口恢复网络通信,减少手动为Pod业务接口恢复网络通信的人工,提高Pod业务接口恢复网络通信的效率。
附图说明
图1为本发明中网络连通性监测与恢复系统的工作原理图;
图2为本发明中网络连通性监测与恢复流程图;
图3为本发明中可以进行网络连通性监测与恢复的计算机设备原理图。
具体实施方式
下面结合示例,针对本发明进行进一步说明。
如图1所示,本发明中,网络连通性监测与恢复系统,包括网络监测维护模块、网络恢复模块、部署改造模块、镜像改造模块和容器镜像仓库,网络监测维护模块分别与Pod和网络恢复模块通信连接,网络恢复模块分别与Pod和部署改造模块通信连接,部署改造模块分别与容器镜像仓库和部署所述Pod的节点通信连接,容器镜像仓库与镜像改造模块通信连接。
其中,网络监测维护模块用于对具有一个或多个业务接口的Pod的业务接口网络连通性进行监测且当监测到Pod的业务接口掉线时向网络恢复模块发送恢复网络指令,网络恢复模块用于接收到恢复网络指令之后向部署改造模块发送在发生Pod掉线的节点上重新部署Pod的指令并对部署改造模块所重新部署的Pod进行重启,部署改造模块用于在发生Pod掉线的节点上重新部署Pod并为重新部署的Pod的业务接口重新添加缺省路由,镜像改造模块用于通过根据容器基础镜像和Dockerfile模板构建容器优改镜像,容器镜像仓库用于存放容器优改镜像并为Kubernetes集群提供容器镜像上传和下载服务,容器镜像仓库由镜像仓库管理模块进行部署。
本领域中,Kubernetes集群由Master节点与Worker节点所组成。Master节点的数量通常为奇数个,比如1、3、5、7等,而Worker节点的数量则可以不进行限制,即可以没有Worker节点。
本实施例中,Kubernetes集群总共包括6个节点,其中3个节点是Master节点,依次编号为master01、master02和master03,另外3个节点是Worker节点,依次编号为worker01、worker02和worker03,且共包含3个命名空间,它们分别是default、kube-system以及cncp-system。
master01、master02、master03、worker01、worker02和worker03六个节点的IP地址依次为10.89.1.11、10.89.1.12、10.89.1.13、10.89.1.14、10.89.1.15、10.89.1.16。并且,三个Master节点master01、master02和master03在对外提供API服务时,统一以VIP(即虚IP)对外提供服务,在本实施例中,VIP为10.89.1.10。
本实施例中,采用Calico组件为Kubernetes集群搭建集群网络,采用Multus CNI组件与MacVlan CNI组件为Kubernetes集群搭建业务网络,采用OpenEBS分布式存储方案为Kubernetes集群中的Pod提供存储服务。在部署OpenEBS分布式存储方案之后,将创建StorageClass(即存储类)对象,该存储类对象的名称为openebs-sc。
如图2所示,利用网络连通性监测与恢复系统对Kubernetes集群中Pod业务接口的连通性进行监测与恢复,具体步骤如下:
S100)利用网络监测维护模块对Pod的业务接口网络连通性进行监测,当监测到Pod的业务接口掉线时,由网络监测维护模块向网络恢复模块发送恢复网络指令;
S200)网络恢复模块接收到恢复网络指令之后,向部署改造模块发送在发生Pod掉线的节点上重新部署Pod的指令;
S300)部署改造模块接收到在发生Pod掉线的节点上重新部署Pod的指令后在发生Pod掉线的节点上重新部署Pod,并为重新部署的Pod的业务接口重新添加缺省路由;
S400)网络恢复模块在监测到Pod重新部署完成后,跳转至步骤S100)继续执行。
本发明中,网络监测维护模块由Master节点运行。在对Pod业务接口网络连通性进行监测时,网络监测维护模块为Pod提供网络监测子模块并由网络监测子模块对Pod业务接口网络连通性进行监测,其中,网络监测子模块中设有网络监测脚本,网络监测子模块在Pod中运行。具体应用过程中,由网络监测维护模块在节点的各个命名空间中创建ConfigMap对象,并将网络监测子模块存储在各个ConfigMap对象中。而在各个命名空间中,ConfigMap对象的名称均为cm-01。
同时,在本发明中,网络监测维护模块将监听Kubernetes集群Etcd数据库中Namespace(即命名空间)对象的变化,并进行相应的处理:在新的Namespace对象被创建时,网络监测维护模块将在这个新的命名空间中创建ConfigMap对象cm-01,并将网络监测模块存储至cm-01对象中。
具体来讲,网络监测维护模块运行时,执行如下操作:
(I)从Kubernetes集群Etcd数据库中获取所有Namespace对象,每个Namespace对象都代表一个命名空间;
(II)依次遍历Kubernetes集群中的3个Namespace对象,在相应的命名空间中创建ConfigMap对象cm-01。
本实施例中,以在cncp-system命名空间中创建ConfigMap对象cm-01为例来说明在3个命名空间中创建ConfigMap对象cm-01。在cncp-system命名空间中创建ConfigMap对象cm-01的具体步骤为:
(i)在Kubernetes集群Etcd数据库中检查在cncp-system命名空间中是否存在ConfigMap对象cm-01,若在cncp-system命名空间中已存在ConfigMap对象cm-01,则执行结束;否则,跳转至步骤(ii)继续执行;
(ii)创建ConfigMap对象cm-01,所属的命名空间为cncp-system;在cm-01对象中,data字段的数据类型为Map类型,它的键、值的数据类型均为字符串类型,在data字段中添加一个键值对,其中,键为“network-monitor.sh”,值为一个长字符串,这个长字符串的内容为网络监测脚本的内容。
具体来讲,在Kubernetes集群Etcd数据库中新建一个Namespace对象ns-01,表示新建一个命名空间ns-01。网络监测维护模块将监听到ns-01对象被创建,然后在ns-01命名空间中创建ConfigMap对象cm-01,创建过程的原理与前述内容相同。
本实施例中,网络监测子模块在Pod中运行并通过如下步骤完成Pod业务接口的网络连通性的监测:
S101)在Pod中检查用于表示Pod IPv6业务网络缺省网关的环境变量IPV6_DEFAULT_GATEWAY是否存在,如果存在,则跳转至步骤S102)执行,反之,则跳转至步骤S103)执行;
S102)执行命令ping6 -c 1 $IPV6_DEFAULT_GATEWAY,检测Pod业务接口网络连通性,如果网络监测子模块接收到Pod IPv6业务网络缺省网关返回的数据包,表示Pod业务接口网络连通性正常且检测成功,然后休眠10分钟后继续执行命令ping6-c 1 $IPV6_DEFAULT_GATEWAY以检测Pod业务接口网络连通性,反之,则表示Pod业务接口网络连通不正常且检测失败,休眠5秒后执行命令ping6 -c 1 $IPV6_DEFAULT_GATEWAY以检测Pod业务接口网络连通性,并对检测失败次数进行计数,当连续检测失败次数小于或等于阈值时,则继续休眠5秒后执行命令ping6 -c 1 $IPV6_DEFAULT_GATEWAY以检测Pod业务接口网络连通性,而当连续检测失败次数大于阈值时,跳转步骤S103)继续执行;其中,将连续检测失败次数记为failure-counts,并将它的值设置为0,当检测失败一次,则将failure-counts的数值加1,然后判断failure-counts的数值是否小于3;当检测成功时,连续检测失败次数的值归零,重新计数;
S103)获取Pod的名称并在Kubernetes集群Etcd数据库中根据该Pod的名称获取用于部署该Pod的Deployment对象,然后为该Deployment对象添加一个标签,键为“network-connectivity”,值为“abnormal”;
S104)向网络恢复模块发送重新部署Pod的指令。
本实施例中,用于在发生Pod掉线的节点上重新部署Pod的部署改造模块由Master节点运行。部署改造模块实现的功能为:一,从Kubernetes集群系统所有节点中选择一个节点作为宿主节点,采用Deployment方式,在宿主节点上部署包含一个或者多个业务接口的Pod(在本发明中将其称为多接口Pod);二,为多接口Pod的一个或者多个业务接口配置静态IPv6地址;三,在部署多接口Pod时,对多接口Pod中容器在启动时自动运行的启动子模块进行定制,启动子模块中内置有Pod中容器在启动时自动执行的启动脚本。
本实施例中,部署改造模块通过创建Deployment对象deploy-01,来完成多接口Pod的部署。并且,在本发明的实施例中,在多接口Pod中有且仅有一个容器,容器的名称为nginx,在部署nginx时所使用的容器镜像为“10.89.1.10:30080/nginx:1.24.0”,该镜像是一个容器优改镜像。
在对多接口Pod进行部署时,部署改造模块按照如下步骤进行:
(a)创建ConfigMap对象cm-02,所属的命名空间为cncp-system,其中,在cm-01对象中,data字段的数据类型为Map类型,Map类型的键、值的数据类型均为字符串类型;
(b)创建Deployment对象deploy-01,所属的命名空间为cncp-system,即可完成多接口Pod的部署。
在deploy-01对象中,replicas取值为“1”。
在deploy-01对象中,在volumes数组中声明一个volume对象,该volume对象的name字段取值为“config”,configMap.name字段取值为“cm-01”,configMap.defaultMode字段取值为“511”。并且,在nginx容器的volumeMounts数组中声明一个volumeMount对象,该volumeMount对象的name字段取值为“config”,mountPath字段取值为“/usr/local/bin/network-monitor.sh”,subPath字段取值为“network-monitor.sh”。
在deploy-01对象中,在volumes数组中再次声明一个volume对象,该volume对象的name字段取值为“config-02”,configMap.name字段取值为“cm-02”,configMap.defaultMode字段取值为“511”。并且,在nginx容器的volumeMounts数组中再次声明一个volumeMount对象,该volumeMount对象的name字段取值为“config-02”,mountPath字段取值为“/usr/local/bin/entrypoint.sh”,subPath字段取值为“entrypoint.sh”。
在deploy-01对象中,在nginx容器的env数组中声明一个对象,该对象的name字段取值为“IPV6_DEFAULT_GATEWAY”,value字段取值为“fd10:8901::fe”。
在deploy-01对象中,nginx容器的image字段取值为“10.89.1.10:30080/nginx:1.24.0”。
在步骤(a)中,在cm-01对象的data字段中添加一个键值对,其中,键为“entrypoint.sh”,值为一个长字符串,这个长字符串的内容表示nginx容器在启动时自动执行的启动脚本。nginx容器的启动脚本将执行多项任务,其中一项任务是维护多接口PodIPv6业务网络的缺省网关,为重新部署的Pod的业务接口重新添加缺省路由,具体步骤为:
S310)在重新部署的Pod的nginx容器中检查用于表示多接口Pod IPv6业务网络缺省网关的环境变量IPV6_DEFAULT_GATEWAY是否存在,若不存在,则结束执行,反之,则跳转至步骤S311)继续执行;
S311)在重新部署的Pod中检查IPv6缺省路由是否存在,若存在,则执行命令ip-6route del default删除IPv6缺省路由,然后再执行命令ip-6 route add default via ${IPV6_DEFAULT_GATEWAY}为重新部署的Pod添加IPv6缺省路由,将IPV6_DEFAULT_GATEWAY设置为IPv6缺省网关。
本实施例中,nginx容器的启动脚本执行过程中,还会启动网络监测子模块执行网络监测脚本,以持续地监测多接口Pod中业务接口的网络连通性,并进行相应的处理。
本发明中,镜像仓库管理模块由Master节点运行,它实现的功能为:在Kubernetes集群中部署一个私有的容器镜像仓库,为Kubernetes集群提供容器镜像上传、下载等服务。
本实施例中,使用Harbor组件来搭建私有的容器镜像仓库,Harbor组件以Pod形态运行,并将运行Harbor组件的Pod称为镜像仓库Pod。在镜像仓库Pod中,有且仅有一个容器,该容器的名称为harbor。Harbor组件本质上是在harbor容器内运行,并且将通过HTTP 80端口对外提供服务。
镜像仓库管理模块通过如下步骤搭建私有的容器镜像仓库:
(1)分别创建PersistentVolume对象pv-01、PersistentVolumeClaim对象pvc-01,指定存储类名称为openebs-sc,指定存储容量为200G,指定访问模式为ReadWriteOnce,指定回收策略为Delete。其中,PersistentVolumeClaim对象pvc-01所属的命名空间为cncp-system。
(2)创建Deployment对象deploy-01,所属的命名空间为cncp-system。在本实施例中,通过创建Deployment对象deploy-01来部署镜像仓库Pod。
在deploy-01对象中,replicas取值为“1”,并为镜像仓库Pod添加一个标签,键为“cncp-component”,值为“harbor”。且在deploy-01对象中,在volumes数组中声明一个volume对象,该volume对象的name字段取值为“storage”,persistentVolumeClaim.claimName字段取值为“pvc-01”。并且,在harbor容器的volumeMounts数组中声明一个volumeMount对象,该volumeMount对象的name字段取值为“storage”,mountPath字段取值为“/var/lib/harbor”,subPath字段取值为“var/lib/harbor”。
在创建镜像仓库Pod时,当创建deploy-01对象之后,即可完成镜像仓库Pod的部署。
(3)创建Service对象svc-01,所属的命名空间为cncp-system。
在svc-01对象中,type字段取值为“NodePort”;在selector字段的值中添加一个标签,其中,键为“cncp-component”,值为“harbor”;在ports数组中声明一个port对象,该port对象的protocol字段取值为“TCP”,port字段取值为“80”,targetPort字段取值为“80”,nodePort字段取值为“30080”。
(4)在创建svc-01对象之后,镜像仓库Pod将通过“10.89.1.10:30080”为Kubernetes集群系统提供容器镜像上传、下载等服务。
镜像改造模块由Master节点运行,它实现的功能是,针对给定的容器基础镜像,在镜像改造模块的Dockerfile模板库中,查找名称与基础镜像名称完全相同的Dockerfile模板,然后根据这个Dockerfile模板构建容器优改镜像,在容器优改镜像中安装iproute、iputils等软件,并将容器优改镜像上传至容器镜像仓库。
本实施例中,镜像改造模块对外提供API接口。通过这些API接口,用户即可向Dockerfile模板库中添加新的Dockerfile模板,又可对Dockerfile模板库中现有的Dockerfile模板进行编辑,还可从Dockerfile模板库中删除现有的Dockerfile模板。
在镜像改造模块的Dockerfile模板库中,内置有centos、ubuntu以及nginx等若干个Dockerfile模板。
在本实施例中,选用的容器基础镜像为“nginx:1.24.0”,其中,容器基础镜像的镜像名称为“nginx”,容器基础镜像的镜像标签为“1.24.0”。并且,使用在镜像仓库Pod中搭建的私有的容器镜像仓库来存储容器优改镜像,因此,为了与容器基础镜像进行区别,以容器基础镜像的名称加上前缀的方式设置容器优改镜像的镜像名称,该前缀为“10.89.1.10:30080”。
基于容器基础镜像和Dockerfile模板,镜像改造模块通过如下步骤构建容器优改镜像:
S320)提取容器基础镜像“nginx:1.24.0”的镜像名称与镜像标签,其中,镜像名称为“nginx”,镜像标签为“1.24.0”。
S321)在镜像改造模块的Dockerfile模板库中查找是否存在名称与“nginx”完全相同的Dockerfile模板,若存在名称与“nginx”完全相同的Dockerfile模板,根据Dockerfile模板nginx构建容器优改镜像,其中,容器优改镜像的镜像名称为“10.89.1.10:30080/nginx”,容器优改镜像的镜像标签为“1.24.0”,并将容器优改镜像“10.89.1.10:30080/nginx:1.24.0”上传至私有的容器镜像仓库,反之,结束执行。
网络恢复模块由Master节点运行,它实现的功能为监听Kubernetes集群系统Etcd数据库中Deployment对象的变化(包括Deployment对象的创建与编辑),并进行相应的处理。
当用于具有一个业务接口或多个业务接口的Pod重新部署的deploy-01对象被创建(或者编辑)时,网络恢复模块通过下述步骤完成对重新部署的Pod部署完成的确认与重启:
S410)当监听到Deployment对象被创建或编辑时,网络恢复模块获取Deployment对象的全部信息;
S411)根据步骤S410)中获得Deployment对象的全部信息,检查Deployment对象的Labels标签中是否存在键为“network-connectivity”的标签,若不存在,则结束执行,反之,则将键为“network-connectivity”的标签的值记作val,跳转至步骤S412)继续执行;
S412)检查val是否与“abnormal”相等,如若不相等,则执行结束,反之,则重启Deployment对象,完成对重新部署的Pod部署完成的确认与重启。
在重新部署的Pod部署完成重启后,继续使用网络监测维护模块对Pod的业务接口网络连通性进行监测。
基于上述网络连通性监测与恢复方法,相应的,本实例中还提供一种存储有计算机程序的计算机可读存储介质,该计算机程序被处理器执行时实现如下步骤:通过网络监测脚本对Pod业务接口网络连通性进行监测,当Pod业务接口网络掉线时,对Pod进行重新部署,并为重新部署后的Pod的业务接口重新添加缺省路由,然后再对重新部署后的Pod进行业务接口网络连通性监测。
如图3所示,基于上述网络连通性监测与恢复方法以及计算机可读存储介质,本实施例中,还提供了一种计算机设备,其包括可读存储介质、处理器以及存储在可读存储介质上并可在处理器上运行的计算机程序,其中可读存储介质与处理器均设置在总线上,处理器执行计算机程序时实现如下步骤:通过网络监测脚本对Pod业务接口网络连通性进行监测,当Pod业务接口网络掉线时,对Pod进行重新部署,并为重新部署后的Pod的业务接口重新添加缺省路由,然后再对重新部署后的Pod进行业务接口网络连通性监测。
利用本发明,可以实现Kubernetes集群中Pod业务接口网络连通性的自动监测和恢复,减少了人工排查的麻烦。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本专利申请权利要求的保护范围之中。

Claims (9)

1.一种网络连通性监测与恢复方法,其特征在于,用于对Kubernetes集群中具有一个或多个业务接口的Pod的业务接口网络连通性进行监测与恢复,包括如下步骤:
S100)利用网络监测维护模块对Pod的业务接口网络连通性进行监测,当监测到Pod的业务接口掉线时,由网络监测维护模块向网络恢复模块发送恢复网络指令;
S200)网络恢复模块接收到恢复网络指令之后,向部署改造模块发送在发生Pod掉线的节点上重新部署Pod的指令;
S300)部署改造模块接收到在发生Pod掉线的节点上重新部署Pod的指令后在发生Pod掉线的节点上重新部署Pod,并为重新部署的Pod的业务接口重新添加缺省路由;在完成重新部署的Pod部署后,部署改造模块利用启动子模块通过如下步骤完成为重新部署的Pod的业务接口重新添加缺省路由的操作:
S310)在重新部署的Pod的容器中检查用于表示多接口Pod IPv6业务网络缺省网关的环境变量IPV6_DEFAULT_GATEWAY是否存在,若不存在,则结束执行,反之,则跳转至步骤S311)继续执行;
S311)在重新部署的Pod中检查IPv6缺省路由是否存在,若存在,则执行命令ip-6route del default删除IPv6缺省路由,然后再执行命令ip-6 route add default via ${IPV6_DEFAULT_GATEWAY}为重新部署的Pod添加IPv6缺省路由,将IPV6_DEFAULT_GATEWAY设置为IPv6缺省网关;
S400)网络恢复模块在监测到Pod重新部署完成后,跳转至步骤S100)继续执行。
2.根据权利要求1所述的方法,其特征在于,在步骤S100)中,网络监测维护模块利用网络监测子模块通过如下步骤对Pod的业务接口网络连通性进行监测:
S101)在Pod中检查用于表示Pod IPv6业务网络缺省网关的环境变量IPV6_DEFAULT_GATEWAY是否存在,如果存在,则跳转至步骤S102)执行,反之,则跳转至步骤S103)执行;
S102)执行命令ping6 -c 1 $IPV6_DEFAULT_GATEWAY,检测Pod业务接口网络连通性,如果网络监测子模块接收到Pod IPv6业务网络缺省网关返回的数据包,表示Pod业务接口网络连通性正常且检测成功,然后休眠10分钟后继续执行命令ping6 -c 1 $IPV6_DEFAULT_GATEWAY以检测Pod业务接口网络连通性,反之,则表示Pod业务接口网络连通不正常且检测失败,休眠5秒后执行命令ping6 -c 1 $IPV6_DEFAULT_GATEWAY以检测Pod业务接口网络连通性,并对检测失败次数进行计数,当连续检测失败次数小于或等于阈值时,则继续休眠5秒后执行命令ping6 -c 1 $IPV6_DEFAULT_GATEWAY以检测Pod业务接口网络连通性,而当连续检测失败次数大于阈值时,跳转步骤S103)继续执行;
S103)获取Pod的名称并在Kubernetes集群Etcd数据库中根据该Pod的名称获取用于部署该Pod的Deployment对象,然后为该Deployment对象添加一个标签,键为“network-connectivity”,值为“abnormal”;
S104)向网络恢复模块发送重新部署Pod的指令。
3.根据权利要求1所述的方法,其特征在于,在步骤S400)中,网络恢复模块通过下述步骤完成对重新部署的Pod部署完成的确认与重启:
S410)当监听到Deployment对象被创建或编辑时,网络恢复模块获取Deployment对象的全部信息;
S411)根据步骤S410)中获得Deployment对象的全部信息,检查Deployment对象的Labels标签中是否存在键为“network-connectivity”的标签,若不存在,则结束执行,反之,则将键为“network-connectivity”的标签的值记作val,跳转至步骤S412)继续执行;
S412)检查val是否与“abnormal”相等,如若不相等,则执行结束,反之,则重启Deployment对象,完成对重新部署的Pod部署完成的确认与重启。
4.根据权利要求1所述的方法,其特征在于,在步骤S300)中,部署改造模块重新部署的Pod中有且仅有一个容器,部署该容器时使用容器优改镜像对该容器进行部署;容器优改镜像由镜像改造模块将容器基础镜像通过如下步骤优化改造得到:
S320)提取容器基础镜像的镜像名称与镜像标签;
S321)在镜像改造模块的Dockerfile模板库中查找是否存在与步骤S320)中提取的镜像名称完全相同的Dockerfile模板,若存在,则根据该Dockerfile模板构建容器优改镜像,并将构建好的容器优改镜像上传至容器镜像仓库,反之,则结束执行。
5.根据权利要求4所述的方法,其特征在于,在步骤S321)中,根据该Dockerfile模板构建容器优改镜像时,容器优改镜像的镜像名称为包含有容器镜像仓库的IP地址与端口和容器基础镜像的镜像名称的镜像名称。
6.一种利用权利要求1所述的网络连通性监测与恢复方法对网络连通性进行监测与恢复的系统,其特征在于,包括:
网络监测维护模块,用于对具有一个或多个业务接口的Pod的业务接口网络连通性进行监测且当监测到Pod的业务接口掉线时向网络恢复模块发送恢复网络指令;
网络恢复模块,用于接收到恢复网络指令之后向部署改造模块发送在发生Pod掉线的节点上重新部署Pod的指令并对部署改造模块所重新部署的Pod进行重启;
部署改造模块,用于在发生Pod掉线的节点上重新部署Pod并为重新部署的Pod的业务接口重新添加缺省路由;
网络监测维护模块分别与Pod和网络恢复模块通信连接,网络恢复模块分别与Pod和部署改造模块通信连接,部署改造模块与部署所述Pod的节点通信连接。
7.根据权利要求6所述的系统,其特征在于,还包括:
镜像改造模块,用于通过根据容器基础镜像和Dockerfile模板构建容器优改镜像;
容器镜像仓库,用于存放容器优改镜像并为Kubernetes集群提供容器镜像上传和下载服务;容器镜像仓库由镜像仓库管理模块进行部署;
镜像改造模块与容器镜像仓库通信连接,容器镜像仓库与部署改造模块通信连接。
8.计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~5中任一所述的方法。
9.计算机设备,包括可读存储介质、处理器以及存储在可读存储介质上并可在处理器上运行的计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1~5中任一所述的方法。
CN202311337943.9A 2023-10-17 2023-10-17 一种网络连通性监测与恢复方法、系统、介质及设备 Active CN117081959B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311337943.9A CN117081959B (zh) 2023-10-17 2023-10-17 一种网络连通性监测与恢复方法、系统、介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311337943.9A CN117081959B (zh) 2023-10-17 2023-10-17 一种网络连通性监测与恢复方法、系统、介质及设备

Publications (2)

Publication Number Publication Date
CN117081959A CN117081959A (zh) 2023-11-17
CN117081959B true CN117081959B (zh) 2023-12-22

Family

ID=88717647

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311337943.9A Active CN117081959B (zh) 2023-10-17 2023-10-17 一种网络连通性监测与恢复方法、系统、介质及设备

Country Status (1)

Country Link
CN (1) CN117081959B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117376194B (zh) * 2023-12-06 2024-02-13 苏州元脑智能科技有限公司 网络检测方法、系统、电子设备及计算机可读存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176788A (zh) * 2019-12-24 2020-05-19 优刻得科技股份有限公司 Kubernetes集群的主节点的部署方法及系统
CN111327640A (zh) * 2020-03-24 2020-06-23 广西梯度科技有限公司 一种在Kubernetes中Pod设置IPv6的方法
CN111371696A (zh) * 2020-03-24 2020-07-03 广西梯度科技有限公司 一种在Kubernetes中实现Pod网络流控的方法
WO2021017279A1 (zh) * 2019-07-30 2021-02-04 平安科技(深圳)有限公司 基于Kubernetes和网络域的集群安全管理方法、装置及存储介质
US11477165B1 (en) * 2021-05-28 2022-10-18 Palo Alto Networks, Inc. Securing containerized applications
CN116016028A (zh) * 2022-12-09 2023-04-25 明阳产业技术研究院(沈阳)有限公司 基于IPVlan为Pod创建多个网络接口的方法、系统、介质及设备
CN116089011A (zh) * 2023-01-19 2023-05-09 阳光电源(上海)有限公司 创建镜像仓库的方法、装置、存储介质以及电子设备
CN116389484A (zh) * 2023-04-26 2023-07-04 奥特酷智能科技(南京)有限公司 基于数据分发服务的跨Kubernetes集群网络互通系统及方法
CN116627721A (zh) * 2023-06-06 2023-08-22 浪潮云信息技术股份公司 基于混合云的云原生数据库恢复方法、设备及存储介质
CN116633775A (zh) * 2023-07-24 2023-08-22 安超云软件有限公司 一种多容器网络接口的容器通信方法及系统

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021017279A1 (zh) * 2019-07-30 2021-02-04 平安科技(深圳)有限公司 基于Kubernetes和网络域的集群安全管理方法、装置及存储介质
CN111176788A (zh) * 2019-12-24 2020-05-19 优刻得科技股份有限公司 Kubernetes集群的主节点的部署方法及系统
CN111327640A (zh) * 2020-03-24 2020-06-23 广西梯度科技有限公司 一种在Kubernetes中Pod设置IPv6的方法
CN111371696A (zh) * 2020-03-24 2020-07-03 广西梯度科技有限公司 一种在Kubernetes中实现Pod网络流控的方法
US11477165B1 (en) * 2021-05-28 2022-10-18 Palo Alto Networks, Inc. Securing containerized applications
CN116016028A (zh) * 2022-12-09 2023-04-25 明阳产业技术研究院(沈阳)有限公司 基于IPVlan为Pod创建多个网络接口的方法、系统、介质及设备
CN116089011A (zh) * 2023-01-19 2023-05-09 阳光电源(上海)有限公司 创建镜像仓库的方法、装置、存储介质以及电子设备
CN116389484A (zh) * 2023-04-26 2023-07-04 奥特酷智能科技(南京)有限公司 基于数据分发服务的跨Kubernetes集群网络互通系统及方法
CN116627721A (zh) * 2023-06-06 2023-08-22 浪潮云信息技术股份公司 基于混合云的云原生数据库恢复方法、设备及存储介质
CN116633775A (zh) * 2023-07-24 2023-08-22 安超云软件有限公司 一种多容器网络接口的容器通信方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"面向Kubernetes的高性能网络方案研究";尚佳友等;《现代计算机》;全文 *
基于分布式容器环境的智慧运维开发平台研究;罗匀岭;陈海波;陆荟;亓敏;唐福林;;广西通信技术(03);全文 *

Also Published As

Publication number Publication date
CN117081959A (zh) 2023-11-17

Similar Documents

Publication Publication Date Title
CN117081959B (zh) 一种网络连通性监测与恢复方法、系统、介质及设备
US8910172B2 (en) Application resource switchover systems and methods
US8032625B2 (en) Method and system for a network management framework with redundant failover methodology
EP1267518B1 (en) Multiple device management method and system
JP4509916B2 (ja) Snmp基盤のネットワーク管理装置および方法
CN107688611B (zh) 一种基于saltstack的Redis键值管理系统及方法
CN100525206C (zh) 自动恢复设备故障的实现方法及系统
CN108628613A (zh) 基于国产cpu和os的容器集群有状态服务的实现方法
US7499987B2 (en) Deterministically electing an active node
CN111966526A (zh) 一种基于云平台数据中心的虚拟机备份方法及装置
CN111339055B (zh) 大数据集群扩容方法及装置
CN113193986A (zh) 云资源配置方法及用于实现云资源配置的物理机
EP1443700A2 (en) Methods and apparatus for configuration change management in communications networks
CN114598604B (zh) 虚拟网络功能实例信息的监控方法、监控装置及终端
CN114697191A (zh) 一种资源迁移方法、装置、设备及存储介质
Cisco 9.0 Version Software Release Notes Cisco StrataView Plus for Solaris
Cisco 9.0 Version Software Release Notes Cisco StrataView Plus for Solaris
CN112131201A (zh) 一种网络附加存储高可用性的方法、系统、设备及介质
CN116339926B (zh) 一种ats软件的容器化部署方法
CN111600753A (zh) 一种云计算环境下智能agent管理系统
CN116954870B (zh) 跨集群应用的迁移方法、恢复方法、装置及集群系统
CN112765056B (zh) 一种预留存储集群lun的方法、系统、设备及介质
CN115604101B (zh) 系统管理方法及相关设备
CN116501552B (zh) 数据备份的方法、装置、系统及存储介质
CN115499489B (zh) 一种链路中子网管理的方法、装置、设备及可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant