Kolla

简介

Kolla是OpenStack Big Tent Governace下的一个项目,项目的目标是

To provide production-ready containers and deployment tools for operating OpenStack clouds.

Kolla使用Docker容器和Anisble playbooks来实现这个目标。Kolla是开箱即用的,即使你是个新手也可以很快的使用kolla快速部署你的openstack集群。Kolla也允许你根据实际的需求来定制化的部署。

kolla目前已经可以部署以下openstack项目

可以部署的基础组件包括

Kolla体验

可以参照kolla官方文档https://github.com/openstack/kolla/blob/master/doc/quickstart.rst 进行部署。

Kolla解决的问题

可配置的灵活架构

可以看下默认的多节点架构

默认我们会把haproxy放到network节点,如果我想把haproxy放到一个单独的节点,那么我只需要到这样修改

配置文件管理

每个openstack服务都运行在一个容器中,那kolla是怎么管理openstack的配置的呢? 我们拿nova-compute的配置管理来举例

首先kolla会使用ansible为nova-compute生成一份配置文件放在/etc/kolla/nova-compute/目录下。

大家可能会注意到kolla使用merge_configs来完成配置文件的合并,那么merge_configs是干什么的呢?顾名思义,merge_configs就是把多个配置文件合成一个,kolla为什么要这样做呢? openstack配置选项非常多但是真正需要管理的则很少,对这部分选项kolla使用模版的方式管理,同时由于merge_configs的使用,使得用户可以非常方便的添加自己的定制化选项。比如你部署kolla在一台虚拟机上,你必须使用QEMU hypervisor来替代KVM hypervisor。那么你可以在/etc/kolla/config/nova/nova-compute.conf中添加以下配置

merge_configs的代码在 ansible/action_plugins/merge_configs.py

启动容器时/etc/kolla以docker卷的形式挂载到/var/lib/kolla/config_files目录下

容器启动脚本会根据nova-compute.json来将配置文件拷贝到/etc并设置合适的权限

关于kolla配置文件的管理还可以参考这里

nova-fake测试控制平台性能

这里

compute节点升级问题

由于所有服务都运行在容器中,那么是不是我升级compute节点时,该节点的虚机都会进入关机状态呢,kolla使用super-privilege的容器来解决了这个问题具体可以参考kolla PTL的文章https://sdake.io/2015/01/28/an-atomic-upgrade-process-for-openstack-compute-nodes/

平滑升级

kolla为升级也编写了upgrade.yaml这个playbook,我们还是拿nova-compute的升级为例

使用

查看log

进入容器调试

root权限问题

出于安全考虑很多kolla服务都是运行在非root下,进入容器后拿不到root权限,我们还以nova_compute为例,可以修改/etc/kolla/nova_compute/config.json改为以下

然后在/etc/kolla/nova-compute添加nova.sudo

重启容器后即可sudo到root用户下调试

定制化build镜像

参考 https://github.com/openstack/kolla/blob/master/doc/image-building.rst

总结

优点

  • 配置管理灵活方便

  • 可以平滑升级

  • 部署简单

  • 环境隔离

  • 多种安装源

  • 支持的部署的服务多

缺点

  • 对新手的友好程度

  • debug不方便

Last updated

Was this helpful?