OpenStack-Zun 使用

Zun组件简介

Zun是Openstack中提供容器管理服务的组件,于2016年6月建立。Zun的目标是提供统一的Openstack API用于启动和管理容器,支持多种容器技术。Zun原来称为Higgins,后改名为Zun。

Zun计划支持多种容器技术,Docker,Rkt,clear container等,目前只支持Docker、对于k8s 的开发进度社区也已经很快进行中。

zun组件的架构图

Openstack支持容器主要有Nova Docker driver,Heat Docker driver和Magnum等多个方案。Nova Docker driver方案将容器像虚拟机一样操作,通过增加 Nova Docker driver,实现对 Docker容器的启停、创建等常规虚拟机的操作。缺点是由于Docker和虚拟机差别,导致容器的许多功能无法实现,例如容器关联、端口映射等。

Zun目标在于解决 Nova Docker driver方案存在的问题,独立于 Nova 之外实现 Docker 部署调度框架,自身实现与 Glance、Neutron、Cinder等组件的集成,但并不实现对容器编排引擎(Container Orchestration Engines COE)的部署调度。Nova-docker通过Nova API访问容器,而Zun不受Nova API的限制。

Magnum是OpenStack中一个提供容器集群部署的服务,通过Heat部署虚拟机和物理机,组成集群,然后调用COE接口完成容器的部署。Magnum项目创建之初,项目目标以Caas为宗旨,即容器即服务;在后续的发展中将功能集中在容器的集群部署上。Zun和Magnum的差异在于Zun目标是提供管理容器的API,而Magnum提供部署和管理容器编排引擎(COE)的API。

Zun将容器作为Openstack管理的资源,为用户提供了创建和管理这些容器的接口。被Zun管理的容器和其他Openstack资源能够良好的集成在一起,例如Neutron网络和Cinder卷。用户使用统一的、简化的API接口来管理容器,而不需要关心不同容器技术的差异。

Zun不准备实现COE提供的很多先进的功能(例如容器保活、负载均衡等),而是提供基本的容器操作(CRUD),并和Openstack紧密集成。

Zun组件的使用

Zun组件提供了大量的命令用于部署和管理容器

接下来具体玩法:

查看neutron网络:
(openstack) network list
+--------------------------------------+-------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+-------+--------------------------------------+
| 430e352f-d501-4fdb-9748-30b5557081ef | vx600 | ffa869af-6b86-407a-9a84-8a839b30ef3b |
| c10df5e8-661e-4f52-b56b-a2f83b18a60e | vx500 | 35b3cbfa-9946-4819-9b2a-c889917ad6dc |
| c35653fa-092c-4e17-ab36-17e2466af619 | ext     | b7d4743f-6dff-4526-8f63-643e39000a90 |
+--------------------------------------+-------+--------------------------------------+


创建容器:
(openstack) appcontainer run --name container01 --net network=430e352f-d501-4fdb-9748-30b5557081ef centos ping 8.8.8.8

查看zun-compute,这个网络是从neutron自动同步过来的
[root@compute01 ~]# docker network list
NETWORK ID NAME DRIVER SCOPE
82238add79df 430e352f-d501-4fdb-9748-30b5557081ef kuryr global
78dffbdc2bb3 bridge bridge local
afd55e93f749 host host local
3de4b85f1ecc none null local

查看容器是否创建成功:
[root@compute01 ~]# docker ps
CONTAINER ID          IMAGE                 COMMAND                        CREATED                     STATUS                            PORTS                        NAMES
3a424b5859c0        centos:latest           "ping 8.8.8.8"                      About a minute ago       Up About a minute                                        zun-dfc6176c-f210-4551-849f-33c6b172341b
f6d9875e2817        kuryr/libnetwork       "/opt/kuryr-libnetwo… "       42 hours ago                 Up 8 minutes                                                 kuryr-libnetwork

我测试的容器,容器和vm公用neutron网络

 

接下来开放容器端口:

配置上浮动IP就可以访问容器了

 有兴趣的可以看看Zun 的Capsule 玩法。在实际使用中上面的方式可以略显麻烦。可以考虑Zun Capsule 方式创建

猜你喜欢

转载自www.cnblogs.com/menkeyi/p/9340073.html