1、环境介绍
一台物理机ESXi系统,一个网口接的物理网络,ESXi上装3台虚拟机分别为kolla-1,kola-2,kola-3,每台虚拟机三个虚拟网卡,三个网口全部接入到esxi的标准交换机VM Network中去,每台服务器有4块盘,sda为系统盘,sdb和sdc为ceph的osd盘,sdd为ceph的journal盘。
ip地址
所有网关指向物理交换机172.16.130.1
172.16.130.0/24为管理网络和数据网络
10.0.0.0/24为ceph osd的同步网络。
2、kolla registry安装及build镜像
多节点的部署是需要本地的docker registry的,再准备一台虚拟机,由于docker.io被墙的原因无法下载image,我们这里采用是用国外的vps先build好镜像然后再拉过来,build镜像的具体操作如下:
(安装newton的一些软件版本要求如下:
a、安装epel源及一些依赖
b、安装docker及配置修改
c、修改/usr/lib/systemd/system/docker.service文件, 添加本地库地址,重启docker服务
d、下载代码到/opt目录
e、进入/opt/kola/,切换newton分支,安装kolla
f、开始build镜像
# kolla-build –b centos –t binary –p default
参数介绍:-b 指定build的镜像系统类型
-t binary为二进制安装 source为源码安装
-p 指定build哪些镜像默认为:chrony,cron,kolla-toolbox,glance,haproxy,heat,heka,horizon,keepalived,keystone,mariadb,memcached,neutron,nova,openvswitch,rabbitmq。
如果不指定-p 可以单独指定build某个,如:nova
g、build完可以看到本地的镜像:
# docker images
这里,我们可以把镜像保存下来,比如:
# docker save lokolla/centos-binary-haproxy >/opt/centos-binary-haproxy.tar
然后我们再把这个tar包下载到自己的本地,再load back。
# docker load
这样,我们的镜像就到本地来了。等所有的镜像都load back然后起本地的registry。
# docker run -d -p 4000:5000 --restart=always --name registry registry
最后将本地的imags都push至registry里去:
# docker tag 7f5595d85f41 172.16.50.187:4000/wangqi/centos-binary-haproxy:3.0.0 #打标签
# docker push 172.16.50.187:4000/wangqi/centos-binary-haproxy #push到本地registry
这样,一个可用的registry就装起来了。
接下来,部署kolla:
3、kolla部署准备
a、配置文件修改
将三台机器都按照上面安装kolla,然后3台互相免密码登录,编辑hosts文件,关闭防火墙和selinux
# cp -r /usr/share/kolla/etc_examples/kolla /etc/
# kolla-genpwd #自动填充密码文件 /etc/kolla/passwords.yml,这个文件里面的密码都可以指定,如
keystone_admin的密码,可以改为自定义
修改/etc/kolla/globals.yml文件:
编辑multinode文件,这个文件在/usr/share/kolla/ansible/inventory/可以找到模板, 如下 定义节点的角色:
b、ceph准备
在3台虚拟机的节点上,除去系统盘还有有其它3块硬盘,sdb、sdc、sdd
这里我们将sdb和sdc做为osd节点,sdd为日志节点。Kolla对ceph的osd及日志盘的识别是通过卷标来实现的,
如osd的卷标为KOLLA_CEPH_OSD_BOOTSTRAP,
journal的卷标为KOLLA_CEPH_OSD_BOOTSTRAP_J
格式化所有osd的磁盘,这里我们用ansible统一执行:
# ansible -i multinode all -m shell -a 'parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1'
# ansible -i multinode all -m shell -a 'parted /dev/sdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1'
格式所有journal的盘
# ansible -i multinode all -m shell -a 'parted /dev/sdd -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_J 1 -1'
新建/etc/kolla/config/ceph.conf,指定ceph的一些参数,如副本数:
1.[global]
2.osd pool default size = 1
3.osd pool default min size = 1
4、开始安装
先检查有无错误:
# kolla-ansible -i multinode prechecks
没有报错直接进行安装:
# kolla-ansible -i multinode deploy
直至安装完成
生成rc文件(生成的文件在/etc/kolla/下面):
# kolla-ansible -i multinode post-deploy
5、一般操作
a、日志的查看
kolla 3.0版本也就是newton版本的日志是通过heka来管理的,查询所有服务器的日志可以进入到这个容器里去:
# docker exec -it heka bash
或者也可以通过docker inspect查看heka容器在主机上的具体路径
# docker inspect heka
查看到与主机对应的路径为/var/lib/docker/volumes/kolla_logs/_data/
两种方法都可以
注意:在kolla4.0版本也就是Ocata版本里日志改为用fluentd来收集,为了与后面的kolla-kubernetes相兼容。
b、openstack 服务配置的修改,举例修改nova的virt_type为qemu
新建/etc/kolla/config/nova.conf
1.[libvirt]
2.virt_type=qemu
然后执行:
# kolla-ansible -i multinode reconfigure
最终命令执行完,配置修改完毕。
注意。ESXi的虚拟机端口组要把混杂模式和伪传输打开,不然后br-ex的网络出不去
出处:http://www.99cloud.net/html/2017/jiuzhouyuanchuang_0317/302.html