2017-03-01 22:08:30 |
hongbin |
description |
The steps to reproduce:
$ neutron net-create test
$ neutron subnet-create test 10.2.0.0/24
$ neutron subnet-create --ip-version 6 test fe81::/64
$ IP=$(neutron port-create test | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b")
$ docker network create -d kuryr --ipam-driver=kuryr --subnet 10.2.0.0/24 --gateway 10.2.0.1 -o neutron.net.name=test foo
$ docker run --net=foo -itd --name=container1 --ip $IP busybox
81977d6a45de1a58f53f36485f89c1084bf84d41bdc5812518e297ffc4273b42
docker: Error response from daemon: failed to create endpoint container1 on network foo: NetworkDriver.CreateEndpoint: u'8914fe13-226b-4f55-9cda-f0a7279479b5'.
From the server log, there is an exception:
[2017-02-28 23:42:47,346] ERROR in app: Exception on /NetworkDriver.CreateEndpoint [POST]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/opt/stack/kuryr-libnetwork/kuryr_libnetwork/controllers.py", line 887, in network_driver_create_endpoint
endpoint_id, neutron_port, subnets, filtered_networks[0])
File "/opt/stack/kuryr-libnetwork/kuryr_libnetwork/port_driver/drivers/veth.py", line 62, in create_host_iface
endpoint_id, neutron_port, subnets, network)
File "/opt/stack/kuryr/kuryr/lib/binding/__init__.py", line 41, in port_bind
segmentation_id=segmentation_id)
File "/opt/stack/kuryr/kuryr/lib/binding/drivers/veth.py", line 65, in port_bind
mtu=mtu, hwaddr=port[utils.MAC_ADDRESS_KEY].lower())
File "/opt/stack/kuryr/kuryr/lib/binding/drivers/utils.py", line 109, in _configure_container_iface
subnet = subnets_dict[subnet_id]
KeyError: u'8914fe13-226b-4f55-9cda-f0a7279479b5' |
The steps to reproduce:
$ neutron net-create test
$ neutron subnet-create test 10.2.0.0/24
$ neutron subnet-create --ip-version 6 test fe81::/64
$ IP=$(neutron port-create test | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b")
$ docker network create -d kuryr --ipam-driver=kuryr --subnet 10.2.0.0/24 --gateway 10.2.0.1 -o neutron.net.name=test foo
$ docker run --net=foo -itd --name=container1 --ip $IP busybox
81977d6a45de1a58f53f36485f89c1084bf84d41bdc5812518e297ffc4273b42
docker: Error response from daemon: failed to create endpoint container1 on network foo: NetworkDriver.CreateEndpoint: u'8914fe13-226b-4f55-9cda-f0a7279479b5'.
From the server log, there is an exception: http://paste.openstack.org/show/601014/
UPDATE 1:
This bug was tracked down to kuryr-libnetwork for handling ports with dual networks (ipv4 & ipv6). The steps to reproduce:
$ neutron net-create test
$ neutron subnet-create test 10.2.0.0/24
$ neutron subnet-create --ip-version 6 test fe80::/64
$ docker network create --driver=kuryr --ipam-driver=kuryr --subnet 10.2.0.0/24 --gateway 10.2.0.1 --ipv6 --subnet fe80::/64 --gateway fe80::1 --opt neutron.net.name=test dualnet
$ neutron port-create test
$ docker run --net=dualnet -itd --name=container --ip 10.2.0.4 --ip6 fe80::8 busybox
e4953813d80b3d2a1cdba13df6ed39765545e1d23b053407c1de332adb51a22a
docker: Error response from daemon: IpamDriver.RequestAddress: Requested ip address {'subnet_id': u'b42a709f-3d78-48ce-9362-e238ec82edc6', 'ip_address': u'fe80::8'} already belongs to a bound Neutron port: 61032935-a787-4f6f-bfa4-21cc78e78ac9. |
|