OpenStack-实践2-.Kolla 容器化部署Openstack

时间:2024-02-23 18:21:24

1.集群架构

 
其中e1,e2,e3 表示网卡。 
e1 所在网络为管理网。 
e2 为vm对外通信网卡,无需配置网络协议和ip地址:

 
BOOTPROTO=none

DEVICE=eth1

HWADDR=fa:16:3e:38:20:88

ONBOOT=yes

TYPE=Ethernet

USERCTL=no

....

  

e3所在网络为osd集群通信网络 
备注:操作系统为centos7.4 最小化安装

 

2. kolla容器化部署openstack及ceph集群

2.1 基础环境

以下操作在部署机执行
#1.epel
yum install epel-release
#2.防火墙
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld
sed -i\'\' \'s,SELINUX=enforcing,SELINUX=disabled,g\' /etc/selinux/config
setenforce 0
3.修改/etc/hosts 及配置免秘钥登录
10.0.100.11 controller1
10.0.100.12 controller2
10.0.100.13 controller3
10.0.100.21 network1
10.0.100.22 network2
10.0.100.31 compute1
10.0.100.32 compute2
10.0.100.33 compute3
10.0.100.34 compute4
10.0.100.35 compute5
ssh-keygen
ssh-copy-id controller1
....
#4 python及pip环境
yum install -y python2-pip
cat <<EOF> /etc/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
EOF
yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python git ansible git
#5.准备docker环境
yum remove docker docker-common docker-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i \'s+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+\' /etc/yum.repos.d/docker-ce.repo
yum clean all
yum makecache fast
yum install docker-ce
mkdir /etc/docker/
cat << EOF>/etc/docker/daemon.json
{
"registry-mirrors": ["https://iby0an85.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl start docker
6.安装kolla-ansible
yum install python2-pip
cat <<EOF> /etc/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
EOF
pip install -U pip
pip install -U \'ansible>=2.2.0\'
yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python git
git clone https://github.com/openstack/kolla-ansible -b stable/rocky
cd kolla-ansible
pip install -r requirements
python setup.py install
7.启动registry(此处我已将rocky的版本的registry打包
tar -xzvf rocky.tar.gz -C /
docker run -d -p 4000:5000 -v /opt/registry/:/var/lib/registry/ --restart=always --name=registry registry:2
# 查看容器运行
docker ps
docker inspect containerID

2.2 部署openstack/ceph集群

1.准备配置文件
cd /root/kolla-ansible
cp etc/kolla/globals.yml /etc/kolla/
cp etc/kolla/passwords.yml /etc/kolla/
kolla-genpwd
# 2. 修改admin密码:
vim /etc/kolla/passwords.yml
keystone_admin_password: otvcloud
#3.编辑 globals.yml(重点 基本要掌握每个参数的意思)
vim /etc/kolla/globals.yml
###############
# Valid options are [ COPY_ONCE, COPY_ALWAYS ]
config_strategy: "COPY_ALWAYS"
# Valid options are [\'centos\', \'debian\', \'oraclelinux\', \'rhel\', \'ubuntu\']
kolla_base_distro: "centos"
# Valid options are [ binary, source ]
kolla_install_type: "binary"
# Valid option is Docker repository tag
openstack_release: "rocky"
# Location of configuration overrides
node_custom_config: "/etc/kolla/config"
kolla_internal_vip_address: "10.100.2.11" # 外网接口
管理网一个没有使用ip
docker_registry: "10.100.2.10:4000" # 上面构建的docker registy的ip地址
docker_namespace: "lokolla"
network_interface: "e1" # 管理网口
api_interface: "{{ network_interface }}"
storage_interface: "{{ network_interface }}"
cluster_interface: "e3" # osd集群网络
tunnel_interface: "{{ network_interface }}"
neutron_external_interface: "e2" # 外部通信网卡
neutron_plugin_agent: "openvswitch"
keepalived_virtual_router_id: "51"
openstack_logging_debug: "True"
# Valid options are [ none, novnc, spice, rdp ]
nova_console: "novnc"
# OpenStack services can be enabled or disabled with these options
enable_central_logging: "yes"
enable_ceph: "yes"
enable_chrony: "yes"
enable_cinder: "yes"
enable_cinder_backup: "yes"
enable_collectd: "yes"
enable_haproxy: "yes"
enable_heat: "no"
enable_horizon: "yes"
enable_influxdb: "yes"
enable_neutron_dvr: "yes"
enable_neutron_agent_ha: "yes"
# keystone
keystone_token_provider: \'fernet\'
fernet_token_expiry: 86400
# glance
glance_backend_ceph: "yes"
glance_enable_rolling_upgrade: "no"
#cinder
cinder_backend_ceph: "yes"
cinder_backup_driver: "ceph"
#nova
nova_backend_ceph: "yes"
# Valid options are [ qemu, kvm, vmware, xenapi ]
nova_compute_virt_type: "kvm"
#tenant network
neutron_tenant_network_types: "vlan"
#4.编辑multinode
cp /root/kolla-ansible/ansible/inventory/multinode /root/
vim multinode
[control]
# These hostname must be resolvable from your deployment host
controller1
controller2
controller3
[network]
network1
network2
[external-compute]
compute1
compute2
....
[monitoring]
controller1
[storage]
compute1
compute2
.....
5.标记osd节点 使用bluestore,此处在osd节点上执行
例如compute1节点 的osd节点
parted disk -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_BS 1 -1 # filestore 则为 KOLLA_CEPH_OSD_BOOTSTRAP
parted disk -s -- print
6. 初始化环境
kolla-ansible -i multinode bootstrap-servers
#除部署机之外所有机器reboot
reboot
kolla-ansible -i multinode prechecks #检测
kolla-ansible -i deploy # 开始部署
kolla-ansible -i post-deploy # 生成admin-openrc.sh
cp /etc/kolla/admin-openrc.sh admin-openrc.sh
chmod +x admin-openrc.sh

2.3 验证

安装客户端
yum install centos-release-openstack-pike
yum makecache fast
yum install -y python-openstackclient
cp /root/kolla-ansible/tools/init-runonce /root/
vim init-runonce
# 注释掉 demo网络和创建路由部分, 外部网络创建flat改成vlan模式
openstack network create --external --provider-physical-network physnet1 \
--provider-network-type vlan public1
openstack subnet create --no-dhcp \
--allocation-pool ${EXT_NET_RANGE} --network public1 \
--subnet-range ${EXT_NET_CIDR} --gateway ${EXT_NET_GATEWAY} public1-subnet
#openstack network create --provider-network-type vxlan demo-net
#openstack subnet create --subnet-range 172.17.6.0/24 --network demo-net \
--gateway 172.17.6.1 --dns-nameserver 8.8.8.8 demo-subnet
#openstack router create demo-router
#openstack router add subnet demo-router demo-subnet
#openstack router set --external-gateway public1 demo-router
To deploy a demo instance, run:
openstack server create \\
--image ${IMAGE_NAME} \\
--flavor m1.tiny \\
--key-name mykey \\
--network public1 \\
vm1
# ceph 验证
controller1:
docker exec ceph_mon ceph -s
# volume 验证
openstack volume create --size 1 volume1
openstack server vm1 volume

 

      也可以关注微信公众号:启航学城,干货满满,扫码关注:

 也欢迎加入OpenStack技术交流群,进行技术交流。