OpenStack Project-Zun(容器管理)

Zun 容器服务简介

Zun 允许用户无需管理服务器或集群即可快速启动和运行容器。它通过与 Neutron 、Cinder、Keystone 和其他核心 OpenStack 服务集成,无缝地将先进的企业网络、存储和身份验证功能添加到容器中。
Zun目标在于解决 Nova Docker driver方案存在的问题,独立于 Nova 之外实现 Docker 部署调度框架,自身实现与 Glance、Neutron、Cinder等组件的集成,但并不实现对容器编排引擎(Container Orchestration Engines COE)的部署调度。Nova-docker通过Nova API访问容器,而Zun不受Nova API的限制。
Zun和Magnum的差异在于Zun目标是提供管理容器的API,而Magnum提供部署和管理容器编排引擎(COE)的API。Zun将容器作为Openstack管理的资源,为用户提供了创建和管理这些容器的接口。被Zun管理的容器和其他Openstack资源能够良好的集成在一起,例如Neutron网络和Cinder卷。用户使用统一的、简化的API接口来管理容器,而不需要关心不同容器技术的差异。
Zun不准备实现COE提供的很多先进的功能(例如容器保活、负载均衡等),而是提供基本的容器操作(CRUD),并和Openstack紧密集成。

使用 devstack 安装 Zun

local.conf 添加如下内容,运行 ./stack.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ vim local.conf

……
#Enable Zun plugin
enable_plugin devstack-plugin-container http://git.trystack.cn/openstack/devstack-plugin-container  #安装docker,如果已经安装docker,可以忽略
enable_plugin zun http://git.trystack.cn/openstack/zun
enable_plugin zun-ui http://git.trystack.cn/openstack/zun-ui
enable_plugin kuryr-libnetwork http://git.trystack.cn/openstack/kuryr-libnetwork
KURYR_CAPABILITY_SCOPE=local          #单节点安装使用local,多节点要改为global
KURYR_ETCD_PORT=2379

Zun 测试

1. Zun-ui 预览

创建 Container 的页面和创建虚拟机的页面类似。可以选择来自 DockerHub 或者 Glance 的镜像,可以选择网络、端口、安全组等,支持容器特有的一些功能如限制cpu和内存的使用 image image

2. 创建容器

考虑到 DockerHub 的龟速,先把镜像拉取到本地

1
# docker pull cirros

使用命令行创建一个 cirros 的容器

1
$ openstack appcontainer run --name cirros --net network=$NET_ID cirros

3. 查看容器

1
2
3
4
5
6
# openstack appcontainer list
+--------------------------------------+--------+--------+---------+------------+-----------+-------+
| uuid                                 | name   | image  | status  | task_state | addresses | ports |
+--------------------------------------+--------+--------+---------+------------+-----------+-------+
| 61dfa221-826b-496c-963a-e5222ca054a3 | cirros | cirros | Running | None       | 10.0.0.4  | []    |
+--------------------------------------+--------+--------+---------+------------+-----------+-------+

4. 进入容器查看网络连接

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# openstack appcontainer exec --interactive cirros /bin/sh

# openstack appcontainer exec --interactive cirros /bin/sh
connected to container "cirros"
type ~. to disconnect
/ # ping 10.0.0.5                 # 10.0.0.5 为同一个网络的虚拟机,非容器
PING 10.0.0.5 (10.0.0.5): 56 data bytes
64 bytes from 10.0.0.5: seq=0 ttl=64 time=5.934 ms
64 bytes from 10.0.0.5: seq=1 ttl=64 time=0.969 ms
64 bytes from 10.0.0.5: seq=2 ttl=64 time=0.855 ms
64 bytes from 10.0.0.5: seq=3 ttl=64 time=0.791 ms
^C
--- 10.0.0.5 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.791/2.137/5.934 ms

5. dashboard上面的容器详情

在 dashboard 上面也可以查看容器的详细信息和 log 以及控制台,查看控制台需要容器以 interactive 模式启动 image 对容器的一些基本操作:更新、停止、重启、暂停、执行命令、删除等操作 image image

总结

Zun 的操作基本和 docker 的操作一致,使用起来和原生docker容器没有区别。但是现在可以和 Openstack 的资源良好的结合在一起,统一管理,提高的 OpenStack容器管理的灵活度,还是很令人期待的。

