Kolla 概述:
Kolla是OpenStack下用于自动化部署的一个项目,它基于docker和ansible来实现,其中docker主要负责镜像制作和容器管理,ansible主要负责环境的部署和管理。Kolla实际上分为两部分:Kolla部分提供了生产环境级别的镜像,涵盖了OpenStack用到的各个服务;Kolla-ansible部分提供了自动化的部署。最开始这两部分是在一个项目中的(即Kolla),OpenStack从O开头的版本开始被独立开来,这才有了用于构建所有服务镜像的Kolla项目,以及用于执行自动化部署的Kolla-ansible。
参考官方安装文档https://docs.openstack.org/project-deploy-guide/kolla-ansible/latest/quickstart.html
服务器最低配置:
2 个网络接口(或者单个网络接口配置子接口)
8GB 主内存
40GB 磁盘空间
Ubuntu server 20.04LTS
Ubuntu server 20.04LTS使用最小化或基础安装系统,并修改配置好网络连接
#切换至root
sudo su -
#关闭防火墙
sudo ufw disable
iptables -F
使用 ip a查看网卡名
双网卡模式(推荐)
#修改双网卡IP(20.04改了网络配置方法,原来是修改/etc/network/interfaces文件)
vim /etc/netplan/xxxx.yaml
network:
ethernets:
ens160: #填入第一个网卡的名称
addresses: [192.168.2.38/24] #配置的静态ip地址和掩码
dhcp4: no #关闭DHCP,如果需要打开DHCP则写yes
optional: true
gateway4: 192.168.2.1 #网关地址
nameservers:
addresses: [114.114.114.114] #DNS服务器地址,多个DNS服务器地址需要用英文逗号分隔开
ens192: #填入第二个网卡的名称
addresses: [192.168.2.125/24] #配置的静态ip地址和掩码
dhcp4: no #关闭DHCP,如果需要打开DHCP则写yes
optional: true
gateway4: 192.168.2.1 #网关地址
nameservers:
addresses: [114.114.114.114] #DNS服务器地址,多个DNS服务器地址需要用英文逗号分隔开
version: 2
执行netplan apply应用配置
这里使用的是虚拟机实验环境,两个网卡都在同一网段
单网卡加子网卡模式
network:
ethernets:
ens160: #配置的网卡的名称
addresses: [192.168.2.38/24] #配置的静态ip地址和掩码
dhcp4: no #关闭DHCP,如果需要打开DHCP则写yes
optional: true
gateway4: 192.168.2.1 #网关地址
nameservers:
addresses: [192.168.2.1,114.114.114.114] #DNS服务器地址,多个地址需要用英文逗号分隔
vlans:
ens160.1: #子接口
id: 51
link: ens160 #连接网卡
addresses: ["192.168.2.244/24"] #接口IP掩码
gateway4: 192.168.2.1 #网关地址
version: 2
执行netplan apply应用配置
后面/etc/kolla/globals.yml配置中改为网卡和子接口
network_interface: "ens160" #网卡1名字
neutron_external_interface: "ens160.1" #网卡2名字
主机配置
#修改主机名
hostnamectl set-hostname kolla && sudo su -
#修改hosts增加主机名映射
vim /etc/hosts
192.168.2.125 kolla
#卸载旧docker
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
#从阿里云下载安装docker
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
#验证key
sudo apt-key fingerprint 0EBFCD88
#添加stable源
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
#这里安装的19.03.15版本
sudo apt-get install docker-ce=5:19.03.15~3-0~ubuntu-focal
#启动和自启(安装后会自动配置可忽略)
sudo systemctl enable docker
sudo systemctl start docker
#安装依赖项
sudo apt install python3-dev libffi-dev gcc libssl-dev
#安装pip和升级到最新版
sudo apt install python3-pip
sudo pip3 install -U pip
#安装ansible
sudo apt install ansible
#下载代码(这里选的稳定版train分支,注意不要用master分支会有一堆问题)
git clone -b stable/train https://opendev.org/openstack/kolla-ansible.git
#安装
pip3 install kolla-ansible/
#拷贝配置文件
sudo mkdir -p /etc/kolla
cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
cp /usr/local/share/kolla-ansible/ansible/inventory/* /etc/kolla
#修改ansible配置(在defaults下添加以下3行)
vim /etc/ansible/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=100
确认all-in-one中前6项都是localhost
cat /etc/kolla/all-in-one
测试ansible连接,正常则返回pong
ansible -i /etc/kolla/all-in-one all -m ping
执行kolla-genpwd生成随机密码文件passwords.yml,也可以手动修改内容
#修改主配置文件(清空原有内容)
vim /etc/kolla/globals.yml
kolla_base_distro: "ubuntu" #使用ubuntu为底包的镜像
kolla_install_type: "source" #源码版本
network_interface: "ens192" #网卡1名字
neutron_external_interface: "ens160" #网卡2名字
kolla_internal_vip_address: "192.168.2.125" #虚拟VIP,应填写同网段的一个空IP,这里因为单机部署填写的网卡1的IP
openstack_release: "train" #安装版本,不加此行会装和kolla-ansible一样版本,不能填写空
#开始安装,以下步骤不能有报错,耐心等待执行完成
#安装组件
cd /etc/kolla/
kolla-ansible -i ./multinode bootstrap-servers
#安装检查
kolla-ansible -i ./multinode precheck
#安装部署
kolla-ansible -i ./multinode deploy
#生成admin-openrc.sh文件
kolla-ansible -i /etc/kolla/all-in-one post-deploy
#最终信息导入admin-openrc.sh
kolla-ansible -i /etc/kolla/all-in-one post-deploy -vvv
#最终的各种相关信息
cat 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 #web登录用户
export OS_PASSWORD=QBmiKrKApzDB2hWDCptT1POiPf9qJds48zoDceLT #web登录密码
export OS_AUTH_URL=http://192.168.2.125: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.2.125/即可到web页面登录
可能会出现的问题:(待补充)
kolla-ansible -i ./multinode precheck 报错hostname
/etc/hosts中只留手动配置的一条 注释掉其他的127.0.0.1和::1
ansible升级
pip install ‘ansible==2.9.9’
ln -s /usr/local/python3/bin/ansible /usr/local/bin/