Kolla的单节点部署

概述

  • Kolla的目标是以灵活、简单的部署过程来代替OpenStack传统的臃肿、繁杂的部署过程;
  • 通常是以100个节点以上的OpenStack集群为目标,Kolla旨在简化部署过程;

环境要求

  • 网络接口:2个;
  • 内存:8G以上;
  • 磁盘:40G以上;

验证网络接口

  • 获取网络接口的信息:
1
$ ip addr show
  • 启用网络接口:
1
$ ip link set ens4 up

软件依赖

Ocata

软件 最低版本 最高版本 节点
Ansible 2.0.0 None 部署节点
Docker 1.10.0 None 目标节点
Docker Python 1.8.1 None 目标节点
Python Jinja2 2.8.0 None 部署节点

部署指南

更新软件源

CentOS系统

  • 配置Epel源:
1
$ vim /etc/yum.repos.d/CentOS-Epel.repo
1
2
3
4
5
6
7
8
9
# CentOS-Epel.repo

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.ustc.edu.cn/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=http://mirrors.ustc.edu.cn/epel/RPM-GPG-KEY-EPEL-7

安装PIP服务

CentOS系统

1
$ yum install -y python-pip

Ubuntu系统

1
$ apt install -y python-pip

CentOS/Ubuntu系统

  • 更改PIP的源:
1
2
3
$ mkdir -p ~/.pip
$ echo '[global]' > ~/.pip/pip.conf
$ echo 'index-url = https://pypi.tuna.tsinghua.edu.cn/simple' >> ~/.pip/pip.conf
  • 升级setuptools
1
$ pip install -U setuptools
  • 升级PIP
1
$ pip install -U pip

安装Ansible服务

1
$ pip install -U ansible

安装Docker服务

更改Docker的镜像仓库:

  • 此处使用了
1
2
$ mkdir -p /etc/docker/
$ vim /etc/docker/daemon.json
1
2
3
4
{
"registry-mirrors": ["http://6bdc63e3.m.daocloud.io"],
"insecure-registries":["172.18.20.100:4000"]
}

配置Systemd:

1
2
$ mkdir -p /etc/systemd/system/docker.service.d
$ vim /etc/systemd/system/docker.service.d/kolla.conf
1
2
[Service]
MountFlags=shared
  • 重启Docker服务:
1
2
$ systemctl daemon-reload
$ systemctl restart docker.service

安装NTP服务

CentOS系统

1
$ yum install -y chrony
  • 配置NTP服务:
1
2
$ \cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
$ vim /etc/chrony.conf
1
2
3
4
server 0.cn.pool.ntp.org iburst
server 1.cn.pool.ntp.org iburst
server 2.cn.pool.ntp.org iburst
server 3.cn.pool.ntp.org iburst

Ubuntu系统

1
$ apt install -y chrony
  • 配置NTP服务:
1
2
$ \cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
$ vim /etc/chrony/chrony.conf
1
2
3
4
server 0.cn.pool.ntp.org iburst
server 1.cn.pool.ntp.org iburst
server 2.cn.pool.ntp.org iburst
server 3.cn.pool.ntp.org iburst

CentOS/Ubuntu系统

  • 重启NTP服务:
1
2
$ systemctl enable chronyd.service
$ systemctl restart chronyd.service

安装Docker Python服务

1
2
$ pip install -U docker
$ pip install -U docker-py

安装Kolla Ansible服务

1
$ pip install kolla-ansible

拷贝配置文件

CentOS系统

1
2
3
$ cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/
$ mkdir -p /openstack/kolla-deploy
$ cp /usr/share/kolla-ansible/ansible/inventory/* /openstack/kolla-deploy/

Ubuntu系统

1
2
3
$ cp -r /usr/local/share/kolla-ansible/etc_examples/kolla /etc/kolla/
$ mkdir -p /openstack/kolla-deploy
$ cp /usr/local/share/kolla-ansible/ansible/inventory/* /openstack/kolla-deploy/

生成密码

  • 生成密码,更改的配置文件为/etc/kolla/passwords.yml
1
$ kolla-genpwd
  • 自定密码:
1
$ vim /etc/kolla/passwords.yml
1
keystone_admin_password: handge

配置Kolla

1
$ vim /etc/kolla/globals.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 可选值: [centos, oraclelinux, ubuntu]
kolla_base_distro: "centos"
# 可选值: [binary, source]
kolla_install_type: "source"
# 设置镜像的Tag
openstack_release: "4.0.3"

# 设置HA的VIP, 为HaProxy使用,单节点无用
kolla_internal_vip_address: "172.18.60.100"

# 设置Docker私有仓库
docker_registry: "172.18.20.100:4000"
docker_namespace: "lokolla"

# 配置网络接口
network_interface: "eth0"
neutron_external_interface: "eth1"

# 设置Keepalived的Router_ID,单节点无用
keepalived_virtual_router_id: "100"

# OpenStack组件
enable_chrony: "yes"
enable_cinder: "yes"
enable_heat: "yes"
enable_horizon: "yes"
glance_backend_file: "yes"
# token的类型:[uuid, fernet]
keystone_token_provider: 'fernet'
fernet_token_expiry: 86400

检查系统是否支持虚拟化

1
$ egrep -c '(vmx|svm)' /proc/cpuinfo
  • 若返回为0,则系统不支持虚拟化,需要配置nova服务;
1
2
$ mkdir -p /etc/kolla/config/nova
$ vim /etc/kolla/config/nova/nova-compute.conf
1
2
3
[libvirt]
virt_type = qemu
cpu_mode = none

验证目标节点

  • 验证目标节点是否满足部署要求:
1
$ kolla-ansible prechecks -i /openstack/kolla-deploy/all-in-one

部署OpenStack

  • 耐心等待部署完成;
1
$ kolla-ansible deploy -i /openstack/kolla-deploy/all-in-one

生成脚本文件

  • 生成的脚本的路径:/etc/kolla/admin-openrc.sh
1
$ kolla-ansible post-deploy -i /openstack/kolla-deploy/all-in-one

安装OpenStackClient

1
$ pip install -U python-openstackclient

Error

urllib3

  • 问题:ImportError: cannot import name UnrewindableBodyError
  • 解决方法: 重装Pythonurllib3库;
1
2
$ pip uninstall urllib3
$ pip install urllib3

Docker Py

  • 问题:Error: 'module' object has no attribute 'Client'
  • 解决方法: Docker-Py版本的问题, 从2.0版本开始由Client更新为APIClient
1
2
3
4
$ pip uninstall docker
$ pip uninstall docker-py
$ pip install -U docker
$ pip install -U docker-py

pyOpenSSL

  • 问题:AttributeError: 'module' object has no attribute 'SSL_ST_INIT'
  • 解决方法: 重装PythonpyOpenSSL库;
1
2
$ pip uninstall pyOpenSSL
$ pip install -U pyOpenSSL

有你就有世界,感谢有你,昕!
0%