遇到问题

1. zun-compute 警告信息

查看 devstack@zun-compute.service 服务有如下警告:

1
2
3
4
5
$ journalctl -f --unit devstack@zun-compute.service

Mar 07 13:51:28 queens.domian.tld zun-compute[992]: 2018-03-07 13:51:28.172 DEBUG docker.auth [-] Trying paths: ['/opt/stack/.docker/config.json', '/opt/stack/.dockercfg'] from (pid=992) find_config_file /usr/lib/python2.7/site-packages/docker/auth.py:234
Mar 07 13:51:28 queens.domian.tld zun-compute[992]: 2018-03-07 13:51:28.173 DEBUG docker.auth [-] No config file found from (pid=992) find_config_file /usr/lib/python2.7/site-packages/docker/auth.py:241
Mar 07 13:51:28 queens.domian.tld zun-compute[992]: 2018-03-07 13:51:28.208 DEBUG zun.compute.manager [-] Complete syncing container states. from (pid=992) sync_container_state /opt/stack/zun/zun/compute/manager.py:951

.docker/config.json 和 .dockercfg 是 docker login 成功后创建的文件。因为 Zun 可以直接从 DockerHub 拉取镜像,我们需要提供认证信息。

1
2
3
4
5
$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: lovelonger           #这里比较坑,只能写用户名,写邮箱一直登录失败
Password: 
Login Succeeded

2. 端口映射的问题

暂时不知道创建容器的时候怎么添加端口映射,如果容器创建在私有网络上面,上面的服务外部无法访问。

Nickname
Email
Website
0/500
  • OωO
  • |´・ω・)ノ
  • ヾ(≧∇≦*)ゝ
  • (☆ω☆)
  • (╯‵□′)╯︵┴─┴
  •  ̄﹃ ̄
  • (/ω\)
  • ∠( ᐛ 」∠)_
  • (๑•̀ㅁ•́ฅ)
  • →_→
  • ୧(๑•̀⌄•́๑)૭
  • ٩(ˊᗜˋ*)و
  • (ノ°ο°)ノ
  • (´இ皿இ`)
  • ⌇●﹏●⌇
  • (ฅ´ω`ฅ)
  • (╯°A°)╯︵○○○
  • φ( ̄∇ ̄o)
  • ヾ(´・ ・`。)ノ"
  • ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
  • (ó﹏ò。)
  • Σ(っ °Д °;)っ
  • ( ,,´・ω・)ノ"(´っω・`。)
  • ╮(╯▽╰)╭
  • o(*////▽////*)q
  • >﹏<
  • ( ๑´•ω•) "(ㆆᴗㆆ)
  • 😂
  • 😀
  • 😅
  • 😊
  • 🙂
  • 🙃
  • 😌
  • 😍
  • 😘
  • 😜
  • 😝
  • 😏
  • 😒
  • 🙄
  • 😳
  • 😡
  • 😔
  • 😫
  • 😱
  • 😭
  • 💩
  • 👻
  • 🙌
  • 🖕
  • 👍
  • 👫
  • 👬
  • 👭
  • 🌚
  • 🌝
  • 🙈
  • 💊
  • 😶
  • 🙏
  • 🍦
  • 🍉
  • 😣
  • 颜文字
  • Emoji
  • Bilibili
6 comments
Anonymous

老师您好 zun服务提示未授权 无法使用命令

 河南
 Windows 10
 Chrome 88.0.4324.150
Anonymous

我搭建了两次:
第一次:用的两台虚拟机搭建,目前还没什么问题,是从本地镜像glance拉取创建
第二次:我在openstack集群上搭建,但是创建的时候选择glance,它还是会从网上拉取,这是哪里的问题!!
请教!!!

 macOS Mojave
 Chrome 72.0.3626.119
admin

@Anonymous 和docker的命令一样

 Windows 10
 Firefox 60.0
Anonymous

谭老师你好,openstack queens版本的zun项目中,如何实现容器的镜像本地上传和拉取??感谢指点

 Windows 7
 Chrome 67.0.3396.87
admin

@Anonymous 是的 Queens版本

 Windows 10
 Firefox 60.0
Anonymous

你好!请问openstack是什么版本呢?queens吗?

 Linux
 Firefox 60.0
一个默默无闻的工程师的日常
Built with Hugo
主题 StackJimmy 设计