部署OpenStack(Kolla)


2023年11月17日 16:18     admin

准备工作(模拟all-in-one部署)

1、配置好网卡IP(至少2张网卡)

注意:vm模拟环境(1张nat+1张桥接网卡)

  1. nat网卡(ens192):172.16.2.101
  2. 桥接网卡(ens33):10.51.40.211

2、修改主机名

  1. hostnamectl set-hostname yunwei-101

3、关闭防火墙、NM服务、selinux

  1. systemctl stop firewalld && systemctl disable firewalld
  2. systemctl stop NetworkManager && systemctl disable NetworkManager
  3. setenforce 0
  4. vi /etc/sysconfig/selinux
  5. 改为disabled

4、把节点IP写入hosts

  1. vi /etc/hosts

5、做主机信任

  1. #创建SSH免密登陆key
  2. ssh-keygen -t rsa(一直按回车)

  1. #分发key
  2. ssh-copy-id yunwei-101

6、修改DNS

  1. vi /etc/resolv.conf
  2. nameserver 114.114.114.114

部署节点(控制)

安装使用工具

  1. yum -y install vim wget net-tools

安装ansible

  1. yum -y install epel-release
  2. yum -y install python3 python-pip

配置国内的pip源

  1. mkdir ~/.pip
  2. cat << EOF > ~/.pip/pip.conf
  3. [global]
  4. index-url = https://mirrors.aliyun.com/pypi/simple/
  5. [install]
  6. trusted-host=mirrors.aliyun.com
  7. EOF

升级pip

  1. pip3 install --upgrade pip

安装ansible

  1. pip3 install ansible==2.9.0

修改ansible配置文件

  1. mkdir /etc/ansible/
  2. cat << EOF > /etc/ansible/ansible.cfg
  3. [defaults]
  4. host_key_checking=False
  5. pipelining=True
  6. forks=100
  7. EOF

查看ansible版本

  1. ansible --version

部署节点(所有)

安装DOCKER

卸载旧版本 Docker

  1. yum remove docker docker-common docker-selinux docker-engine

安装软件包

  1. yum install -y yum-utils device-mapper-persistent-data lvm2

添加 Docker yum源

  1. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  2. Loaded plugins: fastestmirror
  3. adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
  4. grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
  5. repo saved to /etc/yum.repos.d/docker-ce.repo

安装 Docker (直接yum按照docker-ce即可)

  1. yum -y install docker-ce-20.10.5

运行 DOCKER

  1. systemctl enable docker
  2. systemctl restart docker
  3. systemctl status docker

配置docker共享挂载


所谓共享挂载即同一个目录或设备可以挂载到多个不同的路径并且能够保持互相之间的共享可见性,类似于 mount —shared。在OpenStack for Kolla 中,主要解决 Neutron 的 namespace 在不同 container中得以保持实效性的问题。


  1. mkdir -p /etc/systemd/system/docker.service.d
  2. cat << EOF > /etc/systemd/system/docker.service.d/kolla.conf
  3. [Service]
  4. MountFlags=shared
  5. EOF
  6. systemctl daemon-reload && systemctl restart docker && systemctl status docker

配置docker镜像加速器

  1. mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4. "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"],
  5. "registry-mirrors": ["https://25ieqbb3.mirror.aliyuncs.com"]
  6. }
  7. EOF
  8. sudo systemctl daemon-reload && systemctl restart docker

安装kolla-ansible

  1. pip3 install kolla-ansible==9.3.0

复制kolla-ansible相关配置文件

  1. cp -r /usr/local/share/kolla-ansible/etc_examples/kolla /etc/
  2. cp /usr/local/share/kolla-ansible/ansible/inventory/multinode /etc/kolla/
  3. ls /etc/kolla/
  4. 实现效果:
  5. ls /etc/kolla
  6. globals.yml multinode passwords.yml

自动生成各服务的密码文件

  1. kolla-genpwd

