Kolla 概述:

Kolla是OpenStack下用于自动化部署的一个项目,它基于docker和ansible来实现,其中docker主要负责镜像制作和容器管理,ansible主要负责环境的部署和管理。Kolla实际上分为两部分:Kolla部分提供了生产环境级别的镜像,涵盖了OpenStack用到的各个服务;Kolla-ansible部分提供了自动化的部署。最开始这两部分是在一个项目中的(即Kolla),OpenStack从O开头的版本开始被独立开来,这才有了用于构建所有服务镜像的Kolla项目,以及用于执行自动化部署的Kolla-ansible。

环境配置:

服务器最低配置:

2 个网络接口
8GB 主内存
40GB 磁盘空间

Centos 8.2

准备工作:

安装下基本的系统工具;

yum -y install net-tools vim wget bash-completion lrzsz

关闭Slinux和防火墙

setenforce 0 
vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld

修改hosts

vim /etc/hosts
192.168.6.35 node1

网卡配置信息

ip地址

网卡

网络类型

说明

192.168.6.35

eno16780032

桥接(bridge)

Openstack内部管理网络(management network),Horizon web 界面访问;

无(不需要配置地址,需要开启网卡)

eno33559296

桥接(bridge)

外部网络(external network),让neutron(Openstack中的网络组件)的br-ex绑定使用,Openstack中的虚拟机是通过该网卡与外网通信。

配置阿里云源

yum clean all
yum makecache
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all

安装依赖:

yum -y install python-devel libffi-devel gcc openssl-devel git python-pip
配置pip镜像源
 mkdir .pip
 tee .pip/pip.conf << EOF 
> [global]
> index-url=http://mirrors.aliyun.com/pypi/simple/
> [install]
> trusted-host=mirrors.aliyun.com
> EOF 
 pip install -U pip #升级pip到最新版本  如果报错

部署kolla-ansible
1)部署 

pip install ansible    #部署ansible  注意:Ansible要大于2.6版本
pip install kolla-ansible  #使用pip安装kolla-ansible

2)复制kolla-ansible的相关配置文件

cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
 cp /usr/share/kolla-ansible/ansible/inventory/* /etc/kolla/
 [root@node1 ~]# ls /etc/kolla/
 all-in-one  globals.yml  multinode  passwords.yml

文件说明:all-in-one是安装单节点OpenStack的ansible自动安装配置文件;multinode是安装多节点OpenStack的ansible自动安装配置文件;globals.yml是OpenStack部署的自定义配置文件;passwords.yml是OpenStack中各个服务的密码文件。

2)编辑kolla-ansible的配置文件,用于自定义安装OpenStack,生成OpenStack各个服务的密码文件,并修改Web页面登录密码。

kolla-genpwd
vim /etc/kolla/passwords.yml
//修改第165行,这是登录Dashboard(web界面控制台)的密码。正常情况下也不能太简单,可以截取一段自动生成的密码
keystone_admin_password: hsh.2019#

编辑/etc/kolla/global.yml自定义OpenStack中的部署事项

vim /etc/kolla/globals.yml
//第14行和第15行,选择下载的基础镜像,5选1
# Valid options are ['centos', 'debian', 'oraclelinux', 'rhel', 'ubuntu']
kolla_base_distro: "centos"
 
//第17行和第18行,选择的安装方法,2选1。binary二进制安装,source源码安装
# Valid options are [ binary, source ]
kolla_install_type: "source"
 
//第20行和第21行,选择OpenStack的版本标签,详细请看:https://releases.openstack.org/
# Valid option is Docker repository tag
openstack_release: "stein"  //注意版本必须小写,后期下载的OpenStack相关的docker镜像标签也为stein。我是train版本失败,才换成stein
 
//第23行和第24行,存放配置文件的位置
# Location of configuration overrides
#node_custom_config: "/etc/kolla/config"  //默认存放地址
 
//第31行,OpenStack内部管理网络地址,通过该IP访问OpenStack Web页面进行管理。如果启用了高可用,需要设置为VIP(漂移IP)
kolla_internal_vip_address: "192.168.128.240"
 
//第87行,OpenStack内部管理网络地址的网卡接口
network_interface: "ens32"
 
//第105行,OpenStack外部(或公共)网络的网卡接口,可以是vlan模式或flat模式。
//此网卡应该在没有IP地址的情况下处于活动,如果不是,那么OpenStack云平台中的云主机实例将无法访问外部网络。(存在IP时br-ex桥接就不成功)
neutron_external_interface: "ens33"
 
//第190行,关闭高可用
enable_haproxy: "no"
 
//第213行,关闭cinder(块存储)
#enable_cinder: "no"
 
//第443行和第444行,指定nova-compute守护进程使用的虚拟化技术。(kvm好像有点问题,大家可以试试,看看你们能不能过nova下载)
//nova-compute是一个非常重要的守护进程,负责创建和终止虚拟机实例,即管理虚拟机实例的生命周期
# Valid options are [ qemu, kvm, vmware, xenapi ]
nova_compute_virt_type: "qemu"        #我选择的是KVM

四、基于kolla-ansible安装OpenStack私有云

配置 /etc/kolla/all-in-one文件

//修改第3行到第19行,将“localhost       ansible_connection=local”改为“node1”

//可以使用替换命令":%s/localhost       ansible_connection=local/node1/g"

[root@node1 ~]# head -20 /etc/kolla/all-in-one 
# These initial groups are the only groups required to be modified. The
# additional groups are for more control of the environment.
[control]
node1
[network]
node1
[compute]
node1
[storage]
node1
[monitoring]
node1
[deployment]
node1
# You can explicitly specify which hosts run each project by updating the
# groups in the sections below. Common services are grouped together.
[chrony-server:children]
haproxy

[chrony:children]

开始部署OpenStack。注意:我在使用阿里云的epel源时,在安装bootstrap-server时会卡在TASK [baremetal : Install yum packages]这一步。而系统安装的epel源只等待了5分钟左右。

//安装bootstrap-servers部署OpenStack所需的依赖包。该包由kolla-ansible提供,包含docker。

kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers


 //对当前主机进行预部署(检测),直接看最后的统计即可。如果检测报错,可以查看前面的TASK:[precheck ...]部分,可以快速定位到错误


 kolla-ansible -i /etc/kolla/all-in-one prechecks


 //查看docker volume卷挂载方式


 vim /etc/systemd/system/docker.service.d/kolla.conf
[Service]
MountFlags=shared  //添加该行,后期docker宿主机新增分区时,docker服务不用重启,方便主机增加磁盘。
ExecStart=
ExecStart=/usr/bin/dockerd --log-opt max-file=5 --log-opt max-size=50m
//指定docker加速器,阿里云免费的申请一下即可
tee /etc/docker/daemon.json << 'EOF'
{
  "registry-mirrors": ["https://fxa4g5lx.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
kolla-ansible -i /etc/kolla/all-in-one pull   #拉去镜像 需要2-3个小时;
//安装bootstrap-servers部署OpenStack所需的依赖包。该包由kolla-ansible提供,包含docker。
 kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers
 //对当前主机进行预部署(检测),直接看最后的统计即可。如果检测报错,可以查看前面的TASK:[precheck ...]部分,可以快速定位到错误
 kolla-ansible -i /etc/kolla/all-in-one prechecks
 //查看docker volume卷挂载方式
 vim /etc/systemd/system/docker.service.d/kolla.conf
[Service]
MountFlags=shared  //添加该行,后期docker宿主机新增分区时,docker服务不用重启,方便主机增加磁盘。
ExecStart=
ExecStart=/usr/bin/dockerd --log-opt max-file=5 --log-opt max-size=50m
//指定docker加速器,阿里云免费的申请一下即可
tee /etc/docker/daemon.json << 'EOF'
{
  "registry-mirrors": ["https://fxa4g5lx.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
kolla-ansible -i /etc/kolla/all-in-one pull   #拉去镜像 需要2-3个小时;
[root@node1 ~]# docker image list
REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
kolla/centos-source-nova-compute                stein               29a1089c3439        12 days ago         1.86GB
kolla/centos-source-horizon                     stein               528ec4d61425        12 days ago         1.05GB
kolla/centos-source-nova-ssh                    stein               0206e811f97b        12 days ago         1.07GB
kolla/centos-source-heat-api                    stein               15697345e54b        12 days ago         906MB
kolla/centos-source-heat-api-cfn                stein               d7109464a5ac        12 days ago         906MB
kolla/centos-source-heat-engine                 stein               a53b323f6d89        12 days ago         906MB
kolla/centos-source-nova-consoleauth            stein               0218807c7f25        12 days ago         1.04GB
kolla/centos-source-nova-api                    stein               0821f9feba2e        12 days ago         1.1GB
kolla/centos-source-nova-novncproxy             stein               a58340553002        12 days ago         1.07GB
kolla/centos-source-placement-api               stein               eed6f0a74817        12 days ago         932MB
kolla/centos-source-nova-conductor              stein               2592000fbc39        12 days ago         1.04GB
kolla/centos-source-nova-scheduler              stein               628404562a7d        12 days ago         1.04GB
kolla/centos-source-neutron-server              stein               a99220d46d30        12 days ago         1.05GB
kolla/centos-source-neutron-l3-agent            stein               9b76ae64d561        12 days ago         1.06GB
kolla/centos-source-neutron-metadata-agent      stein               813dcf95e9cc        12 days ago         1.02GB
kolla/centos-source-neutron-openvswitch-agent   stein               fd258779b5c7        12 days ago         1.02GB
kolla/centos-source-neutron-dhcp-agent          stein               fb5df664eff0        12 days ago         1.02GB
kolla/centos-source-glance-api                  stein               b2ebb8704be4        12 days ago         922MB
kolla/centos-source-keystone-fernet             stein               0b8d0abcb18e        12 days ago         932MB
kolla/centos-source-keystone-ssh                stein               925d5ac5df29        12 days ago         933MB
kolla/centos-source-keystone                    stein               3dafc7bd16db        12 days ago         932MB
kolla/centos-source-openvswitch-vswitchd        stein               c93f857f8cb2        12 days ago         424MB
kolla/centos-source-openvswitch-db-server       stein               8bf18465403a        12 days ago         424MB
kolla/centos-source-nova-libvirt                stein               ff0278b83bfc        12 days ago         1.21GB
kolla/centos-source-kolla-toolbox               stein               43a3d49dedf8        12 days ago         698MB
kolla/centos-source-cron                        stein               9798d8d56c7f        12 days ago         406MB
kolla/centos-source-rabbitmq                    stein               f4004eec41a4        12 days ago         486MB
kolla/centos-source-fluentd                     stein               deac0e6e1726        12 days ago         540MB
kolla/centos-source-chrony                      stein               3ece76e19e9f        12 days ago         407MB
kolla/centos-source-mariadb                     stein               1ec2dfae2f33        12 days ago         594MB
kolla/centos-source-memcached                   stein               46c37f70347c        12 days ago         407MB

部署Openstack

kolla-ansible -i /etc/kolla/all-in-one deploy
//验证部署,并且生成/etc/kolla/admin-openrc.sh
kolla-ansible -i /etc/kolla/all-in-one post-deploy



kolla-ansible -i /etc/kolla/all-in-one post-deploy  -vvv #可以打印出详情;
[root@node1 ~]# cat /etc/kolla/admin-openrc.sh 
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=hsh.2019#      //#web登陆界面的账户密码admin hsh.2019#
export OS_AUTH_URL=http://192.168.6.35:35357/v3
export OS_INTERFACE=internal
export OS_IDENTITY_API_VERSION=3
export OS_REGION_NAME=RegionOne
export OS_AUTH_PLUGIN=password

报错1:拉取镜像失败。

  首先重复尝试几次拉取镜像操作。如果还是失败,先检测/etc/kolla/globals.yml中第21行版本号是否正确。在版本号正确的情况下再次拉取镜像还是报错,那么向前退一个版本尝试拉取镜像。(我就是train版本无法使用,退回到stein版本或者使用queens版本)注意清理其他版本的镜像

部署完毕后访问:http://192.168.6.35/

kolla 安装多节点openstack kolla部署openstack_vim

#卸载 清理缓存kolla-ansible destroy ./all-in-one --yes-i-really-really-mean-it

可以清理安装的openstack

参考地址:https://docs.openstack.org/project-deploy-guide/kolla-ansible/train/quickstart.html#install-kolla-ansible