kolla-deploy
introduction
- kolla 包含各种 openstack 服务 images 的构建相关的东西,dockerfile、build 工具等等
- kolla-ansible 是一个用来部署 kolla 的工具,使用 ansible 来检查部署环境、pull 已经构建好的 images、启动 docker openstack 服务
single
环境
- centos7
- 8G 内存
- 2 张网卡,一张配置固定 ip(10.0.20.100)用作管理网络,另一张 ip link set eth1 up 用作 external
依赖
1 | yum install -y epel-release yum install -y python-pip pip install -U pip yum install -y python-devel libffi-devel gcc openssl-devel yum install -y ansible |
docker
- 安装
1
curl -sSL https://get.docker.io | bash
或者参考 https://docs.docker.com/engine/installation/linux/centos/#install-using-the-repository 配置 daocloud 加速器
- 配置 docker4. python-docker-py
1
mkdir -p /etc/systemd/system/docker.service.d tee /etc/systemd/system/docker.service.d/kolla.conf <<'EOF' [Service] MountFlags=shared EOF systemctl daemon-reload systemctl restart docker
1
yum install -y python-docker-py
ntp、libvirt
1 | yum install -y ntp systemctl enable ntpd.service systemctl start ntpd.service |
kolla-ansible
安装
2. 配置1
pip install kolla-ansible cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/ cp /usr/share/kolla-ansible/ansible/inventory/* .
修改 /etc/kolla/globals.yml
3. 生成集群各种密码1
openstack_release: "4.0.0" #互联网上的 images 只有 4.0.0,若需要最新版的需要自己 build docker_registry: "docker.mirrors.ustc.edu.cn" network_interface: "eth0" neutron_external_interface: "eth1"
1
kolla-genpwd
文件位置 /etc/kolla/passwords.yml , 可根据需要修改检查环境
5. build images1
kolla-ansible -i <<inventory file>> bootstrap-servers
两种方式:
* 从 kolla 的 dockerhub 拉取构建好的测试镜像 <figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span>
kolla-ansible pull -vvv
* 重新构建上游 images
参考 http://docs.openstack.org/developer/kolla/image-building.html
构建后 docker images 可查询到
部署
修改 /etc/kolla/globals.yml 配置参数 kolla_internal_vip_address 为选择的 vip
检查是否支持 vmx
1
egrep -c '(vmx|svm)' /proc/cpuinfo
若不支持,需要做如下配置:1
mkdir -p /etc/kolla/config/nova cat << EOF > /etc/kolla/config/nova/nova-compute.conf [libvirt] virt_type = qemu cpu_mode = none EOF
执行检查和部署1
kolla-ansible prechecks -i ./all-in-one kolla-ansible deploy -i ./all-in-one
部署成功后,生成 admin-openrc.sh1
kolla-ansible post-deploy
该文件位置在 etc/kolla- 验证
1
. /etc/kolla/admin-openrc.sh cd /usr/share/kolla-ansible ./init-runonce
multinode
环境介绍
- 3 个节点,系统 centos7,另外一块磁盘
- 4G 内存
2 张网卡,一张配置固定 ip 用作管理网络,另一张 ip link set eth1 up 用作 external
hostname eth0 eth1 kolla1 10.0.20.100 up kolla2 10.0.20.101 up kolla3 10.0.20.102 up 3 个节点均担任 controller、network、compute 角色
部署
配置
各个节点都需要安装基础的环境 docker、ntp 等, 与上述单节点类似,总结如下
1
yum install -y epel-release yum install -y python-pip pip install -U pip yum install -y python-devel libffi-devel gcc openssl-devel ansible curl -sSL https://get.docker.io | bash mkdir -p /etc/systemd/system/docker.service.d tee /etc/systemd/system/docker.service.d/kolla.conf <<'EOF' [Service] MountFlags=shared EOF systemctl daemon-reload systemctl restart docker yum install -y python-docker-py yum install -y ntp systemctl enable ntpd.service systemctl start ntpd.service
在 3 个节点中, 需要选择一个作为部署节点(选择 kolla1), 在该节点需要安装 kolla-ansible ,并部署节点需要免密码登陆所有节点1
pip install kolla-ansible ssh-copy-id root@kolla1 ssh-copy-id root@kolla2 ssh-copy-id root@kolla3
拷贝配置文件1
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/
以家目录(/root)为 kolla-ansible 的工作目录,将 inventory 配置文件拷贝到此1
cp /usr/share/kolla-ansible/ansible/inventory/ .
关于 /etc/kolla/globals.yml 基本的配置与单节点类似,需要注意的是 ceph 和 cinder 部分1
enable_ceph: "yes" enable_ceph_rgw: "yes" enable_cinder: "yes" glance_backend_ceph: "yes"
需要说明的一个参数1
# docker_registry: "10.0.20.1:5000" # 最好换成 local registry
指向的是 docker images 的 namespace,有三种方案 使用互联网上其他 mirror 的 images
本地搭建 registry,参考 https://docs.docker.com/registry/ (有一定规模的时候推荐) 使用提供的 docker images 归档文件,进行 load 到本地(节点较少时推荐)1
docker load -i kolla-4.0.2.tar.gz
ceph osd 是通过磁盘 lable 来识别的,需要在各个节点上操作,使用第二块磁盘来作为 osd,至于查找第二块磁盘1
lsblk
打上 label1
parted /dev/vdb -s – mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
生成集群各种密码1
kolla-genpwd
文件位置 /etc/kolla/passwords.yml , 可根据需要修改
编辑 multinode 文件,进行基本角色分配2. 检测并部署1
[control] kolla1 kolla2 kolla3 [network] kolla1 kolla2 kolla3 [compute] kolla1 kolla2 kolla3 [monitoring] kolla1 kolla2 kolla3 [storage] kolla1 kolla2 kolla3
3. 调整日志1
kolla-ansible -i multinode bootstrap-servers kolla-ansible prechecks -i multinode kolla-ansible deploy -i multinode
方便查询日志,可选步骤1
ln -sf /var/lib/docker/volumes/kolla_logs/_data/ /var/log/kolla
常见错误
遇到错误重新部署 kolla
清理上次部署的资源
1
kolla-ansilbe destory -i multinode –yes-i-really-really-mean-it
确认三个节点没有遗留 docker volume,若有将其删除
1
docker volume ls
docker volume rm <name>
若有 osd,将对应的磁盘重置, 如
1
umount /dev/vdb
fdisk /dev/vdb
d d w
再给其打上 osd 的 lable
1
parted /dev/vdb -s – mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
重启系统清除 iptables 规则