将Sonatype Nexus从VM迁移至K8s Pod:解决tar安装权限问题
解决Nexus Pod中安装tar或完成数据迁移的方案
方案1:以root身份进入容器安装tar
Nexus镜像默认以nexus非root用户运行,导致安装软件时权限不足,你可以切换到root用户执行安装:
- 先获取Nexus Pod的名称:
kubectl get pods | grep nexus - 以root身份进入Pod的shell:
kubectl exec -it <你的nexus-pod名称> --user root -- /bin/sh - 用microdnf安装tar:
microdnf install tar -y
安装完成后退出root shell,就可以正常使用kubectl cp或者容器内的tar命令来迁移数据了。
方案2:用临时容器(无需在Nexus容器内安装tar)
如果不想修改Nexus容器的环境,可以借助Kubernetes的临时容器功能(需K8s 1.23+版本),使用自带tar的镜像(比如busybox)来完成数据复制:
- 给目标Nexus Pod添加临时容器:
(kubectl debug -it <你的nexus-pod名称> --image=busybox:latest --target=nexus--target=nexus指定临时容器与Nexus主容器共享PID和挂载的volume,确保能访问/nexus-data目录) - 在本地终端执行命令,将本地数据复制到临时容器的
/nexus-data目录:
(kubectl cp /本地的nexus数据目录 <你的nexus-pod名称>:/nexus-data -c debug-c debug指定临时容器名称,默认是debug)
方案3:直接操作PVC(如果Nexus使用了持久化存储)
如果你的Nexus Pod挂载了PVC(持久化卷声明),可以直接将VM中的数据复制到PVC对应的存储后端:
- 若PVC使用的是NFS存储:直接将VM导出的数据复制到NFS服务器的对应共享目录下,Nexus Pod会自动读取到新数据
- 若使用其他存储类型(如Ceph、本地存储),可临时创建一个挂载相同PVC的Pod,用该Pod完成数据复制
内容的提问来源于stack exchange,提问作者user21050133
相关产品推荐
相关产品推荐

