CentOS8系统中使用Kolla部署OpenStack-allinone云平台
Kolla概述和openstack所有结点linux系统初始配置
kolla是openstack下面用于自动化部署的一个项目,它基于docker和ansible来实现,docker主要负责镜像制作,容器管理。而ansible主要负责环境的部署和管理。
Kolla实际上是分为两大块的,一部分,Kolla提供了生产环境级别的镜像,涵盖了Openstack用到的各个服务,另一部分是自动化的部署,也就是上面说的ansible部分。最开始两个部分是在一个项目中的(也就是Kolla),从O版本开始将两个部分独立开来,Kolla项目用来构建所有服务的镜像,Kolla-ansible用来执行自动化部署。
主机要求
主机必须满足以下最低要求:
2个网络接口
8GB主内存
40GB磁盘空间
安装对组件的版本非常敏感。请仔细检查,因为默认的操作系统存储库可能已过时。
pip在继续之前,请确保已安装软件包管理器并将其升级到最新版本。安装使用pip软件包管理器构建代码所需的依赖项。
Kolla使用Ansible部署OpenStack 。如果发行包装具有推荐的版本,请从发行包装中安装Ansible。
第一步:linux系统环境配置
[root@hots05 ~]# yum install epel-release python-pip3 -y
[root@hots05 ~]# pip3 install -U pip
[root@hots05 ~]# yum install python-devel libffi-devel gcc openssl-devel -y
[root@hots05 ~]# yum install ansible -y
[root@hots05 ~]# cat /etc/centos-release
CentOS Linux release 8.1.1911 (Core)
一些已实现的Ansible发行版太旧,无法使用发行版打包。目前,CentOS和RHEL软件包Ansible> 2.0适用于Kolla。请注意,您需要启用对通过yum安装的EPEL存储库的访问权限–为此,请查看Fedora的EPEL 文档和FAQ。
生成ens37的网卡配置文件
[root@hots05 ~]# cd /etc/sysconfig/network-scripts/
[root@hots05 ~]# # cp ifcfg-ens33 ifcfg-ens37
[root@hots05 ~]# vim ifcfg-ens37
TYPE="Ethernet"
BOOTPROTO="none"
NAME="ens37"
DEVICE="ens37"
ONBOOT="yes"
[root@hots05 ~]# reboot
关闭防火墙、设置selinux 、Firewalld
[root@hots05 ~]# systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld
[root@hots05 ~]# getenforce
Disabled
设置主机名
[root@hots05 ~]# cat /etc/hosts
127.0.0.1 localhost
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.200 host05
# BEGIN ANSIBLE GENERATED HOSTS
192.168.0.200 hots05
#由于需要Docker来构建映像并在所有已部署的目标上都存在Docker,因此Kolla社区建议安装Docker,
Inc.官方包装的Docker版本,以通过以下命令获得最大的稳定性和兼容性:
[root@hots05 ~]# curl -sSL https://get.docker.io | bash
[root@hots05 ~]# docker --version
#创建插入单元文件
[root@hots05 ~]# mkdir -p /etc/systemd/system/docker.service.d
[root@hots05 ~]# tee /etc/systemd/system/docker.service.d/kolla.conf <<-'EOF'
> [Service]
> MountFlags=shared
> EOF
[root@hots05 ~]# systemctl daemon-reload && systemctl restart docker
[root@hots05 ~]# yum install python-docker-py -y
[root@hots05 ~]# yum install ntp -y
[root@hots05 ~]# systemctl enable ntpd.service && systemctl start ntpd.service
[root@hots05 ~]# systemctl stop libvirtd.service && systemctl disable libvirtd.service
#在拉去镜像的过程中可能会超时。重新执行以下吗,命令即可。或者使用阿里云加速器下载。
[root@hots05 ~]# mkdir /etc/docker/
[root@hots05 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://XXX.mirror.aliyuncs.com"]
}
注:如果需要使用自己的本地私有仓库,写成如下:
{
"registry-mirrors": ["https://XXXX.mirror.aliyuncs.com"]
"insecure-registries": ["192.168.1.150:5000"]
}
[root@hots05 ~]# systemctl daemon-reload && systemctl restart docker
第二步:安装Kolla进行开发
从git克隆Kolla和Kolla-Ansible存储库。
[root@hots05 ~]# git clone https://github.com/openstack/kolla
[root@hots05 ~]# git clone https://github.com/openstack/kolla-ansible
安装kolla-ansible需要依赖包
[root@hots05 ~]# cd /kolla
[root@hots05 ~]# pip3 install .
[root@hots05 ~]# cd /kolla-ansible
[root@hots05 ~]# pip3 install .
复制kolla-ansible的相关配置文件
[root@hots05 ~]# cp -r kolla-ansible/etc/kolla /etc/kolla/
[root@hots05 ~]# cp kolla-ansible/ansible/inventory/* /etc/kolla/
[root@hots05 kolla-ansible]# ls /etc/kolla/
all-in-one globals.yml multinode passwords.yml
自动主机引导程序¶
编辑/etc/kolla/globals.yml文件以配置接口。
[root@hots05 ~]# cat /etc/kolla/globals.yml | grep -v ^$| grep -v ^#
---
kolla_internal_vip_address: "192.168.0.200" #修改本地的IP地址
network_interface: "ens33"
neutron_external_interface: "ens37"
enable_haproxy: "no"
第三步:自定义kolla-ansible安装openstack的相关配置文件
#生成密码。这将/etc/kolla/passwords.yml使用随机生成的值填充文件中的所有空白字段, 以保护部署。(可选)可以手动在文件中填充密码。
[root@hots05 ~]# kolla-genpwd
[root@hots05 ~]# vim /etc/kolla/passwords.yml
改: keystone_admin_password: HsPbEQHxTqmewKYNoRPpIOyQNdEYpHy36OX67TG3
为:keystone_admin_password: 123456
生成SSH Key,并授信本节点:
[root@hots05 ~]# ssh-keygen
[root@hots05 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@host05
配置单节点清单文件(目前只有一个节点)
[root@hots05 ~]# vim /etc/kolla/all-in-one #把localhost替换成host05
:1,$s/localhost/host05/
:1,$s/ansible_connection=local//
#注:将以下组件,都安装到host05这台机器上:改第1行到19行中。
第四步:开始基于kolla-ansible安装openstack私有云
#设置docker volume卷挂载方式
[root@hots05 ~]# tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF
#为了快速准备主机,可以使用剧本引导服务器。这是一本Ansible剧本,CentOS 8主机上运行,以安装集群并为OpenStack安装做准备。
[root@hots05 ~]# kolla-ansible -i all-in-one bootstrap-servers
#对主机进行预部署检查
[root@hots05 ~]# kolla-ansible -i /etc/kolla/all-in-one prechecks
拉取镜像
[root@hots05 ~]# kolla-ansible -i /etc/kolla/all-in-one pull
[root@hots05 ~]# docker images |grep master |wc -l
31
[root@hots05 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kolla/centos-binary-nova-compute master 60f87bbcdb2b 5 days ago 1.82GB
kolla/centos-binary-nova-api master 2a48aa16de9a 5 days ago 881MB
kolla/centos-binary-nova-novncproxy master 5e36e474b9df 5 days ago 952MB
kolla/centos-binary-nova-ssh master 58f82bec4a17 5 days ago 864MB
kolla/centos-binary-nova-conductor master b75701847d3e 5 days ago 862MB
kolla/centos-binary-nova-scheduler master 60af7c649b0e 5 days ago 862MB
kolla/centos-binary-heat-api-cfn master fc1a17c03ac7 5 days ago 865MB
kolla/centos-binary-heat-engine master 41082528b965 5 days ago 865MB
kolla/centos-binary-heat-api master bfcef7936187 5 days ago 865MB
kolla/centos-binary-neutron-l3-agent master 3a32d38bae91 5 days ago 922MB
kolla/centos-binary-neutron-openvswitch-agent master 046e052845fd 5 days ago 901MB
kolla/centos-binary-neutron-server master 1c66fb1e752e 5 days ago 903MB
kolla/centos-binary-neutron-metadata-agent master 438b35e1d365 5 days ago 868MB
kolla/centos-binary-neutron-dhcp-agent master 70dc5ee0f25a 5 days ago 868MB
kolla/centos-binary-keystone-fernet master 5dbb40d7a47c 5 days ago 868MB
kolla/centos-binary-keystone-ssh master f72bd199dedf 5 days ago 869MB
kolla/centos-binary-keystone master 69a805277ef2 5 days ago 867MB
kolla/centos-binary-placement-api master e3f9b51ec081 5 days ago 879MB
kolla/centos-binary-glance-api master 7b45d3df6436 5 days ago 901MB
kolla/centos-binary-mariadb-clustercheck master 1ccc147a0ee7 5 days ago 653MB
kolla/centos-binary-openvswitch-vswitchd master 44e62a529fba 5 days ago 463MB
kolla/centos-binary-openvswitch-db-server master 9079f09802b9 5 days ago 463MB
kolla/centos-binary-horizon master d142ff19b65b 5 days ago 970MB
kolla/centos-binary-nova-libvirt master c1e9811c993c 5 days ago 1.37GB
kolla/centos-binary-fluentd master 1babc43fbdf2 5 days ago 762MB
kolla/centos-binary-memcached master 38013f7bb367 5 days ago 463MB
kolla/centos-binary-rabbitmq master 6ee5efbba57c 5 days ago 523MB
kolla/centos-binary-kolla-toolbox master 453394fe7004 5 days ago 944MB
kolla/centos-binary-mariadb master a4919b950f6d 5 days ago 683MB
kolla/centos-binary-chrony master 3667fc60676b 5 days ago 443MB
kolla/centos-binary-cron master 4ed2722413a5 5 days ago 442MB
#进入实际的OpenStack部署:
[root@hots05 ~]# kolla-ansible -i /etc/kolla/all-in-one deploy
#验证部署
[root@hots05 ~]# kolla-ansible -i /etc/kolla/all-in-one post-deploy
PLAY RECAP ************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
要测试您的部署,请运行以下命令,以一目了然的图像和中子网络初始化网络。
[root@hots05 ~]# source /etc/kolla/admin-openrc.sh
[root@hots05 ~]# /usr/share/kolla/init-runonce
[root@hots05 ~]# ll /etc/kolla/admin-openrc.sh
-rw-r--r-- 1 root root 516 6月 10 02:45 /etc/kolla/admin-openrc.sh
[root@hots05 ~]# cd /etc/kolla/
[root@hots05 kolla]# cat admin-openrc.sh
# Clear any old environment that may conflict.
for key in $( set | awk '{FS="="} /^OS_/ {print $1}' ); do unset $key ; done
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=123456 #密码
export OS_AUTH_URL=http://192.168.0.200:35357/v3
export OS_INTERFACE=internal
export OS_ENDPOINT_TYPE=internalURL
export OS_IDENTITY_API_VERSION=3
export OS_REGION_NAME=RegionOne
export OS_AUTH_PLUGIN=password
第五步:测试:http://192.168.1.200 访问成功。
报错信息
Failed to download metadata for repo 'docker-ce-stable': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried", "rc": 1, "results": []}
解决办法
是DNS 设置问题
可以尝试改成 1.1.1.1 或者谷歌的 8.8.8.8 或者服务器所在地区的常见DNS 或公
/etc/resolv.conf
[root@master ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 192.168.31.1