一种kubernetes容器云平台VLAN网络的实现方法及系统转让专利

申请号 : CN202010442449.9

文献号 : CN111796905B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李富赵鸿博富浩

申请人 : 浙商银行股份有限公司

摘要 :

本发明公开了一种kubernetes容器云平台VLAN网络的实现方法及系统,本发明的网络配置流程包括:kube‑apierver接收pod创建请求;kube‑scheduler为pod选择node节点;kubelet创建pod,创建共享网络空间,向multiVLAN发起网络配置请求;multiVLAN配置共享网络空间;IP管理组件为pod分配IP地址,并返回IP地址、网关地址和子网掩码到multiVLAN;multiVLAN完成配置,启动pod网络接口,与外部建立连接。网络删除流程包括:kube‑apierver接收pod删除请求,通知pod所在node节点的kubelet删除pod;kubelet向multiVLAN发送网络删除请求;MultiVLAN收到网络删除请求后,根据pod IP向IP管理组件发送IP地址回收请求;IP管理组件释放pod IP;multiVLAN删除pod网络接口;kubelet结束pod,删除共享网络空间。本发明可在同一kubernetes集群建立多个VLAN,并可在创建pod前指定此pod所属VLAN。

权利要求 :

1.一种kubernetes容器云平台VLAN网络系统,其特征在于,包括至少一个master节点、至少一个node节点、etcd、IP管理组件和交换机;所述master节点运行kube-apiserver和kube-scheduler;所述node节点运行kubelet、multiVLAN网络插件、若干应用pod、若干VLAN子接口、若干Linux bridge、若干veth pair;所述kube-apiserver对集群外部提供kubernetes API,pod创建和pod删除均通过调用API接口实现,在集群内部与node节点上的kubelet进程通信,管理pod;所述kube-scheduler将新创建的pod交给选定的node节点并启动;所述kubelet对运行在node节点上的pod进行生命周期管理,包括创建或停止pod、创建或删除共享网络空间、向multiVLAN发起网络配置请求或网络删除请求;所述网络配置请求中携带共享网络空间名称、node节点网络接口名称和VLAN id;所述网络删除请求中携带共享网络空间名称、pod IP地址、pod网络接口名称和VLAN id;所述multiVLAN网络插件包括网络配置模块和网络删除模块,其配置文件中包含IP管理组件的地址和pod网络接口名称;

所述网络配置模块寻找VLAN id对应的VLAN子接口和Linux bridge,创建veth pair将pod的共享网络空间和Linux bridge连接,发送IP地址分配请求到IP管理组件,若地址分配成功,则将分配的IP地址、网关地址和网络掩码配置到共享网络空间的pod网络接口,并为该pod网络接口分配MAC地址,对外发送免费ARP报文;所述网络删除模块根据VLAN id和pod IP地址向IP管理组件发送IP地址回收请求,若地址回收成功,进入共享网络空间,删除pod网络接口对应的veth设备;所述IP管理组件用于管理多个VLAN网络的地址分配,当收到IP地址分配请求,分配空闲IP地址并将该IP地址设为不可用,当收到IP地址回收请求,将IP地址设为可用;所述交换机收到multiVLAN发送的免费ARP报文后,在交换机地址转发表中增加pod MAC地址和交换机端口的映射关系。

2.根据权利要求1所述的一种kubernetes容器云平台VLAN网络系统,其特征在于,所述master节点用于协调调度kubernetes集群中的各个node;所述node节点是实际运行业务应用负载的主机;通过keepalived+haproxy实现多个master节点的高可用部署。

3.根据权利要求1所述的一种kubernetes容器云平台VLAN网络系统,其特征在于,所述kube-apiserver收到pod创建请求后,根据pod创建请求的参数值来创建一个运行时的pod对象,检查pod对象的必需字段是否为空,若检查通过,则将这个对象写入etcd中;收到pod删除请求后,将pod状态设置为terminating状态。

4.根据权利要求1所述的一种kubernetes容器云平台VLAN网络系统,其特征在于,所述kube-scheduler通过watch机制监听到写入到etcd的pod信息,从集群中挑选满足条件的节点并对各节点打分排序,为待调度pod 选择一个最优的node节点,当kube-scheduler选定pod运行节点后将结果信息通知kube-apiserver,由kube-apiserver更新至etcd中。

