1. kolla 项目介绍

简介

kolla 的使命是为 openstack 云平台提供生产级别的、开箱即用的自动化部署能力。

kolla 要实现 openetack 部署分为两步,第一步是制作 docker 镜像,第二步是用 ansible 实现编排部署。因此,kolla 项目又被分为两个小项目:kolla、kolla-ansible,分别用于实现镜像制作和编排部署功能。

kolla-kubernetes 类似于于 kolla-ansible,篇幅原因本文不做过多介绍。

kolla 的优势 

市面上 openstack 的部署工具和方案很多,kolla 的优势主要得益于容器技术:

  • 快速部署,平滑升级,升级影响时间非常短。
  • 升级粒度小。可以以组件为单位进行升级,例如升级 nova 组件,使用 kolla-ansible -i ~/kolla/all-in-one upgrade -t nova 命令即可。
  • 只需操作系统与 docker 兼容,从而减少了很多 openstack 安装包与基础安装包的冲突。
  • kolla 项目在社区内的热度相对较高,社区支持更好。

关于本文实验

本文主要介绍下如何在 Ubuntu 18.04.1 LTS 系统上使用 kolla 部署 opesntack Rocky 版本 all-in-one 环境,其中:

  • kolla-ansible 使用源代码而不使用安装包的方式。
  • kolla-ansible 运行环境使用 virtualenv 而不是用本地 python 环境。
  • docker 的 regisry 使用公用的 Docker Hub 而不是自己搭建。
  • 本实验部署的 openstack 组件有 nova、neutron 及部分 neutron 插件、heat、glance、cinder-volume(lvm后端)、horizon。

2. 环境准备

基础环境

  • 操作系统版本:Ubuntu 18.04.1 LTS minimal 安装(虚拟机)
  • 两块网卡,一块有 IP 地址,另一块只需 up 状态,不需要 IP 地址
  • 系统内核版本:4.15.0-29-generic
  • kolla-absible 版本:kolla-ansible rocky 稳定版
  • openstack 版本:rocky 稳定版

关于网卡,部署all-in-one最少需要两块网卡。有 IP 地址的网卡作为管理网和其他网络默认网卡(包括存储网),没有 IP 地址的网卡作为业务网络网卡;第二块网卡不需配置 IP 地址,否则会影响虚拟机联网。

virtualenv

为了与其他 python 项目隔离,本实验使用 virtualenv 来存放 kolla 项目。

创建 virtuanenv 并激活:

# 升级 pip
sudo pip install -U pip
# 安装 venv
sudo pip install virtualenv
sudo virtualenv ~/kolla/virtualenv
sudo source ~/kolla/virtualenv/bin/activate

3. 安装依赖包

升级包索引

sudo apt-get update

安装 python 依赖包

sudo apt-get install python-dev libffi-dev gcc libssl-dev python-selinux python-setuptools

4. Ansible

安装 ansible

sudo apt-get install ansible

配置 ansible

更改 ansible 配置文件 /etc/ansible/ansible.cfg(配置文件不存在则需新建):

cat << EOF > /etc/ansible/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=
EOF

关于 ansible 的配置项及含义,可以参考 ansible基础-安装与配置

5. lvm 配置

创建 loop 设备和 lvm

本实验环境我们使用 lvm 作为 cinder-volume 后端存储。一种方法是给虚拟机添加一块硬盘 sdb 并创建 pv 和 vg。另一种方式是使用本地文件创建 loop 设备然后再创建 pv 和 vg。

第一种方式操作起来比较简单,这里介绍下第二种方式:

free_device=$(losetup -f)
fallocate -l 20G /var/lib/cinder_data.img
losetup $free_device /var/lib/cinder_data.img
pvcreate $free_device
vgcreate cinder-volumes $free_device

6. kolla-ansible

下载指定分支的 kolla-ansible 代码

cd ~/kolla
git clone https://github.com/openstack/kolla-ansible -b stable/rocky

配置 kolla-ansible

安装依赖:

pip install -r kolla-ansible/requirements.txt

创建 kolla 配置文件并设置权限:

sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla

拷贝 kolla 配置文件模版:

