zoukankan      html  css  js  c++  java
  • Kolla:Docker+OpenStack

    来自: http://1.chaoxu.sinaapp.com/archives/3665

    一.Kolla项目简介

    kolla项目是TripleO项目的一部分,聚焦于使用docker容器部署openstack服务。 项目于2014年9月开始,是openstack的孵化项目。

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

    $ sudo docker search kollaglue

    代码目录结构

    docker 
    创建docker image
    k8s 
    创建kubenetes的pods和service配置文件
    tools 
    与Kolla交互的各种工具
    devenv 
    管理Kolla开发环境的一些工具。

    当前的问题

    当前升级和降级openstack主要有两种方式,基于image与基于package。 

    基于image的方式,更新是原子的。 

    基于package的更新方式通常不是原子的,升级过程中存在很多导致失败的原因,可能存在部分package更新失败的可能。

    使用场景

    原子性的升级或者回退openstack部署。

    基于组件升级openstack。

    基于组件回退openstack。

    安全与其他

    某些容器可能需要privileged,某些可能需要host相同的namespace。 

    安全加强可以使用Selinux或者AppArmor。

    Kolla的主要功能是使用Docker容器快速部署升级OpenStack服务。

    二.Kolla理解

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

    Kolla是通过Docker Compose来部署OpenStack集群的,现在主要是针对裸机部署的,所以在部署Docker Container时,默认的网络配置都是Host模式。所以Kolla的好处就非常明显了,将OpenStack升级的粒度细化到了Service级 别,升级失败时,可以很容易回滚。

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

    图1是一个OpenStack compute的一个例子。

    图2 OpenStack compute的一个例子

    这是一个简单的YML文件,我们可以通过Docker compose使用这些YML文件部署OpenStack节点,可以看到这个YML文件包含Compute Data Image、Libvirt Image、Network Image、Nova API Image和Compute Image等。第一个Compute Data主要是为其他Container提供存储服务的,可以看到Libvirt和Novacompute的Container的存储都是从 Compute Data来的,因为它们都有一个字段voluemes_from指向Compute Data这个Container。

    如何选择?

    OpenStack和Docker相关的项目这么多,该怎么去选择呢?简单说明如下。

    如果用户只是想将以前的VM Workload迁移到Docker Container,那么它可以使用Nova Docker Driver,一个很典型的例子是Sahara通过Heat调用Nova Docker Driver来创建Hadoop集群。

    如果用户想使用Docker的一些高级功能来部署一个小规模集群,那就可以考虑Heat Docker Driver。

    如果用户想通过OpenStack集成现有的一些Docker集群管理工具像K8S、Swarm来管理大规模的Docker集群,建议使用Magnum。另外因为Magnum也是基于Heat做的,所以默认也支持混合云的功能。

    Murano和Docker的集成,主要体现在它提供了一个K8S的应用,用户可以通过这个K8S应用来管理Docker集群。但Murano和Docker的焦点不一样,Magnum主要提供容器服务,Murano主要提供应用目录服务。

    最后的Kolla,主要是简化OpenStack的安装部署和升级的。

    本节转载自:

    http://www.csdn.net/article/2015-05-20/2824734

    http://blog.csdn.net/halcyonbaby/article/details/44035653

  • 相关阅读:
    mysql常用方法案例
    springboot整合mybatis
    mysql自定义函数统计订单状态:GET_ORDER_STATUS()
    mysql计算时间差-本例为计算分钟差然后/60计算小时保留一位小数,由于直接得小时只会取整
    mysql字段值为null时排序问题
    对象与内存(一)
    java基础提升(关于数组)
    项目的部署
    myeclipse中ssm的搭建
    ui自动化笔记 selenium_webdriver,ui自动化框架(web)
  • 原文地址:https://www.cnblogs.com/kevinX/p/5458225.html
Copyright © 2011-2022 走看看