【Openstack】nova-docker现状

云计算 OpenStack
nova-docker插件h版出现,但是在i版本从nova中移出,作为孵化项目培养。

nova-docker现状

nova-docker插件h版出现,但是在i版本从nova中移出,作为孵化项目培养。

当时给出的解释是,希望能更快的进行迭代开发,支持cinder和neutron。并计划在K版本release时重新进入。

nova-docker的架构

目前的架构如下(其中docker registry已经不需要了)。

 

从图中可以看出,这种使用方法,docker相当于一种新的hypervisor。

把容器当做虚拟机来使用。

其中容器镜像通过docker save保存成tar包,放置在glance上管理。

创建容器时,从glance上下载容器镜像,利用(docker load)加载并启动容器镜像。

支持功能

  • 支持容器创建/删除/软删除/重启/暂停/解除暂定/停止/开始。
  • 支持对容器创建快照,支持基于快照恢复容器。
  • 支持对容器设置插拔网卡。
  • 查询docker节点上CPU/内存使用情况/查询可用节点。
  • 查询docker容器。
  • 查询容器console输出。
  • 支持neutron网络/nova-network网络。
  • 支持绑定浮动IP。
  • 不支持共享存储。
  • 不支持挂卷/卸卷操作。
  • 不支持迁移,rescue等操作。
  • 不支持设置安全组规则。(从代码上看,留的有框架,但是目前并不支持。使用的NoopFirewallDriver。)
  • 容器使用的是本地存储,不能使用cinder共享存储。

#p#

网络实现

查看容器的namespace:

  1. [root@localhost ~]# docker ps --no-trunc 
  2. CONTAINER ID                                                       IMAGE                    COMMAND             CREATED             STATUS              PORTS               NAMES 
  3. 54ba6c67de05b8c5ddb824497eae0071f902dcdea05ce93109d9791453dfeb17   tutum/wordpress:latest   "/run.sh"           15 hours ago        Up 15 hours                             nova-ee2edd99-a64c-4701-84ad-faccd3b1a246 
  4. [root@localhost ~]# ip netns list 
  5. 54ba6c67de05b8c5ddb824497eae0071f902dcdea05ce93109d9791453dfeb17 
  6. qdhcp-78277811-dc20-47c0-8319-58894843e3d4 
  7. 3ce4e73bcfeb64b994a5bf87c7f49553ca3583308b93878a07679a742661b0a4 
  8. qdhcp-bc557a68-425e-4f24-bb6c-627500647856 
  9. ee3b2cc56a0ccae387371cf8eb6ad7f43712cf1cbdc66bf46af77f3c929be34a 
  10. qrouter-818c4149-355d-4409-8dda-f412da898ff0 

查看namespace中网络:

  1. [root@localhost ~]# ip netns exec 54ba6c67de05b8c5ddb824497eae0071f902dcdea05ce93109d9791453dfeb17 ip addr 
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
  4.     inet 127.0.0.1/8 scope host lo 
  5.        valid_lft forever preferred_lft forever 
  6.     inet6 ::1/128 scope host 
  7.        valid_lft forever preferred_lft forever 
  8. 28: nse54c9783-26: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
  9.     link/ether fa:16:3e:d8:9b:e8 brd ff:ff:ff:ff:ff:ff 
  10.     inet 10.0.0.2/24 brd 10.0.0.255 scope global nse54c9783-26 
  11.        valid_lft forever preferred_lft forever 
  12.     inet6 fe80::f816:3eff:fed8:9be8/64 scope link 
  13.        valid_lft forever preferred_lft forever 

查看设备28的关联veth pair:

  1. [root@localhost ~]# ip netns exec 54ba6c67de05b8c5ddb824497eae0071f902dcdea05ce93109d9791453dfeb17  ethtool -S nse54c9783-26 
  2. NIC statistics: 
  3.      peer_ifindex: 29 
  4. [root@localhost ~]# ip addr 
  5. ... 
  6. 29: tape54c9783-26: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP qlen 1000 
  7.     link/ether 82:31:7f:dc:e3:8f brd ff:ff:ff:ff:ff:ff 
  8.     inet6 fe80::8031:7fff:fedc:e38f/64 scope link 
  9.        valid_lft forever preferred_lft forever 
  10. ... 

