介绍

Kolla的使命是为运营OpenStack云提供生产环境的容器和部署工具。可使用社区最佳实践进行扩展、快速、可靠和可升级。使用Ansible部署Docker容器运行OpenStack,并提供多种日志记录和监控服务配置。
可选:了解Ansible概念

官方Wiki:Kolla - OpenStack(openstack.org)
kolla文档:kolla 13.1.0.dev90 documentation (openstack.org)
镜像列表:kolla’s Profile | Docker Hub
高可用配置参考:HAProxy Guide — kolla-ansible 13.1.0.dev199 文档 (openstack.org)
kolla支持镜像列表: kolla 13.1.0.dev99 documentation (openstack.org)
快读入门:kolla-ansible 13.1.0.dev199 文档 (openstack.org)

快速部署ALL-IN-ONE节点

节点配置要求

最低配置要求:

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

本次实验环境:

  • 系统:Centos7.6-1810 或 Centos8
  • CPU:8核
  • 内存:16G
  • 网卡:eth0、eht1
  • 硬盘:40G(系统盘),100G(cinder服务使用)

安装

ps:单个步骤中若无注明系统版本则表示此步骤在两个系统中通用

安装Python虚拟环境

使用虚拟环境的目的是避免安装环境与系统环境冲突

# centos7
sudo yum install python-virtualenv -y
# centos8
sudo dnf install python3-virtualenv -y

创建虚拟环境并激活

# 创建虚拟环境
virtualenv /path/to/virtualenv
# 激活虚拟环境
source /path/to/virtualenv/bin/activate# 停用虚拟环境命令
# deactivate
# 列出虚拟环境列表命令
# workon
# 写入到用户环境 下次登陆后执行mypip就可以进入虚拟环境
alias mypip='source /path/to/virtualenv/bin/activate'
echo "alias mypip='source /path/to/virtualenv/bin/activate'" >> ~/.bash_profile

更新pip版本

# 更新pip
pip install -U pip -i https://mirrors.aliyun.com/pypi/simple/
pip install -U setuptools -i https://mirrors.aliyun.com/pypi/simple/

安装Ansible

# Kolla Ansible需要Ansible 2.6到2.9版本
pip install 'ansible<2.10' -i https://mirrors.aliyun.com/pypi/simple/

安装Kolla-ansible

