部署本地仓库 Docker Registry
kolla-ansible -i all-in-one bootstrap-servers
会改变 docker 的网络配置,需要删除桥接配置,即启用桥接,否则构建镜像的过程中无法下载依赖库。
另外,还可以添加国内的镜像源,最终 /etc/docker/daemon.json 配置文件的内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "registry-mirrors": [ "http://hub-mirror.c.163.com" ], "insecure-registries": [ "10.112.247.246:4000" ], "iptables": false, "log-opts": { "max-file": "5", "max-size": "50m" } } |
修改配置文件后需要重启 docker 服务。
1 2 3 4 5 6 7 8 9 10 |
# docker 网络配置 sudo vim /etc/docker/daemon.json # 删除 bridge: "none" # 重启 docker 服务 sudo service docker restart # 将当前用户加入 docker 用户组 sudo usermod -aG docker $USER newgrp docker |
运行本地镜像仓库,由于 Keystone 使用了 5000 端口,因此这里指定映射到 4000 端口。
1 2 3 4 5 6 7 |
# 本地镜像仓库 docker run -d \ --name registry \ --restart=always \ -p 4000:5000 \ -v registry:/var/lib/registry \ registry:2 |
使用本地仓库
使用 tox 创建配置文件
1 2 3 4 5 6 7 8 9 |
# 安装 tox pip install tox # 生成配置文件 cd kolla tox -e genconfig # 拷贝配置文件 sudo cp etc/kolla/kolla-build.conf /etc/kolla/ |
下载 Keystone 源码,指定 Victoria 版本
1 2 3 |
# 下载源码 cd git clone https://github.com/openstack/keystone.git --branch stable/victoria --single-branch |
修改配置文件,假设本机 ip 为 10.1.0.240,openstack_release 有要求(随便填会出错)
- 默认构建的镜像被打上了
12.1.0
的标签,这里的 openstack_release 需要指定 registry 中存在的标签
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# 配置源码路径 sudo vim /etc/kolla/kolla-build.conf #[DEFAULT] #base = ubuntu #network_mode = host #push = true #registry = 10.1.0.240:4000 #[keystone-base] #type = local #location = /home/jck/keystone # 使用本地仓库 sudo vim /etc/kolla/globals.yml #docker_registry: 10.1.0.240:4000 #openstack_release: "12.1.0" |
构建镜像,使用 &>
将输出重定向到文件中
1 2 3 4 5 6 7 8 |
# 源码构建 Keystone 镜像 kolla-build -t source --config-file /etc/kolla/kolla-build.conf keystone &> keystone-build.txt # 列出镜像 docker images # 查看本地仓库 curl -X GET 10.1.0.240:4000/v2/_catalog |
构建完毕后,使用新镜像更新当前环境
1
|
kolla-ansible upgrade
|
其他
kolla-ansible 相关操作
1 2 3 4 5 6 7 8 9 10 11 |
# 删除容器 kolla-ansible/tools/cleanup-containers # 删除所有镜像 kolla-ansible/tools/cleanup-images --all # 拉取镜像 kolla-ansible pull # 更新环境 kolla-ansible upgrade |
相关文件
1 2 3 4 5 6 7 8 9 10 |
# dockerfile 相关 ~/kolla/docker # jinjia2 模板文件 /etc/kolla # 镜像配置文件 # 配置文件 /etc/kolla/kolla-build.conf /etc/kolla/globals.yml # 日志文件 /var/log/kolla/ # 链接 /var/lib/docker/volumes/kolla_logs/_data/ |
清除容器重新部署,通常不用 ./kolla-ansibletools/cleanup-host
1 2 3 4 |
./kolla-ansible/tools/cleanup-containers kolla-ansible -i ./all-in-one prechecks kolla-ansible -i ./all-in-one deploy kolla-ansible post-deploy |
问题与解决
nova-compute 注册失败
查看日志信息说是连接不上 libvirt
配置并重启 libvirt
1 2 3 4 5 6 7 8 9 10 |
sudo vim /etc/libvirt/libvirtd.conf #listen_tls = 0 #listen_tcp = 1 #auth_tcp = "none" #tcp_port = "16509" systemctl restart libvirtd #sudo chmod -R 777 /var/run/libvirt ps aux | grep libvirtd |
重新部署
1 2 3 4 5 6 7 8 |
# 删除容器 kolla-ansible/tools/cleanup-containers # 部署 kolla-ansible -i ./all-in-one deploy # 重新生成认证文件 kolla-ansible post-deploy |
不安装和配置 libvirt,且 /etc/kolla/globals.yml 也不配置 nova_compute_virt_type
也能正常执行。
安装完毕后注释该配置,重新 upgrade 正常,不注释貌似也行(玄学)。
官方指出,由于技术原因,配置 qemu 后使用 kolla-ansible upgrade
可能出错。
数据库迁移出错
尝试多次无果,回退快照后执行 kolla-ansible upgrade
没有遇到该问题,清除后重新部署应该也可以。
1
|
ERROR keystone migrate.exceptions.InvalidRepositoryError: /var/lib/kolla/venv/lib/python3.8/site-packages/keystone/common/sql/migrate_repo
|
请求超时
再次执行 kolla-ansible upgrade
没有再遇到该问题。实验过程中发现时不时就会请求超时,通常就重复执行指令,再不行就清除后重新部署。