Skip to content

Kubernetes-Learning-Playground/cni-interface-study

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cni-interface-study

CNI 配置文件

CNI 配置文件参考

{
  "cniVersion": "0.4.0",  # cni版本
  "name": "mynet",        # cni插件名
  "type": "mycniplugin",  # cni二进制文件
  "bridge":"mycni0",      # 网桥名,
  # 调用ipam插件
  "ipam": {
        "type": "host-local",
        "subnet": "10.16.0.0/16",
        "dataDir": "/tmp/cni-host",
        "routes": [
            { "dst": "0.0.0.0/0" }
        ]
  }
}

项目测试

    1. 创建 netns
ip netns add testing
    1. 执行 cnitool 测试插件(需要先安装 cnitool 工具)
NETCONFPATH=./conf  CNI_PATH=./bin cnitool add mynet /var/run/netns/testing
[root@VM-0-8-centos cni_practice]# NETCONFPATH=./conf  CNI_PATH=./bin cnitool add mynet /var/run/netns/testing
{
    "cniVersion": "0.4.0",
    "ips": [
        {
            "version": "4",
            "address": "10.16.0.4/16",
            "gateway": "10.16.0.1"
        }
    ],
    "routes": [
        {
            "dst": "0.0.0.0/0"
        }
    ],
    "dns": {}
}
    1. 查看网桥与 veth 设备
[root@VM-0-8-centos cni_practice]# ifconfig
mycni0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.16.0.1  netmask 255.255.0.0  broadcast 10.16.255.255
        inet6 fe80::4c6b:8bff:feb2:e6cd  prefixlen 64  scopeid 0x20<link>
        ether fe:71:f7:48:52:63  txqueuelen 0  (Ethernet)
        RX packets 21  bytes 1464 (1.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 656 (656.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
pod1234: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::fc71:f7ff:fe48:5263  prefixlen 64  scopeid 0x20<link>
        ether fe:71:f7:48:52:63  txqueuelen 0  (Ethernet)
        RX packets 7  bytes 586 (586.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7  bytes 586 (586.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0        
    1. 测试
# ping netns内的网络是通的
[root@VM-0-8-centos cni_practice]# ping 10.16.0.4
PING 10.16.0.4 (10.16.0.4) 56(84) bytes of data.
64 bytes from 10.16.0.4: icmp_seq=1 ttl=64 time=0.060 ms
64 bytes from 10.16.0.4: icmp_seq=2 ttl=64 time=0.049 ms
# ping 网桥是通的
[root@VM-0-8-centos cni_practice]# ping 10.16.0.1
PING 10.16.0.1 (10.16.0.1) 56(84) bytes of data.
64 bytes from 10.16.0.1: icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from 10.16.0.1: icmp_seq=2 ttl=64 time=0.038 ms
# ping 宿主机网桥是通的
[root@VM-0-8-centos cni_practice]# ip netns exec testing ping 10.16.0.1
PING 10.16.0.1 (10.16.0.1) 56(84) bytes of data.
64 bytes from 10.16.0.1: icmp_seq=1 ttl=64 time=0.046 ms
64 bytes from 10.16.0.1: icmp_seq=2 ttl=64 time=0.051 ms
# 由 netns 中可 ping 通宿主机网络
[root@VM-0-8-centos cni_practice]# ip netns exec testing ping 10.0.0.8
PING 10.0.0.8 (10.0.0.8) 56(84) bytes of data.
64 bytes from 10.0.0.8: icmp_seq=1 ttl=64 time=0.048 ms
64 bytes from 10.0.0.8: icmp_seq=2 ttl=64 time=0.051 ms
    1. 删除设备
NETCONFPATH=./conf  CNI_PATH=./bin cnitool del mynet /var/run/netns/testing

项目测试用

# 删除遗留
ip netns delete testing && rm /tmp/cni-host/mynet -fr

go build -o ./bin/mycniplugin ./cmd/cni/main.go
# cnitool 测试
NETCONFPATH=./conf  CNI_PATH=./bin cnitool add mynet /var/run/netns/testing
NETCONFPATH=./conf  CNI_PATH=./bin cnitool del mynet /var/run/netns/testing
NETCONFPATH=./conf  CNI_PATH=./bin cnitool check mynet /var/run/netns/testing

About

基于k8s扩展的CNI接口练习

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages