本次分享主要是讲解OpenStack在Docker化项目上的一些实践、遇到的问题,还有后续会做的事以及遇到的挑战。
OpenStack交付工具
在OpenStack交付工具中,主要有以下一些工具:
红帽RDO和TripleO (puppet);
UbuntuMaas和juju(juju);
SuseCrowbar (Chef);
MirantisFuel(puppet);
HPHellion (ansible);
Rackspace(chef,salt,ansible);
IBMPowerVC (shell);
Devstack(shell)。
配置管理工具
在配置管理交付工具中,Puppet市场占有率很高。Chef最早支持OpenStack的工具,但是现在已经很少看到它的身影了。Ansible发展速度最快,在每个OpenStack项目里都包含Ansible部署的脚本。Salt 可能会东山再起。
企业需求
OpenStack主要是面向企业,所以我们也很清楚它的企业需求。主要需求就是成本、安全、可靠、扩展、灵活。
从2010年OpenStack设立之初,至今已有七年了。2012年到2013年,OpenStack发布了它的Folsom & Grizzly版本。2013年3月份,Docker发布了第一个版本。2014年6月,Kubeneters项目开始启动。2014年9月,Kolla开始成立,成立Kolla项目的初衷就是想让OpenStack跑在容器里,提供生产环境部署的项目,做到100个节点。2015年,Kolla项目进入Big Tent,同年11月,Docker1.9支持kolla-mesos。2016年,Docker 1.10发布。2016年9月,进行了Kolla的M版本发布,2017年3月发布O版本。
Kolla的目标
简化部署和运维。提供生产级别的Docker镜像,提供用于镜像部署的运维工具。在100台物理节点的规模下做到开箱即用。
特性
支持所有服务的高可用;
支持 ceph 做后端存储,glance/nova/cinder/gnocchi;
支持多个 Linux 发行版;
CentOS/ OracleLinux / Ubuntu / RHEL;
同时支持源码安装和二进制包安装;
物理机上只依赖 Docker Engine 和 docker-py;
支持原子升级。
实现
使用 Dockerfile jinja2 构建镜像。
使用镜像依赖,构建速度更快,镜像更小。
使用 Ansible 进行部署。
使用 Ansible 做服务编排,提供 kolla-ansible 脚本,使用 Ansible Inventory 控制服务在哪些机器上启动。同时支持单机部署和多机部署,支持所有组件的高可用,包括 rabbitmq 和 mariadb。容器内非 root 用户运行,保证安全。部分容器需要使用 --privileged 权限,支持 kubernetes。
Commands:
prechecks Do pre-deployment checks for hosts
mariadb_recovery Recover a completely stopped mariadb cluster
bootstrap-servers bootstrap servers with kolla deploy dependencies
destroy DestroyKolla containers, volumes and host configuration
deploy Deployand start all kolla containers
deploy-bifrost Deploy and start bifrost container
deploy-servers Enroll and deploy servers with bifrost
post-deploy Do post deploy on deploy node
pull Pullall images for containers
reconfigure Reconfigure OpenStack service
certificates Generate self-signed certificate for TLS *ForDevelopment Only*
upgrade Upgradesexisting OpenStack Environment
genconfig Generate configuration files for enabledOpenStack services
容器化一切服务,libvirt / openvswitch /neutron,保证一个容器只有一个进程。
模型是使用net host网络模型。
优点
资源隔离,快速部署,容器毫秒级启动,单机部署在5分钟内。运行环境具有不变性。便携性,镜像总大小小于3GB。升级支持原子升级、单服务升级,还支持失败回滚。
缺点
OpenStack本身就是一个平台,依赖于Docker。所以是否好用还是依赖于Docker的成熟度。增加了额外的复杂度。
挑战
日志的收集;配置文件管理;container 编排;集成测试;镜像的灵活性;容器化后 docker 本身的问题;数据持久化。
我今天的分享就到这里,谢谢大家!