介绍
Kolla的使命是为运营OpenStack云提供生产环境的容器和部署工具。可使用社区最佳实践进行扩展、快速、可靠和可升级。使用Ansible部署Docker容器运行OpenStack,并提供多种日志记录和监控服务配置。
可选:了解Ansible概念
参考网址
官方Wiki:Kolla - OpenStack(openstack.org)
kolla文档:kolla 13.1.0.dev90 documentation (openstack.org)
镜像列表:kolla’s Profile | Docker Hub
高可用配置参考:HAProxy Guide — kolla-ansible 13.1.0.dev199 文档 (openstack.org)
kolla支持镜像列表: kolla 13.1.0.dev99 documentation (openstack.org)
快读入门:kolla-ansible 13.1.0.dev199 文档 (openstack.org)
快速部署ALL-IN-ONE节点
节点配置要求
须满足以下最低硬件配置:
- 2 个网络接口(网卡)
- 8GB 内存
- 40GB 磁盘空间
实验环境:
- 系统:Centos7.6-1810 或 Centos8
- CPU:8核
- 内存:16G
- 网卡:eth0、eht1
- 硬盘:40G(系统盘),100G(cinder服务使用)
安装Python虚拟环境
sudo yum install python-virtualenv -y
sudo dnf install python3-virtualenv -y
创建虚拟环境并激活
virtualenv /path/to/virtualenv
source /path/to/virtualenv/bin/activate
alias mypip='source /path/to/virtualenv/bin/activate'
echo "alias mypip='source /path/to/virtualenv/bin/activate'" >> ~/.bash_profile
更新pip版本 保存最新的pip版本
pip install -U pip -i https://mirrors.aliyun.com/pypi/simple/
pip install -U setuptools -i https://mirrors.aliyun.com/pypi/simple/
安装Ansible
pip install 'ansible>=4,<6' -i https://mirrors.aliyun.com/pypi/simple/
安装Kolla-ansible
pip install kolla-ansible -i https://mirrors.aliyun.com/pypi/simple/
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla
cp -r /path/to/virtualenv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
cp /path/to/virtualenv/share/kolla-ansible/ansible/inventory/* .
设置python环境
对于all-in-one虚拟环境中的场景,将以下内容添加到清单的最开始:
vi ./all-in-one
localhost ansible_python_interpreter=python
如果采用虚拟环境的python 报错 则修改真实环境的python 路径
配置Ansible
mkdir /etc/ansible/
cat > /etc/ansible/ansible.cfg << EOF
[defaults]
# 跳过首次连接验证提示
host_key_checking=False
# 利用管道替换默认的拷贝模块
pipelining=True
# 执行时的并发数
forks=100
log_path=ansible.log
gathering = smart
fact_caching = jsonfile
fact_caching_connection = ansible-facts
EOF
安装 Ansible Galaxy 要求
安装 Ansible Galaxy 依赖项(Yoga 版本以后):
kolla-ansible install-deps
准备初始配置
编辑kolla的清单文件,我们在其中指定主机及其所属的组。我们可以使用它来定义节点角色和访问凭据。
Kolla-Ansible附带了示例库存文件。它们之间的区别在于,前者已准备好在localhost上部署单节点OpenStack。如果需要使用单独的主机或多个节点,请编辑清单:all-in-one(单节点)、multinode(多节点)。
关于清单文件的更多信息
ansible -i all-in-one all -m ping
生成密码
部署时所使用的密码在 /etc/kolla/passwords.yml 文件中,此文件中密码为空,需要手动或随机生成密码填充此文件。
kolla-genpwd
配置globals.yml文件
/etc/kolla/globals.yml 是 Kolla-Ansible 的主配置文件。部署 Kolla-Ansible 需要指定以下配置
vim /etc/kolla/globals.yml
修改为以下配置
kolla_base_distro: "centos"
kolla_install_type: "binary"
network_interface: "eth0"
neutron_external_interface: "eth1"
kolla_internal_vip_address: "10.48.39.132"
enable_cinder: "yes"
cinder_volume_group: "cinder-volumes"
enable_cinder_backend_lvm: "yes"
本文章只说明最小化的服务安装,不涉及监控、对象存储、ceph等服务的安装,如果需要特殊配置请阅读kolla-ansible项目配置
注意:配置文件中的 keepalived_virtual_router_id 值不能与同一二层中的其他openstack相同,他的值在0-255之间。(Keepalived)虚拟路由的唯一id,在同一个网段里,不能有两个相同的id。
开始执行部署
安装依赖
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip install requests
pip install docker
pip install websocket-client
部署OpenStack
设置配置后,我们可以进入部署阶段。首先,我们需要设置基本的主机级依赖项,如 docker。
Kolla-Ansible提供了一个剧本,将在正确的版本中安装所有必需的服务。
以下假设使用清单。如果使用其他清单(如 multinode ),请相应地替换参数。
kolla-ansible -i ./all-in-one bootstrap-servers
kolla-ansible -i ./all-in-one prechecks
kolla-ansible -i ./all-in-one deploy
注意:在进行第二步命令时如果报错,请执行以下命令进行规避。
如果遇到版本冲突则先卸载 重新安装
deactivate
yum install epel-release -y
sudo dnf install python3-pip
sudo pip3 install -U pip
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip install requests
pip install docker
pip install websocket-client
mypip
部署结束
在上一步骤中第3小步在没有报错的情况下自动退出则代表部署完成,接下来对如何使用做一些说明:
yum install -y centos-release-openstack-train
yum install -y python-openstackclient
kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh
以及简单的创建示例,比如网络、云主机等
注意:需要将命令中的IP、网段、镜像文件替换为自己的环境配置
openstack network create --external --provider-physical-network physnet1 --provider-network-type flat public1
openstack network create --provider-network-type vxlan demo-net
openstack router create demo-router
openstack subnet create --subnet-range 10.0.0.0/24 --network demo-net --gateway 10.0.0.1 --dns-nameserver 8.8.8.8 demo-subnet
openstack subnet create --no-dhcp --allocation-pool start=10.47.174.150,end=10.47.174.200 --network public1 --subnet-range 10.47.160.0/20 --gateway 10.47.160.1 public1-subnet
openstack router set --external-gateway public1 demo-router
openstack router add subnet demo-router demo-subnet
openstack image create --disk-format qcow2 --container-format bare --public --property os_type=linux --file ./cirros-0.5.2-x86_64-disk.img cirros0.5.2
openstack flavor create --id 1 --ram 512 --disk 1 --vcpus 1 m1.tiny
openstack flavor create --id 2 --ram 2048 --disk 20 --vcpus 1 m1.small
openstack flavor create --id 3 --ram 4096 --disk 40 --vcpus 2 m1.medium
openstack flavor create --id 4 --ram 8192 --disk 80 --vcpus 4 m1.large
openstack flavor create --id 5 --ram 16384 --disk 160 --vcpus 8 m1.xlarge
openstack quota set --instances 40 $(openstack project list | awk '/ admin / {print $2}')
openstack quota set --cores 40 $(openstack project list | awk '/ admin / {print $2}')
openstack quota set --ram 96000 $(openstack project list | awk '/ admin / {print $2}')
openstack server create --image cirros0.5.2 --flavor m1.tiny --network demo-net demo1
ADMIN_PROJECT_ID=$(openstack project list | awk '/ admin / {print $2}')
ADMIN_SEC_GROUP=$(openstack security group list --project ${ADMIN_PROJECT_ID} | awk '/ default / {print $2}')
openstack security group rule create --ingress --ethertype IPv4 --protocol icmp ${ADMIN_SEC_GROUP}
openstack security group rule create --ingress --ethertype IPv4 --protocol tcp --dst-port 22 ${ADMIN_SEC_GROUP}
openstack security group rule create --ingress --ethertype IPv4 --protocol tcp --dst-port 8000 ${ADMIN_SEC_GROUP}
openstack security group rule create --ingress --ethertype IPv4 --protocol tcp --dst-port 8080 ${ADMIN_SEC_GROUP}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)