修改keystone和数据库的密码(163行)

  1. vim /etc/kolla/passwords.yml
  2. #注:这是登录 Dashboard,admin 使用的密码,你可以根据自己需要进行修改。密码前注意空格

修改全局配置文件globals.yml

  1. vim /etc/kolla/globals.yml

  1. kolla_base_distro: "centos"
  2. kolla_install_type: "binary"
  3. openstack_release: "train"
  4. node_custom_config: "/etc/kolla/config"
  5. kolla_internal_vip_address: "172.16.2.102"--->不存在主机的IP地址
  6. docker_namespace: "kolla"
  7. network_interface: "eth0"--->管理网络出口网卡
  8. api_interface: "{{ network_interface }}"
  9. neutron_external_interface: "eth1"--->外部网络网卡
  10. neutron_plugin_agent: "openvswitch"
  11. enable_haproxy: "yes"
  12. enable_ceph: "no"
  13. enable_chrony: "no"
  14. enable_cinder: "yes"
  15. enable_grafana: "yes"
  16. enable_heat: "no"
  17. enable_mariabackup: "yes"
  18. enable_neutron_dvr: "yes"
  19. enable_neutron_fwaas: "yes"
  20. enable_neutron_qos: "yes"
  21. enable_neutron_provider_networks: "yes"
  22. glance_backend_ceph: "no"
  23. glance_enable_rolling_upgrade: "no"
  24. cinder_backend_ceph: "no"
  25. cinder_backup_driver: "nfs"
  26. nova_backend_ceph: "no"
  27. prometheus_cmdline_extras: "-storage.local.retention 720h"
  28. nova_console: "novnc"
  29. nova_compute_virt_type: "kvm"
  30. enable_cinder_backup: "yes"
  31. enable_cinder_backend_nfs: "yes"
  32. enable_ceilometer: "yes"
  33. enable_gnocchi: "yes"
  34. enable_grafana: "yes"
  35. enable_ceilometer_ipmi: "yes"
  36. enable_horizon_zun: "{{ enable_zun | bool }}"
  37. enable_zun: "yes"
  38. enable_opendaylight: "yes"
  39. enable_opendaylight_qos: "yes"
  40. enable_opendaylight_l3: "yes"
  41. enable_horizon_fwaas: "{{ enable_neutron_fwaas | bool }}"
  42. enable_kuryr: "yes"
  43. kolla_dev_mode: "yes"
  44. heat_dev_mode: "yes"

修改multinode文件

  1. vim /etc/kolla/multinode
  2. 修改为所有节点的主机名或IP地址,根据hosts
  3. 我的主机名为:yunwei-101

注:如果主机数较多可以使用正则表达式;例如:


检查

  1. #检查multinode配置是否正确,实现ping通各个主机
  2. ansible -i /etc/kolla/multinode all -m ping

部署检查

  1. #替换为python3
  2. cp -f /usr/bin/pip3 /bin/pip2
  3. pip2.7 install --upgrade pip==20.3.4

  1. kolla-ansible -i /etc/kolla/multinode bootstrap-servers
  2. #这个命令是为了准备部署环境。它主要负责在目标服务器上安装必要的软件包,配置Docker,设置正确的内核参数,创建必要的目录结构等。简单来说,它为Kolla-Ansible的后续步骤做准备。

  1. kolla-ansible -i /etc/kolla/multinode prechecks
  2. #这个命令用于检查目标服务器是否满足Kolla-Ansible部署OpenStack的所有先决条件。它会检查各种硬件和软件条件,例如内存、磁盘空间、网络设置、操作系统版本等。如果所有检查都通过,那么你可以继续进行OpenStack的部署。如果有任何检查失败,你需要解决这些问题,然后再次运行prechecks命令,确保所有条件都满足。


开始部署

  1. kolla-ansible -i /etc/kolla/multinode deploy


资料

  1. https://blog.csdn.net/qq_45382565/article/details/126657144
  2. https://zhuanlan.zhihu.com/p/448434255
  3. https://blog.csdn.net/qq_26442553/article/details/127932169