1、关闭宿主机firewalld
systemctl disable firewalld
systemctl stop firewalld

2、配置selinux为disable,否则创建的实例网络不通
临时关闭:
[root@kf-kolla kolla]# getenforce
Enforcing
[root@kf-kolla kolla]# setenforce 0
[root@kf-kolla kolla]#getenforce
Permissive

永久关闭:
[root@kf-kolla kolla]# vim /etc/selinux/config
SELINUX=enforcing 改为 SELINUX=disabled
重启服务,执行reboot命令
查看配置后的状态
[root@kf-kolla kolla]# getenforce
Disabled

3、更新安装包
[root@kf-kolla kolla]#yum upgrade
[root@kf-kolla kolla]#yum install epel-release
[root@kf-kolla kolla]#yum install python-devel libffi-devel gcc openssl-devel git python-pip libselinux-python
[root@kf-kolla kolla]#pip install -U pip
[root@kf-kolla kolla]#yum install ansible -y
备注:Ansible >=2.4,我环境上安装的是ansible 2.6.3

4、安装docker 1.12.6版本
1)先增加docker yum源
tee /etc/yum.repos.d/docker.repo << 'EOF'
[dockerrepo]
name=Docker Repository
baseurl=http://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=http://yum.dockerproject.org/gpg
EOF

2)安装docker
yum install docker-engine-1.12.6 docker-engine-selinux-1.12.6 -y
查看docker版本
[root@kf-kolla kolla]# docker --version
Docker version 1.12.6, build 78d1802

3)修改dockerMountFlags等于shard
[root@kolla ~]#mkdir -p /etc/systemd/system/docker.service.d
[root@kolla ~]#tee /etc/systemd/system/docker.service.d/kolla.conf <<-'EOF'
[Service]
MountFlags=shared #配置Docker共享挂载
EOF

4)增加一个阿里云的镜像加速服务.这样镜像下载会更快一些
配置 Docker 加速器
把mirror 的配置添加到 Docker daemon的启动参数中
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://hn3vy3ry.mirror.aliyuncs.com"]
}
EOF

5)启动docker服务
[root@kf-kolla kolla]#systemctl daemon-reload&&systemctl enable docker &&systemctl start docker

5、在kolla4.0.1以后,如果未设置IP路由转发功能转发,否则在编译时会有明确告警提示
永久的修改
vi /etc/sysctl.conf
把net.ipv4.ip_forward = 0
改成net.ipv4.ip_forward = 1
如果此文件中没有这个选项则将其添加上就行。
然后执行命令:
[root@kf-kolla kolla]#sysctl -p

如果临时修改可以使用echo “1”>/proc/sys/net/ipv4/ip_forword

6、下载kolla Ocata版本
1)[root@kf-kolla kolla]#git clone https://github.com/openstack/kolla.git
[root@kf-kolla kolla]#cd kolla/
查看分支
[root@kf-kolla kolla]# git branch -a
* (detached from origin/stable/ocata)
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/stable/newton
remotes/origin/stable/ocata
切换分支到ocata
[root@kf-kolla kolla]# git checkout remotes/origin/stable/ocata

2)安装python依赖包
[root@kf-kolla kolla]# pip install -r requirements.txt -r test-requirements.txt
在安装依赖包的过程中,有些已有的依赖包因为版本太低,不符合要求,导致报错,此时,对该依赖包进行升级以后,重复执行如上命令即可
在实际部署过程中,遇到的升级依赖包问题
通过如下方式强制重新安装
pip install -I PyYAML==3.12
pip install -I ipaddress==1.0.17
pip install -I pyparsing==2.1.9
pip install -I pyinotify==0.9.6
pip install -I pyOpenSSL==17.1.0
pip install -I six==1.10.0
pip install -I dnspython==1.15
pip install -I ipaddress==1.0.17
pip install -I requests==2.18.0
pip install -I netaddr==0.7.19
pip install -I requests==2.14.2
备注:
在升级pyOpenSSL包时,有时会遇到升级失败的问题,此时进行如下操作
先卸载已经安装pyOpenSSL软件包,yum erase pyOpenSSL,该命令会同时把相关的依赖也卸载了
pip install -I pyOpenSSL==17.1.0

