永发信息网

如何在Docker中使用Open vSwitch

答案:2  悬赏:30  手机版
解决时间 2021-04-16 06:39
如何在Docker中使用Open vSwitch
最佳答案
首先我们让ovsdb-server监听一个TCP端口:
ovs-appctl -t ovsdb-server ovsdb-server/add-remote ptcp:6640

接下来,启动ovn-northd后台进程。这个进程负责将来自Docker的网络信息(存储在OVN_Northbound 数据库中)转换成逻辑流存储于OVN_Southbound数据库。
/usr/share/openvswitch/scripts/ovn-ctl start_northd

2、一次性配置
在每一个你打算创建容器的主机上,你需要运行以下的命令(如果你的OVS数据库被清空,你需要再次运行这个命令。除此之外,重复运行这个命令都是没有任何影响的)。
其他的主机可以通过$LOCAL_IP地址来访问到这个主机,它就相当于本地通道的端点。
$ENCAP_TYPE是指用户想使用的通道的类型。它可以是”geneve“或者”stt“。(注意,你的内核需要支持以上两个类型,用户可以通过运行以下命令来检测内核是否支持以上类型:"llsmod | grep $ENCAP_TYPE")。
ovs-vsctl set Open_vSwitch . external_ids:ovn-remote="tcp:$CENTRAL_IP:6640" external_ids:ovn-encap-ip=$LOCAL_IP external_ids:ovn-encap-type="$ENCAP_TYPE"

最后,启动ovn-controller(你需要在每一次启动时运行以下命令):
/usr/share/openvswitch/scripts/ovn-ctl start_controller

3、启动Open vSwitch网络驱动
在默认情况下,Docker使用Linux网桥,但它支持外扩展。为了替换Linux网桥,我们需要先启动Open vSwitch驱动。
Open vSwitch驱动使用了Python Flask模块来监听Docker的网络API请求。因此,用户需要先安装Python 的Flask模块。
easy_install -U pip pip install Flask

在每一个你想要创建容器的主机上启动Open vSwitch驱动:
ovn-docker-overlay-driver --detach

Docker内部包含了一些模块,这些模块拥有类似于OVN的逻辑交换机和逻辑端口的概念。请读者仔细阅读Docker的文档来查找相关的命令。这里我们给出了一些案例:
1)创建用户自己的逻辑交换机
下面的命令创建了一个名为”foo“的逻辑交换机,它的网段为”192.168.1.0/24”:
NID=`docker network create -d openvswitch --subnet=192.168.1.0/24 foo`

2)显示已有逻辑交换机
docker network ls

你也可以通过以下命令从OVN的northbound数据库中查找到这个逻辑交换机:
ovn-nbctl --db=tcp:$CENTRAL_IP:6640 lswitch-list

3)Docker创建逻辑端口,并且将这个端口附加到逻辑网络上
比如说,将一个逻辑端口添加到容器busybox的“foo”网络上:
docker run -itd --net=foo --name=busybox busybox

