CN117081959B - 一种网络连通性监测与恢复方法、系统、介质及设备 - Google Patents
一种网络连通性监测与恢复方法、系统、介质及设备 Download PDFInfo
- 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
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 81
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000009466 transformation Effects 0.000 claims abstract description 51
- 238000004891 communication Methods 0.000 claims abstract description 25
- 238000012423 maintenance Methods 0.000 claims abstract description 22
- 230000002159 abnormal effect Effects 0.000 claims abstract description 13
- 238000011084 recovery Methods 0.000 claims description 26
- 238000001514 detection method Methods 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 19
- 238000005457 optimization Methods 0.000 claims description 15
- 230000009191 jumping Effects 0.000 claims description 13
- 238000012986 modification Methods 0.000 claims description 11
- 230000004048 modification Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012790 confirmation Methods 0.000 claims description 7
- 230000005059 dormancy Effects 0.000 claims description 6
- 230000002085 persistent effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 241000322338 Loeseliastrum Species 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
- H04L43/0811—Monitoring 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中任一所述的方法。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117376194B (zh) * | 2023-12-06 | 2024-02-13 | 苏州元脑智能科技有限公司 | 网络检测方法、系统、电子设备及计算机可读存储介质 |
Citations (10)
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 | 安超云软件有限公司 | 一种多容器网络接口的容器通信方法及系统 |
-
2023
- 2023-10-17 CN CN202311337943.9A patent/CN117081959B/zh active Active
Patent Citations (10)
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)
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 |