Kolla ansible 多节点部署openstack(stable/2023.2)
基础环境
主机系统: ubuntu22.04
主机名 | 内网管理IP | 配置 | 角色 |
---|---|---|---|
controller01 | 192.168.100.201 | 内存:8G CPU:4C 系统盘: 60G 数据盘:50G |
控制节点 |
controller02 | 192.168.100.202 | 内存:8G CPU:4C 系统盘: 60G 数据盘: 50G |
控制节点 |
controller03 | 192.168.100.203 | 内存:8G CPU:4C 系统盘: 60G 数据盘: 50G |
控制节点 |
compute01 | 192.168.100.204 | 内存:8G CPU:4C 系统盘: 60G |
计算节点 |
compute02 | 192.168.100.205 | 内存:8G CPU:4C 系统盘: 60G |
计算节点 |
network01 | 192.168.100.206 | 内存:4G CPU:4C 系统盘: 60G |
网络节点 |
network02 | 192.168.100.207 | 内存:4G CPU:4C 系统盘: 60G |
网络节点 |
/ | 192.168.100.208 | / | VIP |
主机名配置
hostnamectl hostname controller01
hostnamectl hostname controller02
hostnamectl hostname controller03
hostnamectl hostname compute01
hostnamectl hostname compute01
hostnamectl hostname network01
hostnamectl hostname network02
cat /etc/hosts(每个节点都得设置)
192.168.100.201 controller01
192.168.100.202 controller02
192.168.100.203 controller03
192.168.100.204 compute01
192.168.100.205 compute02
192.168.100.206 network01
192.168.100.207 network02
192.168.100.208 cloud.xxyy.com
#192.168.100.164 harbor.xxyy.com 这个是我的私有docker镜像仓库 无需添加
APT安装依赖(每个节点)
sudo apt update
sudo apt install git python3-dev libffi-dev gcc libssl-dev python3-venv libglib2.0-dev libdbus-1-dev
Docker 安装(每个节点)
# 安装必要的软件包以支持 HTTPS 传输、CA 证书、curl、gnupg-agent 和 software-properties-common
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 下载 Docker 的 GPG 密钥并保存到 /etc/apt/keyrings/docker.asc
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# 添加 Docker APT 仓库,使用 USTC 镜像源,并配置密钥
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新 APT 包索引以包含新添加的 Docker 仓库
sudo apt-get update
# 安装特定版本的 Docker CE、Docker CLI 和 containerd.io
sudo apt-get install docker-ce=5:24.0.9-1~ubuntu.22.04~jammy docker-ce-cli=5:24.0.9-1~ubuntu.22.04~jammy containerd.io
chrony时间同步(每个节点指向控制节点01NTP,每个节点都这样做)
(kolla) root@controller01:~# cat /etc/chrony/chrony.conf
server 192.168.100.201 iburst
allow all
local stratum 10
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
logdir /var/log/chrony
maxupdateskew 100.0
rtcsync
makestep 1 3
创建虚拟环境(controller节点安装)
python3 -m venv kolla
source kolla/bin/activate
PIP源以及安装docker python 库更新(每台节点安装)
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
pip install -U pip
pip install docker
安装 Kolla-ansible(controller01节点安装)
# 安装 kolla-ansible 包
pip install kolla-ansible
# 从指定的 Git 仓库安装 kolla-ansible 的稳定分支
pip install git+https://opendev.org/openstack/kolla-ansible@stable/2023.2
# 创建 /etc/kolla 目录(如果不存在)
sudo mkdir -p /etc/kolla
# 更改 /etc/kolla 目录的所有者为当前用户
sudo chown $USER:$USER /etc/kolla
# 复制 kolla-ansible 的示例配置文件到 /etc/kolla 目录
cp -r /root/kolla/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
# 复制 kolla-ansible 的 multinode 库存文件到当前目录
cp /root/kolla/share/kolla-ansible/ansible/inventory/multinode ./
# 安装特定版本的 ansible-core
pip install 'ansible-core==2.14.15'
# 安装 kolla-ansible 所需的依赖项
kolla-ansible install-deps
# 生成 kolla 的密码文件
kolla-genpwd
数据盘LVM后端存储(3台controller节点安装)
分别在controller01,controller02,controller03执行,这里我的挂的数据盘是sdb。
pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb
multinode配置(controller01节点配置)
[control]
controller01
controller02
controller03
[network]
network01
network02
[compute]
compute01
compute02
[monitoring]
controller01
[storage]
controller01
controller02
controller03
globals.yml配置
vim /etc/kolla/globals.yml
kolla_base_distro: "ubuntu"
openstack_release: "2023.2"
kolla_internal_vip_address: "192.168.100.208"
kolla_internal_fqdn: "cloud.xxyy.com"
kolla_external_fqdn: "cloud.xxyy.com"
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
enable_skyline: "yes"
network_interface: "ens32"
neutron_external_interface: "ens33"
#如果是用VMware虚拟化的话需要用qemu
nova_compute_virt_type: "qemu"
通过 kolla-ansible 部署 openstack
# 拉取所有在配置文件中定义的 Docker 镜像
kolla-ansible pull -i ./multinode
# 引导目标主机,准备它们以运行 Kolla 容器
kolla-ansible bootstrap-servers -i ./multinode
# 运行一系列预检查任务,确保系统满足部署 OpenStack 的要求
kolla-ansible prechecks -i ./multinode
# 部署 OpenStack 到指定的目标主机
kolla-ansible deploy -i ./multinode
部署完后可以输入你的VIP加默认端口9999进入skyline面板
后续添加compute计算节点
# 准备compute03服务器,安装必要软件包并配置操作系统和Docker
kolla-ansible -i multinode bootstrap-servers --limit compute03
# 拉取构建OpenStack服务所需的Docker镜像到compute03服务器
kolla-ansible -i multinode pull --limit compute03
# 在compute03节点上部署OpenStack服务,启动并配置容器以运行OpenStack组件
kolla-ansible -i multinode deploy --limit compute03
安装OpenStack命令行客户端:
# 安装python-openstackclient,并指定约束文件以匹配特定版本的OpenStack组件
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/2023.2
# 运行kolla-ansible的post-deploy命令来完成OpenStack集群的后期部署任务
kolla-ansible post-deploy
# 将生成的admin用户凭据脚本复制到/root目录下,以便于管理
cp /etc/kolla/admin-openrc.sh /root/admin-openrc