Docker部署的Nexus迁移至K8S
nexus版本为 3.28.1。
·
1.环境介绍
1.1 nexus版本
nexus版本为 3.28.1
docker pull sonatype/nexus3:3.28.1
1.2 kubernetes环境
这里的kubernetes集群采用的是阿里云的ACK容器服务,存储使用的是阿里云的NAS作为存储设备,采用PersistentVolumeClaim(存储声明)关联StorageClass(存储类),动态生成PersistentVolume(存储卷)来作为整个集群的数据持久化方案
1.3 数据迁移
1.找到docker挂载出来的nexus数据存放路径
这里是容器内nexus数据存放目录,如果没有将该目录挂载到docker宿主机目录的话需要将这一个目录整个备份出去,可以使用以下指令将docker容器内文件或目录同步到宿主机
docker cp <container_name>:/opt/sonatype/sonatype-work/nexus3 /nexus-data-bak
/opt/sonatype/sonatype-work/nexus3
2.压缩整个nexus数据目录便于迁移,数据量较大时可开启后台运行压缩命令
压缩大文件时建议使用 tar+ pigz 命令来进行压缩会降低压缩周期
也可以使用filezilla sftp桌面工具,将源服务器的数据目录下载到本机,再从本机上传到目标服务器
## blobs/ 代表要压缩的目录
## /temp-nexus/nexus_blobs_bak/nexus-blods-bak.tar.gz 代表要将压缩后的文件存放在那个路径以及压缩后的文件名
nohup tar -cvf - blobs/ |pigz > /temp-nexus/nexus_blobs_bak/nexus-blods-bak.tar.gz
1.4 数据恢复
1.找一台Linux服务器挂载K8S中关联的NAS卷
挂载地址及挂载命令可以去到阿里云NAS控制台查看
mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport xxxxx.cn-shanghai.nas.aliyuncs.com:/k8s/k8s-pod-pvc-xxxxx-xxx-xxxx-xxxxx-xxxxxxxx/nexus-data /temp_nexus/
2.将k8s部署的nexus pod副本数伸缩为0,并且去到nas中清空nexus数据目录
3.将压缩后的文件copy到k8s部署的nexus挂载的nas卷相应路径中解压
数据量大时可选择后台运行解压命令以免会话窗口断开,解压进程中断
4.解压后的目录层级如下
5.设置nexus目录权限(必要不然启动的时候会报错)
chown -hR 200 ./nexus-data/
6.给pod开启特权容器
7.启动k8s中部署的nexus pod
8.检查数据及账号权限
观察日志以及pod状态完全running后我们打开nexus访问地址,使用老nexus中的账号登录检查数据是否都在
账号能正常登录,老的数据都存在,然后手动上传个包试一下没问题就证明迁移成功了
更多推荐
已为社区贡献5条内容
所有评论(0)