kolla kolla-ansible私有化部署

参考

https://www.jianshu.com/p/5d58f6f9e2c7
https://www.cnblogs.com/jinyuanliu/p/11056775.html ( 主要参考 )
https://fuscoyu.github.io/2022/01/21/%E6%9E%84%E5%BB%BAkolla-images/ (kolla构建openstack镜像)

环境

1
2
3
4
5
6
7
8
9
10
root@ceph-3:~# hostnamectl
Static hostname: ceph-3
Icon name: computer-vm
Chassis: vm
Machine ID: 5aded787c9c2487896e5b25dcfa8f871
Boot ID: 6793c80dfa1b46e584f93ef269858343
Virtualization: vmware
Operating System: Ubuntu 20.04.3 LTS
Kernel: Linux 5.4.0-139-generic
Architecture: x86-64

NOTE: 高版本如yoga需要python3.8及以上

禁用宿主机的Libvirt服务

大多数操作系统会默认启动 Libvirt,但使用Kolla来部署 OpenStack 的话,Libvirt 应该在容器中运行并管理虚拟机。所以宿主机的 Libvirt 需要被关闭,以免造成冲突。

1
2
3
# 关门libvirtd
systemctl stop libvirtd.service
systemctl disable libvirtd.service

NOTE

本文环境除源码安装kolla kolla-ansible外 所有环境配置可通过执行kolla.sh脚本完成参考云计算目录。

image-20230715151157804

一. 部署kolla

介绍

https://fuscoyu.github.io/2022/01/21/%E6%9E%84%E5%BB%BAkolla-images/

image-20230715160116251

image-20230715160148218

kolla镜像目前已达到个2345个,实际上不是完全独立的2345个服务。而是针对不同的场景分别构建,达到全面覆盖的结果。同时支持binary和source两种构建方案,而且支持不同的操作系统CentOS,Ubuntu,Debian作为基础镜像,可以满足用户不同的需求。同时也支持在不修改源代码情况下,对镜像进行定制。

1.安装kolla

ubuntu( 高版本 openstack-yoga 环境可直接使用kolla.sh脚本执行 部署)

1
2
# ubuntu安装依赖
apt install sshpass ssh vim git python3-dev libffi-dev gcc libssl-dev python3-pip python3-venv -y

centos( 未测试 )

安装依赖 (版本为高版本openstack时需要 python3的包即python3-pip python3-devel )

1
2
3
4
# 安装依赖
yum install epel-release -y
yum install -y python3-pip python3-devel libffi-devel openssl-devel gcc git -y
pip install -U pip

2、 配置国内pip

1
2
3
4
5
6
7
8
9
10
# 配置pip清华源
mkdir ~/.pip

cat << EOF > ~/.pip/pip.conf
[global]
timeout = 6000
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host=pypi.tuna.tsinghua.edu.cn
EOF

3.生成虚拟化环境在虚拟化环境执行

1
2
3
# 生成虚拟化环境
python3 -m venv ~/venv3
source /root/venv3/bin/activate

4.安装stablekolla (低版本)

链接可选githubhttps://github.com/openstack/kolla.git

1
2
3
4
5
6
7
8
# 下载源码 (根据需要下载所需版本如-b stable/yoga)
git clone https://git.openstack.org/openstack/kolla -b stable/rocky

# 安装依赖
pip install -r kolla/requirements.txt -r kolla/test-requirements.txt

# 源码安装
pip install kolla/

4.高版本stable 版本 kolla yoga版 (高版本 本次使用)

1
2
3
4
5
6
7
8
# 高版本yoga 下载源码 
git clone https://git.openstack.org/openstack/kolla -b stable/yoga (本次使用)

git clone https://github.com/openstack/kolla.git -b stable/yoga
# 安装依赖
pip3 install -r kolla/requirements.txt -r kolla/test-requirements.txt tox
# 源码安装
pip3 install kolla/

报错参考:https://www.jianshu.com/p/5d58f6f9e2c7

image-20230710182812664

安装完成截图:

image-20230715124502732

