kolla项目起源于TripleO项目,聚焦于使用Docker容器部署OpenStack服务。该项目由Cisco于2014年9月提出,是OpenStack 社区Big Tent开发模式下的孵化项目。本文是接着上一篇《OpenStack Kolla探秘》,我们继续进行下一步探秘。
OpenStack Kolla项目是一个支持Openstack服务以容器的方式部署,借助ansible部署工具可以简单的扩展到多个节点。同时,又借助于使用 heat 来编排 Kolla 集群。
同时,我们也可以把 Kolla 镜像注册到一个内部的 Hub,并通过 Kubernetes(k8s)等工具来管理。
目前,Kolla提供的镜像支持部署如下OpenStack项目:
以及这些基础设施组件:
• Ceph implementation for Cinder, Glance and Nova
• Openvswitch and Linuxbridge backends for Neutron
• MongoDB as a database backend for Ceilometer and Gnocchi
• RabbitMQ as a messaging backend for communication between services.
• HAProxy and Keepalived for high availability of services and their endpoints.
• MariaDB and Galera for highly available MySQL databases
体验Kolla项目的第一步是搭建一个简单的开发环境,搭建all-in-one环境参考官方的doc如下:
http://docs.openstack.org/developer/kolla/quickstart.html
1.部署kolla的方式不限以下几种
这里,我们直接在OS上部署 Kolla 里面的docker镜像来搭建一个OpenStack开发测试环境,按照官网文档的系统配置如下(我使用的是一台虚拟机):
2.安装
备注:最好,请在科学上网的环境下进行如下操作,你懂的。
安装epel源
# yum install -y epel-release
安装pip
# yum install -y python-pip
下载kolla源码
# git clone https://git.openstack.org/openstack/kolla
安装kolla
# pip install kolla/
安装相关依赖包
# yum install -y python-devel libffi-devel openssl-devel gcc
安装ansible,版本不要超过2.0.0
# pip install -U ansible==1.9.4
安装docker
# curl -sSL https://get.docker.io | bash
安装tox
# pip install -U tox
安装openstackclient
# pip install -U python-openstackclient
生成kolla-build.conf
# tox -egenconfig
拷贝配置文件到/etc目录下
# cp -rv etc/kolla /etc/
下面,开始构建docker image和ansible执行部署。
构建docker images(时间会较长)
# kolla-build --base centos --type source
Build 完成之后,查看所有已经 build 好的镜像。
# docker images
修改全局配置文件
# vim /etc/kolla/globals.yml
kolla_install_type: "source"
kolla_internal_address: "10.10.10.213"
network_interface: "eth0"
neutron_external_interface: "eth1"
一键安装
# kolla-ansible deploy
OpenStack部署成功后,在部署节点运行下面的命令创建一个openrc文件/etc/ kolla/admin-openrc.sh。或查看tools/openrc-example。
# kolla-ansible post-deploy
之后,创建一个openrc文件,用于初始化一个glance image和neutron环境。
# source /etc/kolla/admin-openrc.sh
# kolla/tools/init-runonce
如果是multinode,还需要依赖docker-registry。如何构建docker私有仓库,可以参考如下链接:
http://docs.openstack.org/developer/kolla/quickstart.html
http://dockerpool.com/static/books/docker_practice/repository/local_repo.html
1.OpenStack Docker Images
本地Build Image,因为远程的pull image 速度太慢 而且 Kolla 社区不是每个commit修改都把image build一遍,所以本地build image是开发最好的选择。推荐使用source方式build。
Docker images:
https://hub.docker.com/u/kollaglue/
image building guide:
http://docs.openstack.org/developer/kolla/image-building.html
Docker Hub:
https://docs.docker.com/engine/userguide/containers/dockerimages/
2. 相关技巧
3.查询OpenStack docker image
使用docker ps 可以查看对应openstack 所有服务的容器。当前Kolla项目在Kollaglue repo提供了以下服务的docker镜像。
# docker search kollaglue
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
kollaglue/centos-rdo-keystone 2
kollaglue/centos-rdo-base 1
kollaglue/fedora-rdo-nova-compute 0
kollaglue/fedora-rdo-nova-api 0
kollaglue/centos-rdo-rabbitmq 0
kollaglue/centos-rdo-horizon 0
kollaglue/fedora-rdo-mariadb 0
kollaglue/fedora-rdo-nova-network 0
kollaglue/fedora-rdo-nova-conductor 0
kollaglue/centos-rdo-nova-base 0
kollaglue/fedora-rdo-base 0
kollaglue/fedora-rdo-nova-scheduler 0
kollaglue/centos-rdo-nova-network 0
kollaglue/centos-rdo-nova-compute 0
kollaglue/fedora-rdo-zaqar 0
kollaglue/centos-rdo-mariadb-app 0
kollaglue/fedora-rdo-glance-registry 0
kollaglue/fedora-rdo-nova-base 0
kollaglue/fedora-rdo-glance-api 0
kollaglue/centos-rdo-glance-base 0
kollaglue/fedora-rdo-nova-libvirt 0
kollaglue/centos-rdo-neutron-base 0
kollaglue/fedora-rdo-rabbitmq 0
kollaglue/centos-rdo-nova-libvirt 0
kollaglue/fedora-rdo-keystone 0
4.Kolla代码目录结构
5. Debugging Kolla
可以通过执行的部署目标来确定容器的状态:
# docker ps –a
通过日志来进行检查:
# docker exec -it heka bash
所有的容器都可以从这个目录中获取服务日志:/var/log/kolla/SERVICE_NAME。Docker使用heka来展现收集到的日志信息。
如果需要输出日志,请运行:
# docker logs
请注意,大多数容器不会stdout,上面的命令将不会提供信息。
6.参考资源
Kolla wiKI:https://wiki.openstack.org/wiki/Kolla
Docs:http://docs.openstack.org/developer/kolla/
作者简介:
徐超。专注于工作和研究基于OpenStack产品研发测试过程的持续集成、持续测试和持续部署/交付领域,曾参与创建国内一OpenStack服务提供商从0到1+的测试体系。