查看设备29关联设备:(设备挂在OVS网桥的br-int上)

  1. [root@localhost ~]# ovs-vsctl show 
  2. 2368aead-599b-4cd8-b2a1-dd01041e5635 
  3.     Bridge br-ex 
  4.         Port br-ex 
  5.             Interface br-ex 
  6.                 type: internal 
  7.         Port "qg-83cd012e-53" 
  8.             Interface "qg-83cd012e-53" 
  9.                 type: internal 
  10.     Bridge br-int 
  11.         fail_mode: secure 
  12.         Port "tapbf138559-94" 
  13.             tag: 3 
  14.             Interface "tapbf138559-94" 
  15.         Port "tape54c9783-26" 
  16.             tag: 1 
  17.             Interface "tape54c9783-26" 
  18.         Port "tap7687fcec-f0" 
  19.             tag: 2 
  20.             Interface "tap7687fcec-f0" 
  21.         Port br-int 
  22.             Interface br-int 
  23.                 type: internal 
  24.         Port "qr-9712c2ca-1f" 
  25.             tag: 1 
  26.             Interface "qr-9712c2ca-1f" 
  27.                 type: internal 
  28.         Port patch-tun 
  29.             Interface patch-tun 
  30.                 type: patch 
  31.                 options: {peer=patch-int
  32.         Port "tap5f8409aa-f9" 
  33.             tag: 3 
  34.             Interface "tap5f8409aa-f9" 
  35.                 type: internal 
  36.         Port "tapeb9206a8-85" 
  37.             tag: 1 
  38.             Interface "tapeb9206a8-85" 
  39.                 type: internal 
  40.     Bridge br-tun 
  41.         Port patch-int 
  42.             Interface patch-int 
  43.                 type: patch 
  44.                 options: {peer=patch-tun} 
  45.         Port br-tun 
  46.             Interface br-tun 
  47.                 type: internal 
  48.     ovs_version: "2.0.0" 

备注:因为是个单机环境,没有给br-int配置具体的物理网卡。  
容器DHCP服务与绑定Floating IP: 

  1.  //10.0.0.0/24网段的DHCP服务 
  2. [root@localhost ~]# ip netns exec qdhcp-78277811-dc20-47c0-8319-58894843e3d4 ip addr 
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
  4.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
  5.     inet 127.0.0.1/8 scope host lo 
  6.        valid_lft forever preferred_lft forever 
  7.     inet6 ::1/128 scope host 
  8.        valid_lft forever preferred_lft forever 
  9. 27: tapeb9206a8-85: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
  10.     link/ether fa:16:3e:6e:1b:13 brd ff:ff:ff:ff:ff:ff 
  11.     inet 10.0.0.3/24 brd 10.0.0.255 scope global tapeb9206a8-85 
  12.        valid_lft forever preferred_lft forever 
  13.     inet6 fe80::f816:3eff:fe6e:1b13/64 scope link 
  14.        valid_lft forever preferred_lft forever 
  15. //可以看出通过router将内部10.0.0.0/24的网络与外部172.24.4.0/24的两个IP打通 
  16. [root@localhost ~]# ip netns exec qrouter-818c4149-355d-4409-8dda-f412da898ff0  ip addr 
  17. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
  18.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
  19.     inet 127.0.0.1/8 scope host lo 
  20.        valid_lft forever preferred_lft forever 
  21.     inet6 ::1/128 scope host 
  22.        valid_lft forever preferred_lft forever 
  23. 19: qr-9712c2ca-1f: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
  24.     link/ether fa:16:3e:50:18:19 brd ff:ff:ff:ff:ff:ff 
  25.     inet 10.0.0.1/24 brd 10.0.0.255 scope global qr-9712c2ca-1f 
  26.        valid_lft forever preferred_lft forever 
  27.     inet6 fe80::f816:3eff:fe50:1819/64 scope link 
  28.        valid_lft forever preferred_lft forever 
  29. 20: qg-83cd012e-53: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
  30.     link/ether fa:16:3e:0d:4e:c2 brd ff:ff:ff:ff:ff:ff 
  31.     inet 172.24.4.2/24 brd 172.24.4.255 scope global qg-83cd012e-53 
  32.        valid_lft forever preferred_lft forever 
  33.     inet 172.24.4.6/32 brd 172.24.4.6 scope global qg-83cd012e-53 
  34.        valid_lft forever preferred_lft forever 
  35.     inet6 fe80::f816:3eff:fe0d:4ec2/64 scope link 
  36.        valid_lft forever preferred_lft forever 
  37. //IP绑定的NAT规则 
  38. [root@localhost ~]# ip netns exec qrouter-818c4149-355d-4409-8dda-f412da898ff0  iptables-save 
  39. -A neutron-l3-agent-PREROUTING -d 172.24.4.6/32 -j DNAT --to-destination 10.0.0.2 
  40. -A neutron-l3-agent-float-snat -s 10.0.0.2/32 -j SNAT --to-source 172.24.4.6 

参考:  
1. http://www.opencontrail.org/openstack-docker-opencontrail/   
2. http://technodrone.blogspot.com/2014/10/nova-docker-on-juno.html 

本文出自:http://blog.csdn.net/halcyonbaby/article/details/41855917

责任编辑:Ophira 来源: 追寻神迹的博客
相关推荐

2011-09-07 10:42:38

cloudopenstack n

2012-02-03 09:22:57

2015-04-27 13:34:03

OpenStackNova在线升级

2011-11-29 10:24:17

OpenStackNova

2013-11-06 10:46:58

OpenStack监控监控系统

2011-08-17 10:19:30

CentOSOpenStack N

2015-03-16 10:16:33

协同并发NovaOpenstack

2011-05-24 09:33:40

UbuntuOpenStackNova

2011-07-18 13:35:38

PuppetOpenStack

2015-05-12 10:31:25

openstack开源新特性分析

2016-01-14 10:02:54

DockerOpenStack私有云

2014-12-08 11:01:09

openstack网络network

2017-06-09 14:30:31

Openstack N对象模型数据库

2015-09-01 10:05:17

OpenStackDocker

2014-04-24 10:06:01

OpenStackDocker

2015-04-13 09:51:27

dockerdocker应用现状

2016-12-01 13:37:42

OpenStack MDocker Swar容器

2014-06-19 16:20:19

OpenStackDocker 1.0

2012-10-18 10:59:21

OpenStackNova项目vSphere
点赞
收藏

51CTO技术栈公众号