返回 登录
0

OpenStack Kolla探秘

一.Kolla简介

kolla项目起源于TripleO项目,聚焦于使用docker容器部署OpenStack服务。该项目由Cisco于2014年9月提出,是OpenStack 社区Big Tent开发模式下的孵化项目。

在国内一些互联网资料上,常看到关于kolla是TripleO项目的一部分这样的描述,其实是不准确的。真实的是,Kolla项目起源于Tripleo项目,时至今日,与它没有任何关系(虽然它们的目标都是做自动化部署,但走的道路却不同)。比之于Tripleo和其他部署工具,Kolla走的是docker容器部署路线。

当前Kolla项目在Kollaglue repo提供了以下服务的docker镜像。
# docker search kollaglue

代码目录结构

图片描述

Kolla的优势和使用场景,体现在如下几个方面:

  • 原子性的升级或者回退OpenStack部署;
  • 基于组件升级OpenStack;
  • 基于组件回退OpenStack;

这里,我们予以拆分来理解:

Kolla的最终目标是为OpenStack的每一个服务都创建一个对应的Docker Image,通过Docker Image将升级的粒度减小到Service级别,从而使升级时,对OpenStack影响能达到最小,并且一旦升级失败,也很容易回滚。升级只需要三步:Pull新版本的容器镜像,停止老版本的容器服务,然后启动新版本容器。回滚也不需要重新安装包了,直接启动老版本容器服务就行,非常方便。

Kolla是通过Docker Compose来部署OpenStack集群的,现在主要是针对裸机部署的,所以在部署Docker Container时,默认的网络配置都是Host模式。

首先,只需要通过一个命令就可以把管理节点部署完成,这个命令是调用Docker Compose来部署OpenStack的所有服务,然后我们可以在每一个计算节点上通过Docker Compose安装计算节点需要的服务,就能部署一个OpenStack集群。因为Kolla的Docker Image粒度很小,它针对每个OpenStack服务都有特定的Image,所以我们也可以通过Docker Run来操作某个具体的OpenStack服务。

要想对OpenStack Big Tent开发模式下的Kolla项目(孵化中)有一个整体性的认识,其GitHub代码库上的README.rst文件值得一读。

Kolla使用到的技术如下:

  • Docker
  • Ansible
  • Python
  • docker-py
  • Jinja2

Kolla 目前使用到的部署工具包括docker和ansible,使用 heat 来编排 Kolla 集群。由此可见,要玩转Kolla,看来得同时学会Docker、Ansible和Heat等、理解OpenStack部署的架构等等,难度不小。

二. 如何与OpenStack社区沟通

  • 每周Kolla小组会议:Wednesdays at 16:30 UTC #openstack-meeting-4.
  • IRC:#kolla
  • Email:openstack-dev@lists.openstack.org
  • PTL: Steven Dake(Cisco)

具体有关Kolla的信息,可以阅读这里:
Wiki:https://wiki.openstack.org/wiki/Meetings/Kolla
governance :http://governance.openstack.org/reference/projects/kolla.html

社区Commit参与情况:

图片描述

三.源码浅析

从代码库中的README.rst文件中,我们可以得知每个目录分别代表的是什么含义。

1.源码目录概要:

  • ansible – Contains Ansible playbooks to deploy Kolla in Docker containers.
  • demos – Contains a few demos to use with Kolla.
  • dev/heat – Contains an OpenStack-Heat based development environment.
  • dev/vagrant – Contains a vagrant VirtualBox/Libvirt based development environment.
  • doc – Contains documentation.
  • etc – Contains a reference etc directory structure which requires configuration of a small number of configuration variables to achieve a working All-in-One (AIO) deployment.
  • docker – Contains jinja2 templates for the docker build system.
  • tools – Contains tools for interacting with Kolla.
  • specs – Contains the Kolla communities key arguments about architectural shifts in the code base.
  • tests – Contains functional testing tools.

2.setup.cfg入口文件

还是老生常谈,当我阅读某一个新项目的源码时,我总是会首先去看它的setup.cfg文件。因为它是一个项目的入口文件。

选取部分如下所示:

[files]
packages =      //包名
kolla
data_files =     //pbr指定的数据文件
share/kolla/ansible = ansible/*
share/kolla/devenv = devenv/*
share/kolla/docker = docker/*
share/kolla/doc = doc/*
share/kolla/etc_examples = etc/*
share/kolla/vagrant = vagrant/*
share/kolla = tools/init-runonce
share/kolla = tools/openrc-example
share/kolla = setup.cfg

scripts =
tools/kolla-ansible  //该脚本通过ansible与koll进行交互。使用命令为:ansible-playbook -i $INVENTORY $EXTRA_OPTS 

$PLAYBOOK
[entry_points]
console_scripts =
kolla-build = kolla.cmd.build:main   //kolla程序的main主函数
oslo.config.opts =                  //oslo.config通用库用于解析命令行和配置文件中的配置选项
kolla = kolla.opts:list_opts    //字符串列表类型

[global]
setup-hooks =
pbr.hooks.setup_hook

4.Kolla架构

  • Kolla项目的HA架构,如下图所示,大家应该一看就明白吧。是的,正如其他OpenStack项目一样,对于MySQL的HA方案,默认采用的均是Galera。
    源码路径:specs/ha.svg

图片描述

  • Kolla节点的网络架构,如下图所示。Kolla节点有2张网卡(eth0 IP由DHCP分配,用于内网使用;eth1 IP手动配置,用于外网使用,2个网段均和Neutron Router交互)。源码路径:doc/kollanet.png

图片描述
下一篇中,我们将讲解有关Kolla的部署和Ansible的Web管理等。

作者简介:徐超,OpenStack工程师,个人倾向于研究CI-CT-CD-CD。

相关文章:

责编/魏伟,欢迎加入CSDN OpenStack专家团,和技术大牛交流技术和经验,搜索微信号“k15751091376”,备注公司+姓名。寻求报道和投稿请联系邮箱weiwei@csdn.net)

扫描CSDN云计算官方微信二维码,获取更多最新技术实战资讯:

图片描述

评论