5.根据权利要求1所述的一种kubernetes容器云平台VLAN网络系统,其特征在于,所述kubelet通过kube-apiserver监听etcd数据,同步pod列表;如发现有新的pod绑定到本节点,则创建pod,创建共享网络空间,向multiVLAN发起网络配置请求;如发现有pod变成terminating状态,向multiVLAN发起网络删除请求,停止pod,删除共享网络空间。

6.根据权利要求1所述的一种kubernetes容器云平台VLAN网络系统,其特征在于,所述etcd用于kubernetes API 对象数据存储和服务发现,etcd可单机部署也可集群部署,可部署在kubernetes集群内部或在外部独立部署。

7.根据权利要求1所述的一种kubernetes容器云平台VLAN网络系统,其特征在于,所述IP管理组件包括IP地址分配模块和IP地址回收模块,为每个VLAN维护一张子网地址分配表,记录网关地址、子网掩码和IP地址的分配情况;

所述IP地址分配模块解析IP地址分配请求中携带的VLAN id,在VLAN id对应的子网地址分配表中搜索处于可用状态的IP地址,搜索成功后,将该IP地址设置不可用状态;

所述IP地址回收模块解析IP地址回收请求中携带的pod IP地址和VLAN id,在VLAN id对应的子网地址分配表中,将该IP设置为可用状态。

8.根据权利要求1所述的一种kubernetes容器云平台VLAN网络系统,其特征在于,所述交换机为三层交换机,可提供不同VLAN间通信,可在交换机上配置不同VLAN的IP子网及网络掩码、网关地址,可以处理不同VLAN的pod之间的通信。

9.一种权利要求1-8任一项所述kubernetes容器云平台VLAN网络系统的实现方法,其特征在于,该方法的网络配置流程包括:

kube-apis erver接收pod创建请求;

kube-scheduler为pod选择node节点;

kubelet创建pod,创建共享网络空间,向multiVLAN发起网络配置请求;

multiVLAN配置共享网络空间:multiVLAN寻找VLAN id对应的VLAN子接口和Linux bridge,创建veth pair将pod的共享网络空间和Linux bridge连接,发送IP地址分配请求到IP管理组件;

IP管理组件为pod分配IP地址,并返回IP地址、网关地址和子网掩码到multiVLAN;

multiVLAN完成配置,启动pod网络接口,与外部建立连接。

10.一种权利要求1-8任一项所述kubernetes容器云平台VLAN网络系统的实现方法,其特征在于,该方法的网络删除流程包括:

kube-apis erver接收pod删除请求,通知pod所在node节点的kubelet删除pod;

kubelet向multiVLAN发送网络删除请求;

multiVLAN 收到网络删除请求后,根据pod IP向IP管理组件发送IP地址回收请求;

IP管理组件释放pod IP;

multiVLAN删除pod网络接口;

kubelet结束pod,删除共享网络空间。

说明书 :

一种kubernetes容器云平台VLAN网络的实现方法及系统

技术领域

[0001] 本发明涉及云计算技术领域,更具体地,涉及一种kubernetes容器云平台VLAN网络的实现方法及系统。

背景技术

[0002] kubernetes是一个基于容器技术的分布式架构领先方案,已成为云环境中大规模部署容器化应用程序的事实标准。pod是容器调度的最小单元,需要在各个节点之间能够相
互访问。每一个pod都有一个独一无二的不会和别的节点上的pod相冲突的IP。
[0003] 企业网络中广泛应用VLAN进行业务和部门划分,以实现业务隔离管理。在这样的网络基础环境中,应用kubernetes作为容器云平台,仍然需要pod能够按照VLAN网络划分,
承载不同业务的pod处于不同的VLAN中。因此,要求在同一kubernetes容器云平台能够建立
多个VLAN,并可在创建pod前规定此pod所处VLAN。而目前常用的calico,flannel,canal,
weave等kubernetes网络方案无法在同一集群存在多个VLAN。

发明内容

