kubelet配置cni插件_kubernetes插件开发过程分享

本文介绍了在Kubernetes环境中使用CNI插件替代docker0网络,结合neutron创建port的开发过程。主要内容包括插件配置、kubelet配置、插件程序的cmdAdd和cmdDel实现,以及neutron接口的使用。通过这个过程,可以在POD创建和删除时动态管理port,实现底层网络通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原标题:kubernetes插件开发过程分享

前言

按照需求,需要在虚拟机部署的kubernetes环境中,使用neutron创建port并绑定到POD上使用,替换原来的docker0网络。本文对操作过程进行了记录,希望对初学者有所帮助,尝试开发自己的插件。

文中内容不对涉及的各个模块进行详细的介绍,重点是插件开发过程中框架的介绍。

概述

kubernetes通过插件使用neutron网络,替换docker0机制完成底层网络通信。Cni的位置下图所示:

图1 模块框架

开发过程

准备工作

在每个Kubernetes节点机器上必须安装Kubernetes, Docker, bash, jq等 。

Master和node可以部署在不同虚拟机上,也可以部署在同一台虚拟机上。本次测试在虚拟机机A上部署master和node,在虚拟机B上部署node。

Kubernetes配置

1

插件

本次开发包括一个配置文件和一个执行文件,把可执行文件放到/opt/cni/bin/目录下。把配置文件放到你所选择的目录下;通常使用/etc/cni/net.d/。

配置文件内容如下,其中文件中name字段指定你使用的执行文件的名称,它会根据这个名字执行所编写的插件网络可执行文件。

2

kubelet配置

Kubernetes想要使用插件,就必须告诉kubelet,所以需要在kubelet的配置文件中加上下面这句话。这里使用目录/etc/cni/net.d/作为配置文件放置目录。这样,POD创建时就好走Kubernetes插件机制的流程。

插件程序开发

插件程序开发,入口有两个,一个是cmdAdd,用于pod创建时添加port,另外一个是cmdDel,用于pod删除时删除对应的port。针对里面具体实现细节,这里就不再详述,有需求者可以单独探讨。

1

cmdAdd

原型以及实行流程如下:

图2 POD创建时插件工作流程

需要特殊说明的,此插件开发是基于neutron的network和subnet已经创建的基础之上,所以插件实现主要包含三大块:

1、使用neutron创建port;

2、把创建的port落地到对应的虚机上;

3、在插件中把port放置到POD中。

2

cmdDel

原型以及实行流程如下:

图3 POD删除时插件工作流程

删除时过程与添加时刚好相反,也是包含了三大块:1、解除POD中port的绑定;2、解除VM中port的绑定;3、删除port。

neutron接口

为了能够在插件中调用neutron接口,需要研究neutron接口参数,可以在openstack虚拟环境直接使用命令执行,然后获取日志信息,根据日志中字段内容,在插件代码中构造相应结构进行接口调用。所以下面主要介绍命令参数,方便需要人员直接构造,GO代码的实现就不再详细说明。

1

获取keystone的token

为了能够执行neutron提供的RESTFUL接口,需要先获取keystone的token,命令以及返回结果如下:

执行获取token的命令:

命令执行后的RESP,可以看到会返回一个token:

在插件中按照上面获取token的命令,构造http请求,然后根据应答内容解析出id,供后面创建端口等接口使用。

2

创建port

获取keystone的token之后,可以携带该token直接创建端口,命令以及返回结果如下:

创建port命令:

完成port创建之后neutron返回的RESP,根据RESP解析出port的id、mac、IP等相关信息,用于后面POD绑定。

3

绑定port到虚机

绑定neutron创建的port到VM,命令如下:

完成port绑定之后,如果返回状态正常,可以不关心应答内容,直接进行后续操作。

4

解除port到虚机的绑定

POD删除时,需要解除port到VM的绑定,命令如下:

解除port到VM的绑定命令:

解除port绑定命令执行完之后,如果返回状态正常,可以不关心应答内容,直接进行后续操作。

5

删除port

删除port的命令:

同意只需要关系返回的状态是否OK。

大功告成

经过上面所有操作之后,在创建POD时,Kubernetes会自动调用插件完成底层网络的部署,而你可以通过查看pod信息(IP),发现你创建的port的IP地址已经出现在了POD信息列表中,你再ping一下试试效果。

结尾

作者同样是初学者,只能先分享到这里了,大家一起继续努力吧。另外,文中不免有错误,欢迎批评指正。

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值