1. 程式人生 > >kolla 用docker部署openstack 裸機!

kolla 用docker部署openstack 裸機!

一、安裝好作業系統進行如下配置:

1.配置源:

加入docker 源

cat > /etc/yum.repos.d/docker.repo << EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

安裝EPEL源

yum install -y epel-release

二、安裝pip 並升級 pip

yum install python-pip
pip install -U pip
pip -V

三、安裝docker

yum install deltarpm -y
curl -sSL https://get.docker.io | bash

注意:這個命令將安裝docker最近的穩定版,但是請注意,Kolla釋出不與docker同步,所以有些地方阻止新版本docker的工作,docker 版本要>=1.0.0,檢視的命令為:

docker --version

修改docker檔案:這一步是必學要做的,否則在deploy的時候 會報錯:

# Create the drop-in
unit directory for docker.service mkdir -p /etc/systemd/system/docker.service.d # Create the drop-in unit file tee /etc/systemd/system/docker.service.d/kolla.conf <<-'EOF' [Service] MountFlags=shared EOF

重啟docker:

systemctl daemon-reload
systemctl restart docker

安裝docker-python:

yum install python-docker
-py 或者: pip install -U docker-py

安裝ntp

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

關閉libvirt

systemctl stop libvirtd.service
systemctl disable libvirtd.service

安裝ansible :

yum install -y ansible
或者:
pip install -U ansible  (需要先安裝依賴:“yum install -y python-devel libffi-devel git gcc python-setuptools openssl-devel”)

安裝kolla

安裝kolla依賴:

yum install -y python-devel libffi-devel git gcc python-setuptools openssl-devel

安裝kolla:

pip install kolla
cp -r /usr/share/kolla/etc_examples/kolla /etc/
git clone https://git.openstack.org/openstack/kolla
pip install -r kolla/requirements.txt -r kolla/test-requirements.txt
cd kolla
cp -r etc/kolla /etc/

安裝python 客戶端:

yum install python-devel libffi-devel openssl-devel gcc
yum install python-openstackclient python-neutronclient
或者
pip install -U python-openstackclient python-neutronclient

build 映象

pip install tox
tox -e genconfig
cp -rv etc/kolla /etc/
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf  ## 開啟ipv4轉發,不然build會報錯 !
sysctl -p
kolla-build --base centos --type source -p default

引數中的 -p default 是指定了只 build 主要的 image, 包括 : mariadb, rabbitmq, cinder, ceilometer, glance, heat, horizon, keystone, neutron, nova, swift 等 . 這些可以只生成的 kolla-build.conf 裡找到。

如果 Build 完成之後,使用 docker images 能看到所有已經 build 好的映象。

安裝(deploy)

依然是先修改配置檔案,與 Deploy 相關的主要是兩個配置檔案 /etc/kolla/passwords.yml 和 /etc/kolla/globals.yml。他們為 ansible 提供一些變數的設定。主要需要修改的是 globals.yml 檔案。修改後,其主要內容為 :

config_strategy: "COPY_ALWAYS"

kolla_base_distro: "centos"
kolla_install_type: "source"
kolla_internal_address: "10.2.0.254"

network_interface: "eth0"
neutron_external_interface: "eth1"
openstack_logging_debug: "true"

enable_cinder: "no"
enable_heat: "no"

kolla 使用一個名為 kolla-ansible 的封裝指令碼, 並提供以下幾個命令

./tools/kolla-ansible -h
Usage: ./tools/kolla-ansible COMMAND [options]

Options:
    --inventory, -i <inventory_path> Specify path to ansible inventory file
    --playbook, -p <playbook_path>   Specify path to ansible playbook file
    --keyfile, -k <key_file>         Specify path to ansible vault keyfile
    --help, -h                       Show this usage information
    --tags, -t <tags>                Only run plays and tasks tagged with these values

Commands:
    prechecks    Do pre-deployment checks for hosts
    deploy       Deploy and start all kolla containers
    post-deploy  Do post deploy on deploy node
    pull         Pull all images for containers (only pulls, no runnnig container changes)

可以使用 ./tools/kolla-ansible prechecks 來檢查一個機器是否滿足安裝條件。

使用 ./tools/kolla-ansible deploy 來開始正式安裝。安裝會很快,我機器上,幾分鐘就安裝完成了。

最後,使用 ./tools/kolla-ansible post-deploy 來生成 /etc/kolla/admin-openrc.sh 檔案用來載入認證變數。

檢視安裝後的狀態

IMAGE                                                  COMMAND                 NAMES
lokolla/centos-source-keystone:2.0.0                   "kolla_start"           keystone
lokolla/centos-source-horizon:2.0.0                    "kolla_start"           horizon
lokolla/centos-source-neutron-metadata-agent:2.0.0     "kolla_start"           neutron_metadata_agent
lokolla/centos-source-neutron-l3-agent:2.0.0           "kolla_start"           neutron_l3_agent
lokolla/centos-source-neutron-dhcp-agent:2.0.0         "kolla_start"           neutron_dhcp_agent
lokolla/centos-source-neutron-openvswitch-agent:2.0.0  "kolla_start"           neutron_openvswitch_agent
lokolla/centos-source-neutron-server:2.0.0             "kolla_start"           neutron_server
lokolla/centos-source-openvswitch-vswitchd:2.0.0       "kolla_start"           openvswitch_vswitchd
lokolla/centos-source-openvswitch-db-server:2.0.0      "kolla_start"           openvswitch_db
lokolla/centos-source-nova-compute:2.0.0               "kolla_start"           nova_compute
lokolla/centos-source-nova-libvirt:2.0.0               "kolla_start"           nova_libvirt
lokolla/centos-source-nova-conductor:2.0.0             "kolla_start"           nova_conductor
lokolla/centos-source-nova-scheduler:2.0.0             "kolla_start"           nova_scheduler
lokolla/centos-source-nova-novncproxy:2.0.0            "kolla_start"           nova_novncproxy
lokolla/centos-source-nova-consoleauth:2.0.0           "kolla_start"           nova_consoleauth
lokolla/centos-source-nova-api:2.0.0                   "kolla_start"           nova_api
lokolla/centos-source-glance-api:2.0.0                 "kolla_start"           glance_api
lokolla/centos-source-glance-registry:2.0.0            "kolla_start"           glance_registry
lokolla/centos-source-rabbitmq:2.0.0                   "kolla_start"           rabbitmq
lokolla/centos-source-mariadb:2.0.0                    "kolla_start"           mariadb
lokolla/centos-source-memcached:2.0.0                  "kolla_start"           memcached
lokolla/centos-source-keepalived:2.0.0                 "kolla_start"           keepalived
lokolla/centos-source-haproxy:2.0.0                    "kolla_start"           haproxy
lokolla/centos-source-kolla-toolbox:2.0.0              "/bin/sleep infinity"   kolla_toolbox
lokolla/centos-source-heka:2.0.0                       "kolla_start"           heka
lokolla/centos-source-rsyslog:2.0.0                    "kolla_start"           rsyslog

多數 container 裡是由 kolla_start 這個指令碼啟動起來的
由於 kolla 使用的是 –net=host 網路,所以沒有必要做埠對映
每個模組拆分成了多個 container, 如 nova 被拆分成了 nova_api, nova_libvirt, nova_conductor, nova_novncproxy, nova_compute 等多個 container。很好的遵守了一個容器一個程序的原則。