cp -r kolla-ansible/etc/kolla/* /etc/kolla 

修改 kolla 配置文件:

cat << EOF > /etc/kolla/globals.yml
---
enable_iscsid: 'no' #不加会报错,看起来是stable/rocky分支的bug
kolla_base_distro: "ubuntu"
kolla_install_type: "source" #使用基于源代码的image
openstack_release: "rocky" #该配置项最好与kolla-ansible分支版本保持一致
kolla_internal_vip_address: "10.211.55.23" #与network_interface配置项网卡ip保持一致
network_interface: "enp0s5"
neutron_external_interface: "enp0s6"
enable_cinder: "yes" #开启cinder部署开关
enable_cinder_backend_lvm: "yes" #使用lvm作为cinder-volume后端存储
enable_haproxy: "no"
glance_enable_rolling_upgrade: "no"
nova_compute_virt_type: "qemu" #使用虚拟机部署时,该配置项必须改为qemu,默认值为kvm
EOF 

生成密码文件:

#执行脚本自动生成
cd kolla-ansible/tools
./generate_passwords.py
#检验
cat /etc/kolla/passwords.yml

拷贝 ansible 主机清单文件:

cp kolla-ansible/ansible/inventory/* ~/kolla

主机清单(inventory)文件定义了 ansible 的主机组的划分,如果是 all in one 环境那么直接使用 all-in-one 文件即可,无需修改。

7. 执行部署

Bootstrap servers

cd kolla-ansible/tools
./kolla-ansible -i ~/kolla/all-in-one bootstrap-servers 

部署前检查

这里要添加 ansible_python_interpreter 变量,用于指定 virtualenv 环境位置,否则执行报错:

./kolla-ansible -i ~/kolla/all-in-one prechecks -e 'ansible_python_interpreter=/root/kolla/virtualenv/bin/python'

执行部署

这步也要指定 virtualenv 环境位置:

./kolla-ansible -i ~/kolla/all-in-one deploy -e 'ansible_python_interpreter=/root/kolla/virtualenv/bin/python'

生成 keystone admin 用户环境变量文件

./kolla-ansible -i ~/kolla/all-in-one post-deploy
. /etc/kolla/admin-openrc.sh 

啊安装 openstack client

pip install python-openstackclient python-glanceclient python-neutronclient

8. 初始化与创建

初始化

初始化脚本会创建 cirros 镜像、网络、子网、路由、安全组、规格、配额等虚拟机资源:

. kolla-ansible/tools/init-runonce

创建虚拟机

根据实际环境替换 IMAGE_NAME 变量后执行如下脚本:

cat << EOF > ~/boot.sh
IMAGE_NAME=603672c1-47a9-45dc-92ad-226c2ac00d95
openstack server create --image ${IMAGE_NAME} --flavor m1.tiny --key-name mykey --network demo-net demo1
EOF

9. 参考链接

  • https://docs.openstack.org/kolla-ansible/latest/reference/index.html
  • https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html
  • https://blog.csdn.net/jmilk/article/details/80500234
  • https://blog.csdn.net/moolight_shadow/article/details/51317441

Ubuntu 18.04.1 LTS + kolla-ansible 部署 openstack Rocky all-in-one 环境的更多相关文章

  1. 基于Ubuntu 18.04.5 LTS 部署Ceph集群测试及Ceph RDB的使用。

    1.ceph简介 Ceph在一个统一的系统中独特地提供对象.块和文件存储 1.1 ceph官网架构图 1.2 架构解释   CEPH 对象存储 CEPH 块设备 CEPH 文件系统 RESTful 接 ...

  2. Ubuntu 18.04.2 LTS美化方案

    Ubuntu 18.04.2 LTS美化方案记录 根据个人经验,我将Ubuntun美化分为四个部分:1)桌面:2)对话框界面:3)图标:4)登录及锁屏界面:5)终端.由于Ubuntu系统默认采用GNO ...

  3. Ubuntu 18.04.4 LTS 更换国内系统源

    Ubuntu 18.04.4 LTS 更换国内系统源 1.1) 好习惯先做备份在干活: mv /etc/apt/sources.list /etc/apt/sources.list.bak 1.2) ...

  4. ubuntu 18.04下greenplum安装笔记(一)Linux下基础环境的搭建

    背景 需要构建一个用于数据仓库的分布式数据库集群. 每一个节点暂时不需要进行备份,同时也不考虑坏掉的情况. 每一个数据节点最好都不用进行过多的配置,安装起来方便. Greenplum的Shared-N ...

  5. Ubuntu 18.04.3 LTS Virtualbox提示“Kernel driver not installed (rc=-1908)”问题修复一例

    前两天Ubuntu升级了,重启后启动virtualbox保存 从错误报告上反映出来的问题原因是因为某些内核驱动程序没有经过编译,所以Virtualbox无法正常运行.事实上,在Ubuntu上处理这个问 ...

  6. Ubuntu 18.04.5 LTS Ceph集群之 cephx 认证及使用普通用户挂载RBD和CephFS

    1.cephx认证和授权 1.1 CephX认证机制 Ceph使用cephx协议对客户端进行身份认证: 1.每个MON都可以对客户端进行身份验正并分发密钥, 不存在单点故障和性能瓶颈 2. MON会返 ...

  7. thinkpad X1 extreme 安装Ubuntu 18.04.2 LTS

    1.安装的时候需要禁用:nouveau.modeset=0 2.安装完成之后需要添加:acpi=off ,ro后面加上3,直接进入终端 3.启动之后:安装nvdia驱动 $ ubuntu-driver ...

  8. Ubuntu操作系统(我的是ubuntu 18.04.3 LTS)

    查看是否开启了ssh服务是否安装,使用命令: sudo ps -e |grep ssh 如果安装了的是会有sshd服务的,下面的图片是没有安装ssh服务 2 先更新资源列表,使用命令: sudo ap ...

  9. ubuntu 18.04 搭建flask服务器(大合集,个人实操)

    ubuntu 18.04 搭建flask服务器(大合集) Ubuntu python flask 服务器 本次使用的Ubuntu版本为:Ubuntu 18.04.5 LTS (GNU/Linux 4. ...

随机推荐

  1. Enabling Chrome Developer Tools inside Postman

    Chrome's Developer Tools are an indispensable part of the modern web development workflow. However, ...

  2. 解决Android模拟器卡慢的问题

    解决Android模拟器卡慢的问题 本文介绍使用Intel HAXM技术为Android模拟器加速,使模拟器运行速度媲美真机. Intel HAXM(Hardware Accelerate Execu ...

  3. Java 面试知识点解析(六)——数据库篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  4. ORA-12737: Instant Client Light: unsupported server character set CHS16GBK

    当使用Navicat Premiun 英文版连接oracl时可能会报ORA-12737: Instant Client Light: unsupported server character set ...

  5. 译MassTransit 创建消息消费者

    创建消息消费者一个消息消费者是一个 可以消费一个或多个消息类型的类,指定IConsumer<T>接口,T为消息类型 public class UpdateCustomerConsumer ...

  6. BZOJ_1316_树上的询问_点分治

    BZOJ_1316_树上的询问_点分治 Description 一棵n个点的带权有根树,有p个询问,每次询问树中是否存在一条长度为Len的路径,如果是,输出Yes否输出No. Input 第一行两个整 ...

  7. Ubuntu16.04 下搭建git服务器及gitweb+nginx配置

    本文转自:http://blog.csdn.net/water_horse/article/details/68958140 1.安装所需软件 fengjk@water:~$ sudo apt-get ...

  8. OutputStream与PrintWriter的使用与区别

    1.OutputStream 使用步骤: 获取输出流 设置中文 将字符串转换成字节数组 调用outputStream.write() 这里只贴出doGet方法的内容: protected void d ...

  9. Sublime Text3插件安装(经典)

    今天我去听数学建模的培训,感觉很有意思,可是我没有报名(QAQ),没有参加培训的报名,不过幸好没有开始选拔比赛 所以我决定学习数学建模方面的知识,要好好学习了! 希望我未来的学弟学妹们!(不要像我这样 ...

  10. 记录遭遇挖矿程序kthrotlds的失败处理经历

    1 发现问题 在腾讯云上购买了一个centos7的服务器,平时用来练手,偶尔也安装一些程序进行测试,上面安装了mysql和redis,前段时间数据库经常掉线,连不上,到腾讯云后台进行查看,通过服务器实 ...