一种Kubernetes容器网络配置方法及设备与流程

文档序号:33101719发布日期:2023-02-01 00:47阅读:20来源:国知局
一种Kubernetes容器网络配置方法及设备与流程
一种kubernetes容器网络配置方法及设备
技术领域
1.本技术涉及计算机技术领域,尤其涉及一种kubernetes容器网络配置方法及设备。


背景技术:

2.当在kubernetes中创建pod资源后,pod会被调度到某一台节点,之后kubelet组件就会开始孵化pod。
3.现有技术中在pod容器网络配置完成后,pod容器网络里的配置被固化,无法进行再变更。


技术实现要素:

4.本技术实施例提供一种kubernetes容器网络配置方法及设备,用以对配置完成的pod容器网络实现配置变更。
5.本技术实施例提供一种kubernetes容器网络配置方法,所述kubernetes容器网络包括至少一个节点node,所述节点node包括数个应用实例pod,包括如下步骤:
6.在目标端pod设置代理pod pod-agent作为unix socket服务端,在配置端pod设置主机代理host-agent作为unix socket客户端;
7.在目标端pod执行pod cni初始化流程,以配置pod容器网络;
8.在需要变更目标端pod容器网络的情况下,利用所述host-agent发起到所述pod-agent的连接;
9.利用所述pod-agent通过sendmsg发送自身netnamespace文件描述符;
10.利用所述host-agent调用recvmsg获取netnamespace文件描述符,并通过netlink socket实现配置变更。
11.可选的,在需要变更配置端pod容器网络的情况下,直接获取配置端pod的netnamespace文件描述符,并通过netlink socket实现配置变更。
12.可选的,所述unix socket服务端与所述unix socket客户端共享节点中的unix socket文件。
13.可选的,在目标端pod执行pod cni初始化流程包括:
14.在kubernetes容器网络中创建pod,并将创建的pod调度到目标node;
15.调用containerd来创建sandbox,以在kubernetes中创建sandbox以形成网络命名空间netnamespace。
16.可选的,containerd创建sandbox包括:
17.在指定目录中读取cni配置文件;
18.加载所述cni配置文件中的cni二进制程序,并在所述netnamespace中执行初始化逻辑。
19.本技术实施例提供一种计算机设备,用以实现kubernetes容器网络配置,所述
kubernetes容器网络包括至少一个节点node,所述节点node包括数个应用实例pod,所述计算机设备包括处理器,其被配置为:
20.在目标端pod设置代理pod pod-agent作为unix socket服务端,在配置端pod设置主机代理host-agent作为unix socket客户端;
21.在目标端pod执行pod cni初始化流程,以配置pod容器网络;
22.在需要变更目标端pod容器网络的情况下,利用所述host-agent发起到所述pod-agent的连接;
23.利用所述pod-agent通过sendmsg发送自身netnamespace文件描述符;
24.利用所述host-agent调用recvmsg获取netnamespace文件描述符,并通过netlink socket实现配置变更。
25.可选的,所述处理器还被配置为:在需要变更配置端pod容器网络的情况下,直接获取配置端pod的net namespace文件描述符,并通过netlink socket实现配置变更。
26.可选的,所述unix socket服务端与所述unix socket客户端共享节点中的unix socket文件。
27.可选的,所述处理器还被配置为在目标端pod执行如下pod cni初始化流程:
28.在kubernetes容器网络中创建pod,并将创建的pod调度到目标node;
29.调用containerd来创建sandbox,以在kubernetes中创建sandbox以形成网络命名空间netnamespace。
30.可选的,所述处理器还被配置为:
31.在指定目录中读取cni配置文件;
32.加载所述cni配置文件中的cni二进制程序,并在所述netnamespace中执行初始化逻辑。
33.本技术实施例通过在目标端pod设置代理pod pod-agent作为unix socket服务端,在配置端pod设置主机代理host-agent作为unix socket客户端,由此实现变更目标端pod容器网络。
34.上述说明仅是本技术技术方案的概述,为了能够更清楚了解本技术的技术手段,而可依照说明书的内容予以实施,并且为了让本技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本技术的具体实施方式。
附图说明
35.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
36.图1为本技术实施例的kubernetes容器网络配置方法的基本流程图;
37.图2为本技术实施例的kubernetes容器网络的架构。
具体实施方式
38.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例
所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
39.本技术实施例提供一种kubernetes容器网络配置方法,所述kubernetes容器网络包括至少一个节点node,所述节点node包括数个应用实例pod,如图1所示,包括如下步骤:
40.在步骤s101中,在目标端pod设置代理pod pod-agent作为unix socket服务端,在配置端pod设置主机代理host-agent作为unix socket客户端;在一些实施例中,如图2所示,所述unix socket服务端与所述unix socket客户端共享节点中的unix socket文件,例如/dir1/unix.sock。
41.在步骤s102中,在目标端pod执行pod cni初始化流程,以配置pod容器网络。
42.在linux中,pod容器网络,也即netnamespace,可以通过文件打开,然后通过netlink socket来配置它。在一些实施例中,在需要变更配置端pod容器网络的情况下,直接获取配置端pod的netnamespace文件描述符,并通过netlink socket实现配置变更。但由于不同pod之间netnamespace是互相隔离的,实际应用中无法打开对端net namespace。在步骤s103中,在需要变更目标端pod容器网络的情况下,利用所述host-agent发起到所述pod-agent的连接。
43.在步骤s104中,利用所述pod-agent通过sendmsg发送自身netnamespace文件描述符。对于对端的netnamespace,本示例中调用sendmsg时可以发送scm_rights辅助消息,其中scm_rights消息中可以包含文件描述符,文件描述符可以是打开的netnamespace。
44.在步骤s105中,利用所述host-agent调用recvmsg获取net namespace文件描述符,并通过netlink socket实现配置变更。
45.在一些实施例中,在目标端pod执行pod cni初始化流程包括:
46.在kubernetes容器网络中创建pod,并将创建的pod调度到目标node;
47.调用containerd来创建sandbox,以在kubernetes中创建sandbox以形成网络命名空间netnamespace。具体的将创建的pod调度到目标node之后,kubelet组件就会开始孵化pod,通过调用containerd等实现cri接口的容器运行时(runtime)来创建sandbox,其中sandbox在kubernetes中即为一个独立的网络命名空间(netnamespace),也就是pod容器网络。
48.在一些实施例中,containerd创建sandbox包括:
49.在指定目录中读取cni配置文件。加载所述cni配置文件中的cni二进制程序,并在所述netnamespace中执行初始化逻辑。
50.containerd创建sandbox时,首先先在目录/etc/cni/net.d中读取cni配置文件,然后加载配置文件中的cni二进制程序并且在前述net namespace中执行初始化逻辑,之后cni二进制程序退出,完成pod cni初始化流程。
51.本技术实施例通过在目标端pod设置代理pod pod-agent作为unix socket服务端,在配置端pod设置主机代理host-agent作为unix socket客户端,通过unix socket scm_rights辅助消息传递netnamespace文件描述符来动态配置pod容器网络。
52.本技术实施例提供一种计算机设备,用以实现kubernetes容器网络配置,所述kubernetes容器网络包括至少一个节点node,所述节点node包括数个应用实例pod,所述计算机设备包括处理器,其被配置为:
53.在目标端pod设置代理pod pod-agent作为unix socket服务端,在配置端pod设置主机代理host-agent作为unix socket客户端;
54.在目标端pod执行pod cni初始化流程,以配置pod容器网络;
55.在需要变更目标端pod容器网络的情况下,利用所述host-agent发起到所述pod-agent的连接;
56.利用所述pod-agent通过sendmsg发送自身netnamespace文件描述符;
57.利用所述host-agent调用recvmsg获取netnamespace文件描述符,并通过netlink socket实现配置变更。
58.在一些实施例中,所述处理器还被配置为:在需要变更配置端pod容器网络的情况下,直接获取配置端pod的net namespace文件描述符,并通过netlink socket实现配置变更。
59.在一些实施例中,所述unix socket服务端与所述unix socket客户端共享节点中的unix socket文件。
60.在一些实施例中,所述处理器还被配置为在目标端pod执行如下pod cni初始化流程:
61.在kubernetes容器网络中创建pod,并将创建的pod调度到目标node;
62.调用containerd来创建sandbox,以在kubernetes中创建sandbox以形成网络命名空间netnamespace。
63.在一些实施例中,所述处理器还被配置为:
64.在指定目录中读取cni配置文件;
65.加载所述cni配置文件中的cni二进制程序,并在所述netnamespace中执行初始化逻辑。
66.本技术实施例通过在目标端pod设置代理pod pod-agent作为unix socket服务端,在配置端pod设置主机代理host-agent作为unix socket客户端,由此实现变更目标端pod容器网络,实现动态配置pod容器网络。
67.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
68.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
69.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本技术各个实施例所述的方法。
70.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员
在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本技术的保护之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1