3)安装kolla
[root@kf-kolla kolla]# pip install tox
[root@kf-kolla kolla]# tox -e genconfig
复制kolla-build.conf到 /etc/kolla
[root@kolla kolla]# cp -rv etc/kolla /etc/
[root@kf-kolla kolla]# ls etc/kolla/
kolla-build.conf
进入到kolla目录下执行如下命令
[root@kf-kolla kolla]#pip install .

7、制作镜像
1)在/etc/kolla/kolla-build.conf文件中定制需要制作的镜像集合
[root@kf-kolla kolla]# cat /etc/kolla/kolla-build.conf
[DEFAULT]
base = centos
profile = kael
push = false
install_type = source

[profiles]
kael=chrony,cron,kolla-toolbox,fluentd,glance,haproxy,horizon,keepalived,keystone,mariadb,memcached,neutron,nova,openvswitch,rabbitmq

2)对于业务上不需要的repo源进行去掉
由于在制作镜像的过程中会调用/usr/share/kolla/docker/下的Dockerfile.j2文件,所以对base目录下的Dockerfile.j2进行修改
#### BEGIN REPO ENABLEMENT
{% set base_yum_repo_files = [
'elasticsearch.repo',
'grafana.repo',#
'influxdb.repo',
'kibana.yum.repo',
'MariaDB.repo',
'td.repo',
'zookeeper.repo'
] %}

去掉不需要的repo文件
#### BEGIN REPO ENABLEMENT
{% set base_yum_repo_files = [
'elasticsearch.repo',
'MariaDB.repo',
'td.repo',
] %}

对相应的key也进行注释
{% set base_yum_repo_keys = [
'http://yum.mariadb.org/RPM-GPG-KEY-MariaDB',
'/etc/pki/rpm-gpg/RPM-GPG-KEY-Percona ',
'https://packages.elastic.co/GPG-KEY-elasticsearch',
'https://repos.influxdata.com/influxdb.key',
'https://packagecloud.io/gpg.key',
'https://grafanarel.s3.amazonaws.com/RPM-GPG-KEY-grafana',
'https://packages.treasuredata.com/GPG-KEY-td-agent'
] %}
修改完以后
{{ macros.install_packages(base_yum_url_packages | customizable("yum_url_packages")) }}
{% set base_yum_repo_keys = [
'http://yum.mariadb.org/RPM-GPG-KEY-MariaDB',
'/etc/pki/rpm-gpg/RPM-GPG-KEY-Percona ',
'https://packages.elastic.co/GPG-KEY-elasticsearch',

'https://packagecloud.io/gpg.key',

'https://packages.treasuredata.com/GPG-KEY-td-agent'
] %}

注释掉下列内容
#RUN yum-config-manager --enable rhel-7-server-rpms \
# && yum-config-manager --enable rhel-7-server-openstack-7.0-rpms
#R
UN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

3)执行kolla-build命令
kolla-build --profile kael -t source
经过一段时间以后,会buil出镜像
[root@kf-kolla ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kolla/centos-source-nova-spicehtml5proxy 4.0.6 023ad6cd2bae 17 hours ago 1.082 GB
kolla/centos-source-nova-compute 4.0.6 13cc9f973761 18 hours ago 1.284 GB
kolla/centos-source-nova-api 4.0.6 feea4c11917e 18 hours ago 1.092 GB
kolla/centos-source-nova-placement-api 4.0.6 5a3f4393d1be 18 hours ago 1.092 GB
kolla/centos-source-nova-ssh 4.0.6 8c44c1b6ee45 18 hours ago 1.06 GB

8、遇到的一些坑
1)安装完docker以后,一定要确认docker所创建的容器能够连接外网,最好在容器内ping www.baidu.com试下,否则无法进行后续镜像制作
典型的错误如下
kolla.image.build.base:Cannot open: http://repo.percona.com/release/7/RPMS/x86_64/percona-release-0.1-4.noarch.rpm.
2)docker版本与kolla ocata版本不兼容的问题
安装的kolla版本是4.0.6-dev3,dokcer版本是17.06.0-ce,虽然kolla可以成功安装,也没有报各种异常,但是在执行kollla-build的时候报如下错误
self._dc = docker.Client(version='auto', **docker_kwargs)
AttributeError: 'module' object has no attribute "client"

