ubuntu系统中containerd的cni网络配置


containerd创建cni网络
1、下载cni工具源码包和网络插件包
访问地址:
https://github.com/containernetworking/plugins
https://github.com/containernetworking/cni

下载某一个版本的包

mkdir -p /root/cni && cd /root/cni
wtet https://github.com/containernetworking/cni/archive/refs/tags/v1.2.3.tar.gz
wtet https://github.com/containernetworking/plugins/releases/download/v1.6.2/cni-plugins-linux-amd64-v1.6.2.tgz

2、创建cri插件解压目录,解压cni-plugins插件包

mkdir /root/cni/cni-plugins
tar -xf cni-plugins-linux-amd64-v1.6.2.tgz -C /root/cni/cni-plugins
tar -xf cni-1.2.3.tar.gz

image

我这里将cni-plugins和cni-1.2.3移动到opt目录安装:mv cni-1.2.3 /opt/cni && mv cni-plugins /opt/

image

3、准备cni的网络配置文件

mkdir -p /etc/cni/net.d

vi /etc/cni/net.d/10-mynet.conf
{
  "cniVersion": "1.0.0",           // CNI 规范版本
  "name": "mynet",                 // 网络配置名称(自定义标识)
  "type": "bridge",                // 插件类型:桥接
  "bridge": "cni0",                // 创建的网桥设备名称
  "isGateway": true,               // 是否为网桥配置网关IP
  "ipMasq": true,                  // 是否设置IP伪装(NAT)
  "ipam":                          // IP地址管理配置
  {
    "type": "host-local",          // 使用本地存储分配IP
    "subnet": "10.66.0.0/16",      // 分配的IP子网范围
    "routes": [
      { "dst": "0.0.0.0/0" }       // 默认路由(所有流量通过网桥)
    ]
  }
}

vi /etc/cni/net.d/99-loopback.conf
{
  "cniVersion": "1.0.0",           // CNI 规范版本
  "name": "lo",                    // 网络配置名称(注意:不是设备名)
  "type": "loopback"               // 插件类型:回环设备
}

image

4、安装json解析工具,

apt-get install jq

5、执行脚本生成cni网络

cd /opt/cni/scripts/
CNI_PATH=/opt/cni-plugins ./priv-net-run.sh echo "Hello world"

image

image

 

6、给容器配置网络功能,使宿主机能访问容器

# 获取容器进程ID
pid=$(ctr tasks ls | grep linux|awk '{print $2}')
# 在宿主机中完成指定容器网络命名空间的获取
netnspath=/proc/6156/ns/net
# 执行脚本为容器添加网络配置
CNI_PATH=/opt/cni-plugins ./exec-plugins.sh add  ${pid}  ${netnspath}

image

 由于镜像没有查看容器内ip相关命令,这里没截图展示效果。

posted @ 2025-10-19 19:34  teiperfly  阅读(0)  评论(0)    收藏  举报