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. Java -- 表达式类型的自动提升

    1. 提升规则: a. 所有byte型,short型和char型将被提升到int型. b. 整个算数表达式的数据类型自动提升到与表达式中最高等级操作数同样的类型. 例1: short val = 5; ...

  2. Android GreenDao 中文表名,中文字段DAO生成乱码的问题

    在gradle.properties 文件中加入编码类型 # Project-wide Gradle settings. # IDE (e.g. Android Studio) users: # Gr ...

  3. JS判断2个时间是否在同一周

    function isSameWeek(old, now) { var oneDayTime = 1000 * 60 * 60 * 24; var old_count = parseInt(+old ...

  4. CTreeCtrl控件

    一.HTREEITEM HTREEITEM是树中节点的句柄,也就是一个DWORD值.在树中唯一标识一个节点.它的值对于程序员其实没有什么意义,只是可以通过它找到一个节点,从而取得节点的属性,如 Get ...

  5. torch7 安装中Missing dependencies for nn:moses >= 1错误解决办法

    Torch7.0安装步骤(默认安装路径是在home下): git clone https://github.com/torch/distro.git ~/torch --recursive cd ~/ ...

  6. 在Windows下编译WebRTC

    前言 这篇文章的目的在于为你节省生命中宝贵的10小时(甚至更多),或者浪费你10分钟.作为Google更新频繁的大型跨平台基础库,WebRTC的编译一直被人称为噩梦.如果恰巧你偏要在Windows下编 ...

  7. bzoj 3796: Mushroom追妹纸 AC自动机+后缀自动机+dp

    题目大意: 给定三个字符串s1,s2,s3,求一个字符串w满足: w是s1的子串 w是s2的子串 s3不是w的子串 w的长度应尽可能大 题解: 首先我们可以用AC自动机找出s3在s1,s2中出现的位置 ...

  8. HTML a标签如何设置margin属性(转)

    很多同学发现对DIV有效的许多CSS属性对<a>或<p>标签都无效,好比说 <div style="margin-top:5px;"></ ...

  9. Mathf.Sin正弦

    输入参数是弧度 Mathf.Sin   public static float Sin(float f); Parameters Description Returns the sine of ang ...

  10. windows下,CSV文件Excel打开乱码

    在windows下面,csv文件另存为UTF-8,在excel中打开中文是乱码,如果另存为utf-8 Big + BOM,Excel打开则是正常显示