这是由于docker的版本太高,与kolla版本不兼容的原因
3)先安装高版本docker,再替换成低版本docker时,可能有高版本文件残留,导致重启docker服务失败,比如一开始安装的是docker17.06.0-ce,后来由于不兼容的问题docker版本又换成了docker 1.12.6版本,这样在重启docker服务的时候,docker服务一直重启失败。原因是docker17.06.0-ce默认使用的是overlay存储驱动,而1.12.6默认使用的是devicemapper存储驱动,由于overlay存储文件的残留,导致docker进程一直失败,处理方式把overlay文件删除即可,或者删除已有的docker,重新安装

删除docker安装包
$ yum -y remove docker-engine.x86_64
删除镜像/容器等
$ rm -rf /var/lib/docker

4)kolla ocata版本制作的镜像,在部署的时候,一定要使用ocata版本的kolla-ansible代码,否则,在部署的时候,由于不兼容,导致kolla-ansible拉取镜像失败

5)镜像制作出来以后,在推送镜像的时候,带base类的镜像是不需要推送的

6)碰到的奇怪问题,部署的docker版本是1.12.6,kolla的版本是ocata 4.0.6,两者都顺利安装,但是在执行kolla-build命令的时候,报如下错误

self._dc = docker.Client(version='auto', **docker_kwargs)
AttributeError: 'module' object has no attribute "client"

这是由于以前安装高版本docker版本,docker-python包依赖包多导致的,处理方式,先卸载docker-py

[root@kf-kolla kolla]# pip uninstall docker-py

再重新安装kolla代码,解决了

我的环境好的情况下docker包的信息

[root@kf-kolla ~]# pip list |grep docker
docker 3.5.0
docker-compose 1.22.0
docker-py 1.10.6
docker-pycreds 0.3.0
dockerpty 0.4.1

补充知识点:
镜像结构大体分为四层:
base
openstack-base
<service>-base
<service>
1)base
所有的Kolla项目基本上使用了同一个base镜像作为基础,所有的dockerfile模板在kolla/docker中,base镜像中主要定义了镜像中一些基础的内容,如:
命令行提示符格式
指定软件包源
安装基础的软件
所以如果需要定制以上内容就可以去更改base的Dockerfile模板了。

2)openstack-base
如果是Openstack的服务,都会以openstack_base作为基础镜像,当然openstack-base也是在base基础上构建的,内容比较少,
主要是安装了openstack比较通用的基础组件以及软件包,比如oslo*和*client等内容。

3)<service>-base
在openstack-base基础上就会构建各个服务组件的镜像了,以nova为例,nova本身有多个服务,如api、conductor、compute等,类似这样的服务,
Kolla中又以openstack-base为基础做了一个<service>-base镜像,nova为例也就是nova-base镜像作为其他几个服务的基础镜像,主要处理几个服务通用的内容,安装通用的软件等。

4)<service>
最后是服务镜像本身,以<service>-base为基础镜像,进行服务的部署,配置等,并设定启动入口,以及服务必要的依赖

