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. 安装
    1
    curl -sSL https://get.docker.io | bash

    或者参考 https://docs.docker.com/engine/installation/linux/centos/#install-using-the-repository
  2. 配置 daocloud 加速器

    参考 https://www.daocloud.io/mirror

  3. 配置 docker
    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
    4. python-docker-py
    1
    yum install -y python-docker-py

ntp、libvirt

1
yum install -y ntp
systemctl enable ntpd.service
systemctl start ntpd.service

kolla-ansible

  1. 安装

    1
    pip install kolla-ansible
    cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/kolla/
    cp /usr/share/kolla-ansible/ansible/inventory/* .
    2. 配置

    修改 /etc/kolla/globals.yml

    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"
    3. 生成集群各种密码
    1
    kolla-genpwd

    文件位置 /etc/kolla/passwords.yml , 可根据需要修改

  2. 检查环境

    1
    kolla-ansible -i <<inventory file>> bootstrap-servers
    5. build images

    两种方式:

    *   从 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 可查询到

  3. 部署

    修改 /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.sh
    1
    kolla-ansible post-deploy

    该文件位置在 etc/kolla

  4. 验证
    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 角色

部署

  1. 配置

    各个节点都需要安装基础的环境 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

    打上 label
    1
    parted /dev/vdb -s – mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1

    生成集群各种密码
    1
    kolla-genpwd

    文件位置 /etc/kolla/passwords.yml , 可根据需要修改

    编辑 multinode 文件,进行基本角色分配
    1
    [control]
    kolla1
    kolla2
    kolla3
    [network]
    kolla1
    kolla2
    kolla3
    [compute]
    kolla1
    kolla2
    kolla3
    [monitoring]
    kolla1
    kolla2
    kolla3
    [storage]
    kolla1
    kolla2
    kolla3
    2. 检测并部署
    1
    kolla-ansible -i multinode bootstrap-servers
    kolla-ansible prechecks -i multinode
    kolla-ansible deploy -i multinode
    3. 调整日志

    方便查询日志,可选步骤
    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 规则

参考