4)显示所有的逻辑端口
Docker现在并没有一个CLI命令来罗列所有的逻辑端口,但是你可以从OVN的数据库中找到它们:
ovn-nbctl --db=tcp:$CENTRAL_IP:6640 lport-list $NID
全部回答
你好,使用方法如下:
首先我们让ovsdb-server监听一个TCP端口:
ovs-appctl -t ovsdb-server ovsdb-server/add-remote ptcp:6640
接下来,启动ovn-northd后台进程。这个进程负责将来自Docker的网络信息(存储在OVN_Northbound 数据库中)转换成逻辑流存储于OVN_Southbound数据库。
/usr/share/openvswitch/scripts/ovn-ctl start_northd
2、一次性配置
在每一个你打算创建容器的主机上,你需要运行以下的命令(如果你的OVS数据库被清空,你需要再次运行这个命令。除此之外,重复运行这个命令都是没有任何影响的)。
其他的主机可以通过$LOCAL_IP地址来访问到这个主机,它就相当于本地通道的端点。
$ENCAP_TYPE是指用户想使用的通道的类型。它可以是”geneve“或者”stt“。(注意,你的内核需要支持以上两个类型,用户可以通过运行以下命令来检测内核是否支持以上类型:"llsmod | grep $ENCAP_TYPE")。
ovs-vsctl set Open_vSwitch . external_ids:ovn-remote="tcp:$CENTRAL_IP:6640" external_ids:ovn-encap-ip=$LOCAL_IP external_ids:ovn-encap-type="$ENCAP_TYPE"
最后,启动ovn-controller(你需要在每一次启动时运行以下命令):
/usr/share/openvswitch/scripts/ovn-ctl start_controller
3、启动Open vSwitch网络驱动
在默认情况下,Docker使用Linux网桥,但它支持外扩展。为了替换Linux网桥,我们需要先启动Open vSwitch驱动。
Open vSwitch驱动使用了Python Flask模块来监听Docker的网络API请求。因此,用户需要先安装Python 的Flask模块。
easy_install -U pip pip install Flask
在每一个你想要创建容器的主机上启动Open vSwitch驱动:
ovn-docker-overlay-driver --detach
Docker内部包含了一些模块,这些模块拥有类似于OVN的逻辑交换机和逻辑端口的概念。请读者仔细阅读Docker的文档来查找相关的命令。这里我们给出了一些案例:
1)创建用户自己的逻辑交换机
下面的命令创建了一个名为”foo“的逻辑交换机,它的网段为”192.168.1.0/24”:
NID=`docker network create -d openvswitch --subnet=192.168.1.0/24 foo`
2)显示已有逻辑交换机
docker network ls
你也可以通过以下命令从OVN的northbound数据库中查找到这个逻辑交换机:
ovn-nbctl --db=tcp:$CENTRAL_IP:6640 lswitch-list
3)Docker创建逻辑端口,并且将这个端口附加到逻辑网络上
比如说,将一个逻辑端口添加到容器busybox的“foo”网络上:
docker run -itd --net=foo --name=busybox busybox
4)显示所有的逻辑端口
Docker现在并没有一个CLI命令来罗列所有的逻辑端口,但是你可以从OVN的数据库中找到它们:
ovn-nbctl --db=tcp:$CENTRAL_IP:6640 lport-list $NID
5)用户也可以创建一个逻辑端口,并将它添加到一个运行中的容器上:
docker network create -d openvswitch --subnet=192.168.2.0/24 bar docker network connect bar busybox
用户可以删除逻辑端口,或者将它们从运行容器上分离出来:
docker network disconnect bar busybox
6)用户也可以删除逻辑交换机:
docker network rm bar
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
鬼剑士好吗
哪有卖煤气罐与管子连接处的零件
手脚干裂缺什么维生素
早恋一定有错吗?
5800x耗电量大么?
什么是单片机?
DNF玩到一半跳出来一个窗口?这是怎么回事?
铲车输油泵挺杆漏气! 为什么?
黄岛区胶河经济区残疾人安养中心在哪里啊,我
安慰考试不过关的句子,自信方面的句子?
求问郑成功一首诗
求个5000左右的配置?
承诺都是用等滴吗?
买了歌怎么放不到动感影集里去啊?
上海炸串用的卤怎样制作
推荐资讯
一份已经不可能拥有的感情,还期待着,是不是
安培表示专心的名言,形容花草励志的诗句
世上真的有幽灵的存在么
谁有张韶涵偶尔的英文翻版歌曲
什么手机最多人用
根雕奇石馆地址有知道的么?有点事想过去
泰安泰山永宁中西医诊所我想知道这个在什么地
汽车故障码华晨汽车 p1559
怎样才能把计算机学好
手机总掉线
有谁知道犬夜叉完结篇多久更新一集
大耳朵图图拼音是什么,大耳朵图图最讨厌吃什
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?