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。很好的遵守了一個容器一個程序的原則。