# 安装Kolla-ansible
pip install kolla-ansible -i https://mirrors.aliyun.com/pypi/simple/
# 创建目录:/etc/kolla
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla
# 复制文件到目录。globals.yml、passwords.yml ->  /etc/kolla
cp -r /path/to/virtualenv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
# 复制文件到当前目录,这里复制的就是kolla的清单文件
cp /path/to/virtualenv/share/kolla-ansible/ansible/inventory/* .

配置Ansible

# 对ansible进行配置
mkdir /etc/ansible/
cat > /etc/ansible/ansible.cfg << EOF
[defaults]
# 跳过首次连接验证提示
host_key_checking=False
# 利用管道替换默认的拷贝模块
pipelining=True
# 执行时的并发数
forks=100
EOF

主机清单配置文件

编辑kolla的清单文件,我们在其中指定主机及其所属的组。我们可以使用它来定义节点角色和访问凭据。
Kolla-Ansible附带了示例库存文件。它们之间的区别在于,前者已准备好在localhost上部署单节点OpenStack。如果需要使用单独的主机或多个节点,请编辑清单:all-in-one(单节点)、multinode(多节点)。
关于清单文件的更多信息:http://docs.ansible.com/ansible/latest/intro_inventory.html

# 本文章以单节点为例,所以使用all-in-one配置文件
# vim all-in-one# 检查配置清单是否正常
# 此命令会ping清单文件中的主机
ansible -i all-in-one all -m ping

生成密码

部署时所使用的密码在 /etc/kolla/passwords.yml 文件中,此文件中密码为空,需要手动或随机生成密码填充此文件。

# 自动生成密码并进行填充
kolla-genpwd

配置globals.yml文件

/etc/kolla/globals.yml 是 Kolla-Ansible 的主配置文件。部署 Kolla-Ansible 需要指定以下配置

# 修改globals.yml配置文件
vim /etc/kolla/globals.yml

修改为以下配置

# 指定使用centos基础镜像
kolla_base_distro: "centos"
# 指定使用二进制(yum安装)安装类型
kolla_install_type: "binary"
# 指定网络接口
## 管理接口
network_interface: "eth0"
## Neutron外部网络接口
neutron_external_interface: "eth1"
## 管理地址VIP(虚拟IP),设置一个没有被占用的IP,目的为了提供高可靠性。
kolla_internal_vip_address: "10.48.39.132"
# 如果不想使用Haproxy则需要设置此项为no
# enable_haproxy: "no"
# 如果no了haproxy则需要设置此项值为内部ip(控制节点ip)
# kolla_internal_vip_address: "192.168.1.51"
# 如果需要外部网络访问vip,还可以设置一个外网的vip
# kolla_external_vip_address: ""# 其他服务选项
## 启动cinder服务,并使用lvm卷组后端存储
enable_cinder: "yes"
cinder_volume_group: "cinder-volumes"   #这里指定cinder所使用的卷组
enable_cinder_backend_lvm: "yes"
# 如果启用了cinder服务,则需要保证在存储节点有cinder-volumes卷组
pvcreate /dev/sdb
vgcreate  cinder-volumes /dev/sdb

本文章只说明最小化的服务安装,不涉及监控、对象存储、ceph等服务的安装,如果需要特殊配置请阅读kolla-ansible项目配置
注意:配置文件中的 keepalived_virtual_router_id 值不能与同一二层中的其他openstack相同,他的值在0-255之间。(Keepalived)虚拟路由的唯一id,在同一个网段里,不能有两个相同的id。

开始执行部署

设置配置后,我们可以进入部署阶段。首先,我们需要设置基本的主机级依赖项,如 docker。
Kolla-Ansible提供了一个剧本,将在正确的版本中安装所有必需的服务。
以下假设使用清单。如果使用其他清单(如 multinode ),请相应地替换参数。

# 1.部署依赖的引导服务器:安装一些软件比如docker之类的包
kolla-ansible -i ./all-in-one bootstrap-servers# 2.对主机进行部署前检查
kolla-ansible -i ./all-in-one prechecks# 3.开始部署OpenStack
kolla-ansible -i ./all-in-one deploy

注意:在进行第二步命令时如果报错,请执行以下命令进行规避。

# 退出虚拟环境
deactivate
# 安装epel扩展源
yum install epel-release -y
# 安装新版pip
curl  https://bootstrap.pypa.io/pip/2.7/get-pip.py | python
# 设置pip加速
pip config set global.index-url  https://mirrors.aliyun.com/pypi/simple/
# 使用pip安装一些python包
pip install requests
pip install docker==4.4.4
pip install websocket-client==0.59.0
# 进入到虚拟环境
mypip

部署结束

在上一步骤中第3小步在没有报错的情况下自动退出则代表部署完成,接下来对如何使用做一些说明

# 安装openstack cli客户端
yum install -y centos-release-openstack-train
yum install -y python-openstackclient# 生成openrc文件
kolla-ansible post-deploy
# 导入openrc中的环境变量
. /etc/kolla/admin-openrc.sh

以及简单的创建示例,比如网络、云主机等
注意:需要将命令中的IP、网段、镜像文件替换为自己的环境配置

# 创建外部网络
openstack network create --external --provider-physical-network physnet1         --provider-network-type flat public1
# 创建内部网络
openstack network create --provider-network-type vxlan demo-net
# 创建路由器
openstack router create demo-router
# 创建内部子网
openstack subnet create --subnet-range 10.0.0.0/24 --network demo-net     --gateway 10.0.0.1 --dns-nameserver 8.8.8.8 demo-subnet
# 创建外部子网
openstack subnet create --no-dhcp         --allocation-pool start=10.47.174.150,end=10.47.174.200  --network public1         --subnet-range 10.47.160.0/20 --gateway 10.47.160.1 public1-subnet
# 配置路由器外部网络接口
openstack router set --external-gateway public1 demo-router
# 配置路由器内部接口
openstack router add subnet demo-router demo-subnet
# 上传镜像
openstack image create --disk-format qcow2 --container-format bare --public     --property os_type=linux --file ./cirros-0.5.2-x86_64-disk.img cirros0.5.2
# 创建主机类型
openstack flavor create --id 1 --ram 512 --disk 1 --vcpus 1 m1.tiny
openstack flavor create --id 2 --ram 2048 --disk 20 --vcpus 1 m1.small
openstack flavor create --id 3 --ram 4096 --disk 40 --vcpus 2 m1.medium
openstack flavor create --id 4 --ram 8192 --disk 80 --vcpus 4 m1.large
openstack flavor create --id 5 --ram 16384 --disk 160 --vcpus 8 m1.xlarge
# 设置配额
# 40 instances
openstack quota set --instances 40 $(openstack project list | awk '/ admin / {print $2}')# 40 cores
openstack quota set --cores 40 $(openstack project list | awk '/ admin / {print $2}')# 96GB ram
openstack quota set --ram 96000 $(openstack project list | awk '/ admin / {print $2}')# 创建云主机
openstack server create --image cirros0.5.2 --flavor m1.tiny --network demo-net  demo1
# 放通安全组
ADMIN_PROJECT_ID=$(openstack project list | awk '/ admin / {print $2}')
ADMIN_SEC_GROUP=$(openstack security group list --project ${ADMIN_PROJECT_ID} | awk '/ default / {print $2}')
openstack security group rule create --ingress --ethertype IPv4 --protocol icmp ${ADMIN_SEC_GROUP}
openstack security group rule create --ingress --ethertype IPv4 --protocol tcp --dst-port 22 ${ADMIN_SEC_GROUP}
openstack security group rule create --ingress --ethertype IPv4 --protocol tcp --dst-port 8000 ${ADMIN_SEC_GROUP}
openstack security group rule create --ingress --ethertype IPv4 --protocol tcp --dst-port 8080 ${ADMIN_SEC_GROUP}

其他参考

添加新主机

添加新主机:添加新主机

添加新的控制节点

# 修改ansible清单文件后执行下命令
kolla-ansible -i 清单文件 bootstrap-servers --limit 新增服务器主机名# 拉取镜像到新主机
kolla-ansible -i 清单文件 pull  --limit 新增服务器主机名# 在新主机上部署容器,limit 包含所有控制器
kolla-ansible -i 清单文件 deploy --limit controler1,controler2,新增服务器主机名

添加新的计算节点

# 添加hosts解析
# 复制ansible密钥到新计算节点
# 修改ansible清单文件(在清单文件的compute下添加新计算节点名)后执行下命令
kolla-ansible -i 清单文件 bootstrap-servers --limit 新增服务器主机名# 对主机进行部署前检查
kolla-ansible -i ./all-in-one prechecks# 拉取镜像到新主机
kolla-ansible -i 清单文件 pull  --limit 新增服务器主机名# 在新主机上部署容器,limit 包含所有控制器
kolla-ansible -i 清单文件 deploy --limit 新增服务器主机名

kolla-ansible CLI命令

# 运行 CLI 时,可以通过环境变量将其他参数传递给该变量。kolla-ansible ansible-playbook EXTRA_OPTS
# 用于部署和启动所有 Kolla 容器。
kolla-ansible -i INVENTORY deploy
# 用于清理群集中的容器和卷。
kolla-ansible -i INVENTORY destroy
# 用于恢复完全停止的 mariadb 集群。
kolla-ansible -i INVENTORY mariadb_recovery
# 用于在部署每个 OpenStack 服务之前检查是否满足所有要求。
kolla-ansible -i INVENTORY prechecks
# 用于在部署节点上执行后期部署,以获取管理员 openrc 文件
kolla-ansible -i INVENTORY post-deploy
# 用于拉取容器的所有映像。
kolla-ansible -i INVENTORY pull
# 用于重新配置 OpenStack 服务。
kolla-ansible -i INVENTORY reconfigure
# 用于升级现有的OpenStack环境。
kolla-ansible -i INVENTORY upgrade
# 用于执行部署后冒烟测试。
kolla-ansible -i INVENTORY check
# 注:冒烟测试需要配置:kolla_enable_sanity_checks=yes
# 用于停止运行容器。
kolla-ansible -i INVENTORY stop
# deploy-containers 用于检查并在必要时更新容器,而不生成配置。
kolla-ansible -i INVENTORY
# 用于修剪主机上的孤立 Docker 映像。
kolla-ansible -i INVENTORY prune-images
# 可以通过多次传递 or 命令行选项来指定多个清单。这对于在多个环境之间共享配置非常有用。可以在 中设置任何常见配置,并可用于设置特定于环境的详细信息。--inventory-iINVENTORY1INVENTORY2
kolla-ansible -i INVENTORY1 -i INVENTORY2 ...
# 用于收集 Ansible 事实,例如填充事实缓存。
kolla-ansible -i INVENTORY gather-facts

卸载清理

tools/cleanup-containers
# 用于从系统中删除已部署的容器。当您想要执行新的干净部署时,这可能很有用。它将保留注册表和注册表中本地构建的映像,但会从本地 Docker 守护程序中删除所有正在运行的 Kolla 容器。它还会删除命名卷。
tools/cleanup-host
# 用于删除启动中子代理容器时在 Docker 主机上触发的网络更改的残余物。当您想要执行新的干净部署(尤其是更改网络拓扑的部署)时,这可能很有用。
tools/cleanup-images --all
# 用于从本地 Docker 缓存中删除 Kolla 构建的所有 Docker 映像。

修改dashboard的实例vnc地址

# 由于特殊需求,访问dashboard需要经过代理,但是dashboad上的vnc链接默认还是控制节点ip
# 所以需要修改计算节点nova服务
ansible -i multinode compute -a "crudini --set /etc/kolla/nova-compute/nova.conf vnc novncproxy_base_url http://外网访问地址:6080/vnc_auto.html"
# 重启计算节点nova服务
ansible -i multinode compute -a "docker restart nova_compute"

Kolla Ansible 部署 -T版openstack相关推荐

  1. Kolla ansible 部署 OpenStack Zed

    系统要求 单机部署最低配置: 2张网卡 8G内存 40G硬盘空间 主机系统: CentOS Stream 9 Debian Bullseye (11) openEuler 22.03 LTS Rock ...

  2. 万字长文手把手带你部署 Train版OpenStack

    Openstack-Train 1.环境准备 1.1.主机配置 hostname system host resource IP controller centos7 4G内存.4核 192.168. ...

  3. 使用kolla-ansible部署多节点OpenStack(T版)及对接Ceph

    推荐感兴趣的小伙伴先阅读官方文档 近期使用kolla-ansible部署一套OpenStack多节点测试环境,用于测试计算节点宕机撤离的生产场景. 虽然官方文档写的非常详细,但是整个部署过程也多多少少 ...

  4. 如何在OpenStack Kolla上部署Tungsten Fabric(附14个常见的配置问题)

    首先,使用contil-kolla-ansible-deployer容器在OpenStack Kolla上部署Tungsten Fabric(注:原文为Contrail,本文以功能一致的Tungste ...

  5. OpenStack的部署T版(八)——Dashboard

    OpenStack的部署T版(八)--Dashboard OpenStack-Dashboard组件部署 重启服务(c1节点) 重启 ct 节点的 memcache 服务 验证操作 OpenStack ...

  6. OpenStack的部署T版(七)——cinder模块

    OpenStack的部署T版(七)--cinder模块 一.创建数据库实例和角色 二.创建用户.修改配置文件 三.在计算节点c2配置Cinder(存储节点) 四.ct节点查看卷列表 一.创建数据库实例 ...

  7. OpenStack的部署T版(六)——Neutron组件

    OpenStack的部署(六)--Neutron组件 一.CT控制节点 1.创建数据库neutron,并进行授权 2.创建用户.服务并赋权 3.注册API到neutron服务,给neutron服务关联 ...

  8. OpenStack的部署T版(五)——Nova组件

    目录 一.Nova计算服务概念 Nova系统架构 二.Nova组件介绍 1.API 2.Scheduler调度器 Nova调度器的类型 过滤器 权重(weight) 3.Compute组件 Compu ...

  9. 脚本安装Rocky版OpenStack 1控制节点+1计算节点环境部署

    视频安装指南请访问: http://39.96.203.138/wordpress/document/%E8%84%9A%E6%9C%AC%E5%AE%89%E8%A3%85rocky%E7%89%8 ...

最新文章

  1. Chrome_调试js出现Uncaught SyntaxError: Unexpected identifier
  2. 使用freemarker生成java文件(其他文件也可以)
  3. 意大利罗马银行连环抢劫案告破 一名警察涉案
  4. 20155225 实验三《敏捷开发与XP实践》实验报告
  5. 卷积的物理意义(经典)
  6. Java基本sql_常用sql
  7. Percona XtraDB Cluster 集群参数配置说明(PXC 5.7)
  8. php评论倒序 zblog_ZblogPHP调用最新、评论最多、浏览最多、置顶文章
  9. c语言递归思想实践-整形数组求极值问题
  10. 信息流优化中,甲乙双方以及媒体的那点事
  11. 【Java工具类】中文转换成汉语拼音工具-pinyin4j
  12. 矩阵的内积和外积,三向量混合积
  13. python使用 photoshop-python-api 调用ps处理批量动作操作
  14. 2021宇哥八套卷总结—第三套试卷分析
  15. 带你学会C++文字页面类项目——4.整体完善与项目1
  16. js控制浏览器窗口弹出、警告框、确认框
  17. java创建简单的学生类_Java创建一个学生类步骤代码分享
  18. 高新技术企业申请后多久会出结果呢?
  19. 浙江大学计算机学院博士论文格式,浙江大学博士学位论文模板.doc
  20. 软件测试优秀的测试工具,会用三款工作效率能提升一半

热门文章

  1. [转]计算机科学与技术学习心得
  2. oracle中的函数(一)
  3. 软件设计师(二):操作系统基本原理
  4. m3u8及TS文件下载解密:如何从播放网址查找m3u8文件(三)
  5. 户外LED显示屏如何实现裸眼3D显示效果:创造逼真立体体验的新视界
  6. 黑马程序员Android学习笔记——金山卫士项目——第四天
  7. 16个非常实用的顶级思维模型!
  8. 星号构成的直角三角形图案
  9. [附源码]JAVA毕业设计深州市特色蜜桃产业电子商务系统(系统+LW)
  10. 马去创业史转载(启示)