[0004] 本发明的目的是提供一种kubernetes容器云平台VLAN网络的实现方法及系统,以克服目前的网络方案不支持在同一kubernetes集群创建多个VLAN并为pod指定VLAN的问
题。
[0005] 为实现上述目的,本发明提供了如下技术方案:
[0006] 一方面,本申请提出了一种kubernetes容器云平台VLAN网络系统,该系统包括至少一个master节点、至少一个node节点、etcd、IP管理组件和交换机;
[0007] 所述master节点运行kube-apiserver和kube-scheduler;
[0008] 所述node节点运行kubelet、multiVLAN网络插件、若干应用pod、若干VLAN子接口、若干Linux bridge、若干veth pair;
[0009] 所述kube-apiserver对集群外部提供kubernetes API,pod创建和pod删除均通过调用API接口实现,在集群内部与node节点上的kubelet进程通信,管理pod;
[0010] 所述kube-scheduler将新创建的pod交给选定的node节点并启动;
[0011] 所述kubelet对运行在node节点上的pod进行生命周期管理,包括创建或停止pod、创建或删除共享网络空间、向multiVLAN发起网络配置请求或网络删除请求;
[0012] 所述网络配置请求中携带共享网络空间名称、node节点网络接口名称和VLAN id;所述网络删除请求中携带共享网络空间名称、pod IP地址、pod网络接口名称和VLAN id;
[0013] 所述multiVLAN网络插件包括网络配置模块和网络删除模块,其配置文件中包含IP管理组件的地址和pod网络接口名称;
[0014] 所述网络配置模块寻找VLAN id对应的VLAN子接口和Linux bridge,创建veth pair将pod的共享网络空间和Linux bridge连接,发送IP地址分配请求到IP管理组件,若地
址分配成功,则将分配的IP地址、网关地址和网络掩码配置到共享网络空间的pod网络接
口,并为该pod网络接口分配MAC地址,对外发送免费ARP报文;
[0015] 所述网络删除模块根据VLAN id和pod IP地址向IP管理组件发送IP地址回收请求,若地址回收成功,进入共享网络空间,删除pod网络接口对应的veth设备;
[0016] 所述IP管理组件用于管理多个VLAN网络的地址分配,当收到IP地址分配请求,分配空闲IP地址并将该IP地址设为不可用,当收到IP地址回收请求,将IP地址设为可用;
[0017] 所述交换机收到multiVLAN发送的免费ARP报文后,在交换机地址转发表中增加pod MAC地址和交换机端口的映射关系。
[0018] 进一步地,所述master节点用于协调调度kubernetes集群中的各个node;所述node节点是实际运行业务应用负载的主机;通过keepalived+haproxy实现多个master节点
的高可用部署。
[0019] 进一步地,所述kube-apiserver收到pod创建请求后,根据pod创建请求的参数值来创建一个运行时的pod对象,检查pod对象的必需字段是否为空,若检查通过,则将这个对
象写入etcd中;收到pod删除请求后,将pod状态设置为terminating状态。
[0020] 进一步地,所述kube-scheduler通过watch机制监听到写入到etcd的pod信息,从集群中挑选满足条件的节点并对各节点打分排序,为待调度Pod选择一个最优的node节点,
当kube-scheduler选定pod运行节点后将结果信息通知kube-apiserver,由kube-
apiserver更新至etcd中。
[0021] 进一步地,所述kubelet通过kube-apiserver监听etcd数据,同步pod列表;如发现有新的pod绑定到本节点,则创建pod,创建共享网络空间,向multiVLAN发起网络配置请求;
如发现有pod变成terminating状态,向multiVLAN发起网络删除请求,停止pod,删除共享网
络空间。
[0022] 进一步地,所述etcd用于kubernetes api对象数据存储和服务发现,etcd可单机部署也可集群部署,可部署在kubernetes集群内部或在外部独立部署。
[0023] 进一步地,所述IP管理组件包括IP地址分配模块和IP地址回收模块,为每个VLAN维护一张子网地址分配表,记录网关地址、子网掩码和IP地址的分配情况;
[0024] 所述IP地址分配模块解析IP地址分配请求中携带的VLAN id,在VLAN id对应的子网地址分配表中搜索处于可用状态的IP地址,搜索成功后,将该IP地址设置不可用状态;
[0025] 所述IP地址回收模块解析IP地址回收请求中携带的pod IP地址和VLAN id,在VLAN id对应的子网地址分配表中,将该IP设置为可用状态。
[0026] 进一步地,所述交换机为三层交换机,可提供不同VLAN间通信,可在交换机上配置不同VLAN的IP子网及网络掩码、网关地址,可以处理不同VLAN的pod之间的通信。
[0027] 另一方面,本申请提出一种kubernetes容器云平台VLAN网络系统的实现方法,包括网络配置流程和网络删除流程。
[0028] 该方法的网络配置流程包括:
[0029] kube-apierver接收pod创建请求;
[0030] kube-scheduler为pod选择node节点;
[0031] kubelet创建pod,创建共享网络空间,向multiVLAN发起网络配置请求;
[0032] multiVLAN配置共享网络空间:multiVLAN寻找VLAN id对应的VLAN子接口和Linux bridge,创建veth pair将pod的共享网络空间和Linux bridge连接,发送IP地址分配请求
到IP管理组件;
[0033] IP管理组件为pod分配IP地址,并返回IP地址、网关地址和子网掩码到multiVLAN;
[0034] multiVLAN完成配置,启动pod网络接口,与外部建立连接。
[0035] 该方法的网络删除流程包括:
[0036] kube-apierver接收pod删除请求,通知pod所在node节点的kubelet删除pod;
[0037] kubelet向multiVLAN发送网络删除请求;
[0038] MultiVLAN收到网络删除请求后,根据pod IP向IP管理组件发送IP地址回收请求;
[0039] IP管理组件释放pod IP;
[0040] multiVLAN删除pod网络接口;
[0041] kubelet结束pod,删除共享网络空间。
[0042] 本发明提供的一种kubernetes容器云平台VLAN网络的实现方法及系统,可在同一kubernetes集群建立多个VLAN,并可在创建pod前指定此pod所属VLAN。