5、安装tox,生成配置文件

1
2
3
4
5
# 生成配置文件
# pip3 install -U tox
cd kolla/
tox -e genconfig
cp -rv etc/kolla /etc/

忽略此报错:

image-20230715125104251

**编辑 kolla-build.conf**:控制 Kolla Image Build 的细则

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#-----------------配置方式1----------------------
vim /etc/kolla/kolla-build.conf
[DEFAULT]
# base = centos
base = ubuntu
base_arch = x86_64
install_type = source
skip_existing = true
namespace = kolla
push = false
# The Docker Images tag (string value)
# tag = 6.0.0
# tag = zznnyoga
openstack_branch = yoga
#--------------------方式2-----------------------
[DEFAULT]
base = debian # 基础镜像 可选centos,debian,ubuntu。默认centos
base_arch = x86_64 # 基础镜像架构x86_64
skip_existing = true # 跳过已构建的镜像
registry = leifeng.harbor.com # 指定镜像仓库
install_type = source # 安装OpenStack类型,可选source,binary。 推荐source 源码安装
openstack_branch = victoria # openstack 版本

5、docker安装

1
2
3
4
5
6
7
8
9
10
# 安装docker
yum install docker -y
apt install docker -y
# 配置docker mountflags 在[Service]中添加MountFlags=shared
# vim /usr/lib/systemd/system/docker.service
[Service]
MountFlags=shared
# 重启
systemctl daemon-reload
systemctl restart docker

MountFlags=sharedneutron的要求,必须配置为share,否则后面部署的时候neutron可能会有问题 此配置是为了使多个容器能够使用同一个目录。

二. 编译镜像

简单的来理解 Kolla 组件的话,它就是一个自动化构建部署 OpenStack 服务所需要的镜像的工具。其内含组织了大量的 Dockerfile,供构建镜像时使用。

1
2
# 构建镜像不指定参数表示构建所有镜像
kolla-build

也可以添加参数项 -p default 对应 kolla-build.conf[profiles] Sections,default 类型表示仅构建核心项目的镜像。

img

如果个别镜像编译失败可以重新执行以上操作,因为docker的容器缓存,重新编译会很快。

NOTE:但有些情况下,可能会把错误的配置参数 Cache 住,此时建议执行 Cleanup 操作之后再重跑:

1
2
3
4
5
6
# 从系统中移除部署的容器
tools/cleanup-containers
# 移除由于残余网络变化引发 docker 启动的 neutron-agents 主机
tools/cleanup-host
# 从 Cache 中移除所有的 docker image
tools/cleanup-images

也可以查看一下可编译的镜像

1
2
# 查看编译完成的镜像
kolla-build --list-images

构建镜像成功截图:

image-20230715134940273

image-20230715140256816

三. 编译安装kolla-ansible

1. 在虚拟化环境下操作

1
2
3
# 生成虚拟化环境
python3 -m venv ~/venv3
source /root/venv3/bin/activate

image-20230715141931263

2、安装ansible

ansible的版本要大于2.0

1
2
# 安装ansible
pip install 'ansible>=4,<6' -i https://pypi.tuna.tsinghua.edu.cn/simple/

3、安装kolla-ansible

1
2
3
4
5
6
7
8
9
# 编译安装kolla-ansible yoga版本即14.0.0
# git clone https://github.com/openstack/kolla-ansible -b stable/rocky
# 官网github托管方式
git clone https://github.com/openstack/kolla-ansible -b stable/yoga
# 个人gitee方式需要秘钥
git clone https://gitee.com/gegewu12/kolla-ansible-yoga.git
cd kolla-ansible-yoga
# 执行部署
pip3 install -r requirements.txt -r test-requirements.txt -e .

配置kolla-ansible

