基本环境
操作系统: CentOS Linux release 7.5.1804 (Core)
内核版本: 3.10.0-862.el7.x86_64
docker 版本: 1.13.1
1, 禁用宿主机的 Libvirt 服务
大多数操作系统会默认启动 Libvirt, 但使用 Kolla 来部署 OpenStack 的话, Libvirt 应该在容器中运行并管理虚拟机.
所以宿主机的 Libvirt 需要被关闭, 以免造成冲突.
- systemctl stop libvirtd.service
- systemctl disable libvirtd.service
部署 kolla
1, 安装依赖
- yum install epel-release python-pip
- yum install -y python-devel libffi-devel openssl-devel gcc
- pip install -U pip
2, 配置国内 pip 源
不然这个速度很慢
- mkdir ~/.pip
- cat <<EOF> ~/.pip/pip.conf
- [global]
- index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
- [install]
- trusted-host=pypi.tuna.tsinghua.edu.cn
- EOF
3, 安装 stable 版 kolla
下载源码
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, 安装 tox, 生成配置文件
- pip install -U tox
- cd kolla/
- tox -e genconfig
- cp -rv etc/kolla /etc/
编辑 kolla-build.conf: 控制 Kolla Image Build 的细则.
- VIM /etc/kolla/kolla-build.conf
- [DEFAULT]
- base = CentOS
- install_type = source
- namespace = kolla
- push = false
- # The Docker Images tag (string value)
- tag = 6.0.0
5,docker 安装
yum 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=shared 为 neutron 的要求, 必须配置为 share, 否则后面部署的时候 neutron 可能会有问题.
编译镜像
简单的来理解 Kolla 组件的话, 它就是一个自动化构建部署 OpenStack 服务所需要的镜像的工具. 其内含组织了大量的 Dockerfile, 供构建镜像时使用.
kolla-build
也可以添加参数项 -p default 对应 kolla-build.conf 的 [profiles] Sections,default 类型表示仅构建核心项目的镜像.
如果个别镜像编译失败可以重新执行以上操作, 因为 docker 的容器缓存, 重新编译会很快.
NOTE: 但有些情况下, 可能会把错误的配置参数 Cache 住, 此时建议执行 Cleanup 操作之后再重跑:
- # 从系统中移除部署的容器
- tools/cleanup-containers
- # 移除由于残余网络变化引发 docker 启动的 neutron-agents 主机
- tools/cleanup-host
- # 从 Cache 中移除所有的 docker image
- tools/cleanup-images
也可以查看一下可编译的镜像
kolla-build --list-images
安装 kolla-ansible
1, 安装 ansible
ansible 的版本要大于 2.0
pip install ansible
2, 安装 kolla-ansible
- Git clone https://github.com/openstack/kolla-ansible -b stable/rocky
- cd kolla-ansible
- pip install -r requirements.txt -r test-requirements.txt -e .
配置一下
- cp etc/kolla/globals.YAML /etc/kolla/
- cp etc/kolla/passwords.YAML /etc/kolla/
- kolla-genpwd
- cp ansible/inventory/*/root/
3, 修改文件
编辑 globals.YAML 文件
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"
4, 修改 Hypervisor Type
因为操作环境是 VMware 的虚拟机, 所以存在嵌套虚拟化不支持 KVM 的问题, 如果你希望启动 OpenStack 实例, 那就需要启用 QEMU(Default KVM).
- mkdir -p /etc/kolla/config/nova
- cat <<EOF> /etc/kolla/config/nova/nova-compute.conf
- [libvirt]
- virt_type=qemu
- cpu_mode = none
- EOF
检查配置
kolla-ansible prechecks
开始部署
kolla-ansible deploy
报错
在用 Dockerfile 制作镜像的时候总是出现如下错误
HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
原因分析:
在下载 python 库的时候, 由于国内网络原因, python 包的下载速度非常慢, 查看 pip 文档, 只要在 pip 的时候控制超时即可, 具体参数为 --default-timeout=100, 后面的时间可以自己指定.
可以在 kolla-build 中指定一下:
- [root@CentOS kolla]# pwd
- /root/kolla
- [root@CentOS kolla]# more tox.INI | grep pip
- install_command = pip --default-timeout=1000 install {
- opts
- } {
- packages
- }
来源: https://www.cnblogs.com/jinyuanliu/p/11056775.html