附图说明

[0043] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0044] 图1为本申请实施例提供的kubernetes容器云平台VLAN网络系统的一种结构示意图;
[0045] 图2为本申请实施例提供的kubernetes容器云平台VLAN网络方法的网络配置流程图。
[0046] 图3为本申请实施例提供的kubernetes容器云平台VLAN网络方法的网络删除流程图。

具体实施方式

[0047] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0048] 请参阅图1,图1为本申请实施例提供的kubernetes容器云平台VLAN网络系统的一种结构示意图,该系统包括至少一个master节点、至少一个node节点、etcd、IP管理组件、三
层交换机。其中,master节点运行着kube-apiserver和kube-scheduler;node节点运行着
kubelet、multiVLAN网络插件、若干应用pod、若干VLAN子接口、若干Linux bridge、若干
veth pair。
[0049] 所述master节点是kubernetes集群的大脑,用以协调调度集群中的各个node。所述node节点是实际运行业务应用负载的主机。优选的,可以通过keepalived+haproxy实现
多个master节点的高可用部署。
[0050] 所述kube-apiserver是master节点的组件之一,对集群外部提供kubernetes API,pod创建和pod删除均可通过调用API接口实现,在集群内部与node节点上的kubelet进
程通信,管理pod。
[0051] 所述kube-apiserver收到pod创建请求后,会根据pod创建请求的参数值来创建一个运行时的pod对象,检查pod对象的必需字段例如apiVersion、kind、spec以及metadata中
annotation中携带的VLAN id等字段是否为空。若检查通过,则将这个对象写入etcd中;收
到pod删除请求后,将pod状态设置为terminating状态。
[0052] 所述kube-scheduler是master节点的组件之一,将新创建的pod交给选定的一个node节点并启动。
[0053] 所述kube-scheduler通过watch机制监听到写入到etcd的pod信息,从集群中挑选满足条件的节点并对各个节点打分排序,为待调度Pod选择一个最优的node节点来运行它,
当kube-scheduler选定pod运行节点之后将结果信息通知kube-apiserver,由kube-
apiserver更新至etcd中。
[0054] 所述kubelet是node节点的组件之一,与master节点的kube-apiserver通信,作为master节点管理node节点的代理,对运行在该node节点上的pod进行生命周期管理。
[0055] 所述kubelet通过kube-apiserver监听etcd数据,同步pod列表。如果发现有新的pod绑定到本节点,则按照pod清单要求创建pod,创建共享网络空间,向multiVLAN发起网络
配置请求;如果发现有pod变成terminating状态,向multiVLAN发起网络删除请求,停止
pod,删除共享网络空间。
[0056] 所述etcd是CoreOS推出的高可用的键值存储系统,用于kubernetes api对象数据存储和服务发现,etcd可单机部署也可集群部署,可部署在kubernetes集群内部或在外部
独立部署。
[0057] 所述multiVLAN是符合kubernetes容器网络规范CNI的自定义网络插件,当创建pod时,通过IP管理组件为pod分配IP地址,进行网络配置;当删除pod时,通过IP管理组件回
收IP地址,删除网络配置。
[0058] 所述multiVLAN网络插件包括网络配置模块和网络删除模块,自身配置文件中包含IP管理组件的地址和pod网络接口名称。
[0059] 所述网络配置模块,用于处理收到的网络配置请求,解析网络配置请求中携带的共享网络空间名称、node节点网络接口名称和VLAN id,读取multiVLAN配置文件中IP管理
组件的地址和pod网络接口名称。首先根据VLAN id判断node节点是否存在与VLAN id对应
的VLAN子接口和Linux bridge,若不存在则创建VLAN子接口和Linux bridge,并将VLAN子
接口加入Linux bridge;再根据pod网络接口名称创建veth pair,一端加入共享网络空间,
另一端加入Linux bridge;然后发送IP地址分配请求到IP管理组件,若地址分配成功,则将
分配的IP地址、网关地址和网络掩码配置到共享网络空间的pod网络接口,并为该pod网络
接口分配MAC地址,对外发送免费ARP报文。
[0060] 所述网络删除模块,用于处理收到的网络删除请求,解析网络删除请求中携带的共享网络空间名称、pod IP地址、pod网络接口名称和VLAN id,读取multiVLAN配置文件中
IP管理组件的地址。首先根据VLAN id和pod IP地址向IP管理组件发送IP地址回收请求,若
地址回收成功,进入共享网络空间,删除pod网络接口对应的veth设备。
[0061] 所述IP管理组件可管理多个VLAN网络的地址分配,当收到IP地址分配请求后,分配空闲IP地址并将该IP地址设为不可用,当收到IP地址回收请求后,将IP地址设为可用。
[0062] 所述IP管理组件包括IP地址分配模块和IP地址回收模块,为每个VLAN维护一张子网地址分配表,记录着网关地址、子网掩码和IP地址的分配情况。
[0063] 所述IP地址分配模块收到IP地址分配请求后,解析IP地址分配请求中携带的VLAN id,首先在VLAN id对应的子网地址分配表中搜索处于可用状态的IP地址,搜索成功后,将
该IP地址设置不可用状态。
[0064] 所述IP地址回收模块收到IP地址回收请求后,解析IP地址回收请求中携带的pod IP地址和VLAN id,在VLAN id对应的子网地址分配表中,将该IP设置为可用状态。
[0065] 所述pod是kubernetes资源调度最小单元,pod中可包含多个容器,各容器共享网络空间,共享IP地址和端口号,容器间可以通过localhost互相通信。
[0066] 所述VLAN子接口是将单个物理接口划分为多个逻辑接口,逻辑接口支持IEEE802.1Q,可处理带有VLAN标签的数据包。
[0067] 所述Linux bridge是工作于二层的虚拟网络设备,功能类似于物理的交换机。
[0068] 所述veth pair是Linux中一种虚拟网络设备,成对出现,用于将pod的共享网络空间和Linux bridge连接,pod之间则可以通过Linux bridge进行通信。
[0069] 所述三层交换机,可提供不同VLAN间通信,可在交换机上配置不同VLAN的IP子网及网络掩码、网关地址。处于不同VLAN的pod进行通信时需要经过网关。
[0070] 本申请提供的kubernetes容器云平台VLAN网络的实现方法包括网络配置流程和网络删除流程。
[0071] 如图2所示,图2为本发明实施例提供的kubernetes容器云平台VLAN网络实现方法中网络配置流程的一种实现流程图,可以包括:
[0072] 步骤S21:kube-apierver接收pod创建请求。
[0073] 用户提交pod创建请求,pod创建请求可通过kubectl命令行或kubernetes API发送给kube-apiserver,kube-apiserver收到pod创建请求后,根据pod创建请求的参数值来
创建一个运行时的pod对象,检查pod对象的必需字段例如apiVersion、kind、spec以及
metadata中annotation中携带的VLAN id等字段是否为空。若检查通过,则将这个对象写入
etcd中。
[0074] 步骤S22:kube-scheduler为pod选择node节点。
[0075] kube-scheduler定时监听etcd的pod信息,从集群中挑选满足条件的节点并对各个节点打分排序,为待调度Pod选择一个最优的node节点来运行它,当kube-scheduler选定
pod运行节点之后将结果信息通知kube-apiserver,由kube-apiserver更新至etcd中。
[0076] 步骤S23:kubelet创建共享网络空间,向multiVLAN发起网络配置请求。
[0077] kubelet与master节点的kube-apiserver通信,通过kube-apiserver监听etcd数据,同步pod列表。如果发现有新的pod绑定到本节点,则按照pod清单要求创建pod,创建共
享网络空间,向multiVLAN发起网络配置请求。网络配置请求中携带共享网络空间名称、
node节点网络接口名称和VLAN id。
[0078] 步骤S24:multiVLAN配置共享网络空间。
[0079] multiVLAN网络配置模块收到网络配置请求后,根据网络配置请求中VLAN id判断node节点是否存在与VLAN id对应的VLAN子接口和Linux bridge,若不存在则创建VLAN子
接口和Linux bridge,并将VLAN子接口加入Linux Bridge;例如请求中携带的VLAN id为
100,node节点网络接口名称为ens0,则调用Linux网络命令创建VLAN子接口ens0.100和网
桥brens0.100,若VLAN子接口和网桥已存在,则跳过此步骤。
[0080] 然后,根据网络配置请求中解析的共享网络空间名称和配置文件中读取的pod网络接口名称,调用Linux网络命令创建veth pair,一端加入共享网络空间,另一端加入
Linux Bridge。例如pod网络接口名称eth0,共享网络空间名称ns1,则创建veth pair设备,
veth一端名称为eth0,veth另一端名称为ns1-brens0.100,将eth0加入共享网络空间ns1,
将ns1-brens0.100加入网桥brens0.100。
[0081] 再发送IP地址分配请求到IP管理组件,IP地址分配请求中携带VLAN id。
[0082] 步骤S25:IP管理组件为pod分配IP地址。
[0083] IP管理组件为每个VLAN维护一张子网地址分配表,记录着网关地址、子网掩码和IP地址的分配情况。在IP管理组件IP地址分配模块收到IP地址分配请求后,首先在VLAN id
对应的子网地址分配表中搜索处于可用状态的IP地址,搜索成功后,将该IP地址设置不可
用状态,并返回此IP地址、网关地址和子网掩码到multiVLAN网络配置模块。
[0084] 步骤S26:multiVLAN完成配置,启动pod网络接口,与外部建立连接。
[0085] multiVLAN网络配置模块获取pod IP地址、网关地址和子网掩码后,调用Linux net库函数分配MAC地址,再将以上信息配置到pod网络接口,并启用pod网络接口,通过此接
口发送免费ARP报文。
[0086] 三层交换机接收到multiVLAN发送的免费ARP报文,学习到pod的MAC地址与交换机端口的对应关系。三层交换机可以处理不同VLAN的pod之间的通信。
[0087] 如图3所示,图3为本发明实施例提供的kubernetes容器云平台VLAN网络实现方法中网络删除流程的一种实现流程图,可以包括:
[0088] 步骤S31:kube-apierver接收pod删除请求。
[0089] 用户提交pod删除请求,kube-apiserver收到来自kubectl命令行或kubernetes API的pod删除请求后,将pod状态设置为terminating状态。
[0090] 步骤S32:kubelet向multiVLAN网络删除模块发送pod删除请求。
[0091] kubelet同kube-apiserver通信发现有pod变成terminating状态,向multiVLAN网络删除模块发送网络删除请求,请求中携带pod IP地址、共享网络空间名称、pod网络接口
名称和VLAN id。
[0092] MultiVLAN网络删除模块收到网络删除请求后,向IP管理组件IP地址回收模块发送IP地址回收请求,请求中包括pod IP地址和VLAN id。
[0093] 步骤S33:IP管理IP地址回收模块释放pod IP。
[0094] IP管理组件组件IP地址回收模块收到IP地址回收请求后,解析请求中的pod IP地址和VLAN id,在VLAN id对应的子网地址分配表中,将该IP地址设置为可用状态。
[0095] 步骤S34:multiVLAN网络删除模块清除网络配置。
[0096] 在成功释放pod IP后,multiVLAN网络删除模块根据网络删除请求中的共享网络空间名称、pod网络接口名称,删除共享网络空间和Linux Bridge之间的veth pair设备,通
过删除共享网络空间这一端的veth设备,即pod网络接口,由于veth设备成对出现,则连接
对端Linux bridge的veth设备也同时被删除。
[0097] 此步骤中,不删除与VLAN id对应的VLAN子接口和Linux bridge。
[0098] 步骤S35:kubelet结束pod,删除共享网络空间。
[0099] kubelet向pod容器发送term进程终止信号,删除共享网络空间,请求kube-apiserver删除此pod对象。
[0100] 以上所述仅是本发明的优选实施方式,虽然本发明已以较佳实施例披露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况
下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,
或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的
技术实质对以上实施例所做的任何的简单修改、等同变化及修饰,均仍属于本发明技术方
案保护的范围内。