1
2
3
4
5
6
# 配置kolla-ansible
mkdir -p /etc/kolla
cp etc/kolla/globals.yml /etc/kolla/
cp etc/kolla/passwords.yml /etc/kolla/
cp ansible/inventory/* /root/
cd /etc/kolla && kolla-genpwd

源码安装完成截图:

image-20230715141614531

教程到此即可结束 下方保留是为了文章的完整性 下方构建请移步云计算目录。

四. 利用源码安装的kolla-ansible构建all-in-oneopenstack

1.修改文件

编辑 globals.yml文件

1
2
3
4
5
6
kolla_install_type: "source"
openstack_release:需要与镜像的 Tag 一致,否则部署时找不到镜像。
network_interface:指定管理网接口
neutron_external_interface:指定外部网接口
kolla_internal_vip_address:指定 HAProxy 虚拟 IP,单点部署可以弃用 HAProxy enable_haproxy: "no"。
enable_horizon: "yes"

实际配置可选

1
2
3
4
5
6
7
8
9
10
11
12
13
14
kolla_base_distro: "ubuntu"
openstack_release: "yoga"
kolla_internal_vip_address: "10.0.0.39" # 找一个网段内没有占用的ip
network_interface: "ens33"
neutron_external_interface: "ens37"
enable_haproxy: "yes"
nova_compute_virt_type: "qemu" # 使⽤虚拟机部署时,该配置项必须改为qemu,默认值为kvm
#kolla_install_type: "source" # 使⽤基于源代码的image
#enable_cinder: "yes" # 这一个是启动cinder块存储并使用我们的VG
#enable_cinder_backend_lvm: "yes"
# 配置私有阿里云仓库
openstack_release: "zznnyoga"
docker_registry: "registry.cn-hangzhou.aliyuncs.com" # 拉取 docker 镜像的源
docker_namespace: "zznn"

2.设置主机名安装依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 设置主机名
hostnamectl set-hostname localhost
# 使用kolla.sh脚本安装必要依赖(注释 kolla.sh脚本对应函数执行即可)
main() {
software_source # 所有节点执行
#kolla_kvm # 暂不执行执行后会出现报错(所有节点执行)
update_system # 所有节点执行
install_docker_ce # 所有节点执行
install_docker_sdk # 所有节点执行
#install_ansible_kolla # kolla部署节点执行
#kolla_file # kolla部署节点执行
#Volume_Group # 只在存储节点执行
#kolla_configure # 导入配置global.yml
#kolla_run # 执行安装all-in-one版此处建议手动执行
}
main

3.使用kolla-ansible安装依赖

1
2
3
4
# # 这一步为了让当前目录有ansible.cfg
cd ~ && kolla-ansible install-deps
# 自动构建环境会自动写入/etc/hosts文件内容 需要删除多余的保留唯一解析即可
kolla-ansible -i ./all-in-one bootstrap-servers

image-20230715153829768

4、修改 Hypervisor Type 此处即是利用了kolla-ansible的合并配置文件属性

因为操作环境是 VMware 的虚拟机,所以存在嵌套虚拟化不支持 KVM 的问题,如果你希望启动 OpenStack 实例,那就需要启用 QEMU(Default KVM)

1
2
3
4
5
6
mkdir -p /etc/kolla/config/nova
cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type=qemu
cpu_mode = none
EOF

检查配置

1
kolla-ansible -i ./all-in-one prechecks

开始部署

1
kolla-ansible -i ./all-in-one deploy

生成密钥

1
2
3
# 生成密钥文件
kolla-ansible post-deploy
cp /etc/kolla/admin-openrc.sh /root

部署完成效果

image-20230715160659808

image-20230715161014321

image-20230715161036285

五. 扩展

报错

在用Dockerfile制作镜像的时候总是出现如下错误

1
HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.

原因分析:

在下载python库的时候,由于国内网络原因,python包的下载速度非常慢,查看pip 文档,只要在 pip的时候控制超时即可, 具体参数为--default-timeout=100,后面的时间可以自己指定。

image-20230715135059667

可以在kolla-build中指定一下:

1
2
3
4
[root@centos kolla]# pwd
/root/kolla
[root@centos kolla]# more tox.ini | grep pip
install_command = pip --default-timeout=1000 install {opts} {packages}

教程结束。