Kolla Ocata版本安装及镜像制作流程的更多相关文章

  1. Docker学习以及镜像制作流程

    一.何为Docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

  2. Docker详细介绍安装与镜像制作和拉取

    一.Docker是什么? 产生背景: 开发和运维之间因为环境不同和导致的矛盾(不同的操作系统.软件环境.应用配置等)DevOps 代码.系统.环境.配置等封装成镜像Image--->运维: 集群 ...

  3. 初涉定制linux系统之——自动化安装Centos系统镜像制作

    最近碰到个需求:要在内网环境安装centos6.5系统并搭建服务,但由于自动部署脚本里安装依赖包使用的是yum安装,而服务器无法连接外网,实施人员也不会本地yum源搭建O__O "….. 本 ...

  4. Kolla O版本部署

    Kolla O版部署和之前的版本还是有些区别的,环境还是all-in-one 基本准备: 关闭Selina和firewalld [root@kolla ~]# cat /etc/redhat-rele ...

  5. 测试环境docker化(一)—基于ndp部署模式的docker基础镜像制作

    本文来自网易云社区 作者:孙婷婷 背景 我所在测试项目组目前的测试环境只有一套,在项目版本迭代过程中,开发或产品偶尔会在测试环境进行数据校验,QA人数在不断增加,各个人员在负责不同模块工作时也会产生脏 ...

  6. Docker系列-(2) 镜像制作与发布

    上篇文章引入了Docker的基本原理和操作,本节文章主要介绍如何制作Docker镜像和发布. 镜像文件结构 Docker镜像的本质是一系列文件的集合,这些文件依次叠加,形成了最后的镜像文件,类似于下图 ...

  7. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  8. c#自动更新+安装程序的制作 (转)

    c#自动更新+安装程序的制作 (转)  http://blog.csdn.net/myhuli120/article/details/6927588 一.自动更新的实现 让客户端实现自动更新,通常做法 ...

  9. openstack私有云布署实践【16.3 Windows Server2008 R2 只有C盘分区镜像制作】

    之所以要只有C盘分区镜像,是因为在创建VM或者调整云主机的硬盘大小时,它能自动扩容.无需人工介入   参考http://www.iyunv.com/thread-45149-1-1.html的灵感   ...

随机推荐

  1. PE.微PE

    1.老毛桃,大白菜(20180227) ZC:我记得以前 "老毛桃"."大白菜" 之前的版本,在安装好系统之后,是没有捆绑软件的,.现在,老毛桃 安装完系统之后 ...

  2. Web Worker浅学

    Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面.它独立于其他脚本,不会影响页面的性能.您 ...

  3. 维度表, 事实表, 数据仓库, BI...

    以前一直对维度表, 事实表, 数据分析, BI等概念等有一些模糊. 这几天的学习终于让这些有了一些眉目了: 维度表示你要对数据进行分析时所用的一个量, 比如你要分析产品销售情况, 你可以选择按类别来进 ...

  4. fatal error C1071: unexpected end of file found in comment

    1.错误 #include<iostream> using namespace std; int main() { ..... return 0; } //如果把注释放到这里了,那么提交就 ...

  5. 将double型小数点后面多余的零去掉

    /** 函数功能:将数值小数点后面多余的零清空.* 参数描述:*     [in] aSource - 输入的源数值:*     [out] aDestination - 输出截取后的数值*     ...

  6. Django 文件下载功能

    def file_download(request): con= MySQLdb.connect(host='192.168.xxx.xxx',user='root',passwd='xxxx',db ...

  7. Linux-awk command

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  8. hdu-5635 LCP Array

    LCP Array Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  9. Java中的泛型、枚举和注解

    1.泛型: 一.为什么要有泛型(Generic)?1.解决元素存储的安全性问题任何类型都可以添加到集合中:类型不安全2.解决获取数据元素时,需要类型强转的问题读取出来的对象需要强转:繁琐可能有Clas ...

  10. bzoj 2969: 矩形粉刷 概率期望

    题目: 为了庆祝新的一年到来,小M决定要粉刷一个大木板.大木板实际上是一个W*H的方阵.小M得到了一个神奇的工具,这个工具只需要指定方阵中两个格子,就可以把这两格子为对角的,平行于木板边界的一个子矩形 ...