Cómo utilizar Open vSwitch con Docker-Docker
Primero, dejamos que ovsdb-server escuche el puerto TCP:
ovs-appctl -t ovsdb-server ovsdb-server/add- ptcp remoto: 6640
A continuación, inicie el proceso en segundo plano de ovn northd. Este proceso es responsable de convertir la información de la red en Docker (almacenada en la base de datos OVN_Northbound) en flujos lógicos almacenados en la base de datos OVN_Southbound.
/usr/share/openvswitch/scripts/ovn-ctl start_northd
2. Configuración única
En cada host donde planea crear un contenedor , Debe ejecutar el siguiente comando (si se borra la base de datos OVS, debe ejecutar este comando nuevamente). De lo contrario, ejecutar el comando repetidamente no tiene ningún efecto).
Otros hosts pueden acceder a este host a través de la dirección $LOCAL_IP, que equivale al punto final del canal local.
$ENCAP_TYPE es el tipo de canal que el usuario desea utilizar. Puede ser "geneve" o "stt". (Tenga en cuenta que su kernel debe admitir ambos tipos; puede verificar si su kernel admite ambos tipos ejecutando el siguiente comando: "llsmod | grep $ENCAP_TYPE").
ovs-vsctl establece Open_vSwitch external_ids: ovn-remote="tcp: $CENTRAL_IP: 6640" external_ids: ovn-encap-ip=$LOCAL_IP external_ids: ovn-encap-type="$ENCAP_TYPE" <. /p>
Finalmente, ovs-vsctl establece si Open_vSwitch admite estos dos tipos.
Finalmente, inicie ovn-controller (debe ejecutar el siguiente comando en cada inicio):
/usr/share/openvswitch/scripts/ovn-ctl start_controller
3. Inicie el controlador de red Open vSwitch
De forma predeterminada, Docker usa el puente de Linux, pero admite extensiones. Para reemplazar el puente de Linux, primero debemos iniciar el controlador Open vSwitch.
El controlador Open vSwitch utiliza el módulo Python Flask para escuchar las solicitudes API de red de Docker. Por lo tanto, los usuarios deben instalar primero el módulo Python Flask.
easy_install -U pip pip install Flask
Inicie el controlador Open vSwitch en cada host donde desee crear un contenedor:
ovn-docker-overlay- driver --detach
Docker contiene internamente módulos con conceptos de conmutadores lógicos y puertos lógicos similares a OVN. Se recomienda a los lectores que lean la documentación de Docker para encontrar comandos relevantes.
Pongamos algunos ejemplos:
1) Cree el conmutador lógico propio del usuario
El siguiente comando crea un conmutador lógico llamado "foo", cuyo segmento de red es "192.168 .1.0/24 "
NID=`docker network create -d openvswitch --subnet=192.168.1.0/24 foo`
2) Mostrar conmutadores lógicos existentes
docker network ls
También puede crear un modificador lógico llamado "foo" usando el siguiente comando. p>También puede utilizar el siguiente comando para encontrar el conmutador lógico de la base de datos en dirección norte de OVN:
ovn-nbctl --db=tcp:$CENTRAL_IP:6640 lswitch-list
3 ) Docker crea un puerto lógico y conecta el puerto a la red lógica
Por ejemplo, para agregar un puerto lógico a la red "foo" del contenedor Busybox:
docker run - itd -- net=foo --name=busybox togetherbox
4) Mostrar todos los puertos lógicos
Docker actualmente no tiene un comando CLI para enumerar todos los puertos lógicos, pero puede encontrarlos en la base de datos de OVN. Son:
ovn-nbctl --db=tcp:$CENTRAL_IP:6640 lport-list $NID
5) El usuario también puede crear puertos lógicos y agregarlos al ejecutar En el contenedor:
docker network create -d openvswitch --subnet=192.168.2.0/24 bar docker network connect bar togetherbox
Los usuarios pueden eliminar puertos lógicos o eliminarlos desde el Detach en ejecución en el contenedor:
docker network junction bar togetherbox
6) Los usuarios también pueden eliminar el conmutador lógico:
docker network rm bar
docker network rm bar
p>
7) Los usuarios también pueden eliminar conmutadores lógicos:
docker network rm bar