接着上一篇“ceph pv rbd动态挂载”写起。
docker 镜像里的ceph升级后,可以正常运行了,不过过了一段时间,再重新创建需要分配存储的文件,发现有出问题了。通过查看rbd-provisioner pod 上的log信息发现和原来报错一样,登陆到容器里后发现ceph的版本有还原回去了。
忽然想起来k8s中每个pod都是有生命周期的,对于用户来说,查看服务并没有中断或别的什么变化,但是你可以查看pod的name名称是有变化的。一旦重新生成个新pod那么里面的image也相应有动作,默认情况下image的拉取属性是always,也就是始终重新拉取,这样容器里的ceph版本就还原了。
//解决办法
1、修改rbd-provisioner.yaml文件,将拉取属性设置为如果本地有就不拉取
containers:
- name: rbd-provisioner
image: "quay.io/external_storage/rbd-provisioner:v15.2.13" //这里先暂时这么修改,这是后续要制作的镜像版本
imagePullPolicy: IfNotPresent
2、进入当前rbd-provisioner容器,对ceph进行升级。升级步骤和上节一样。
3、将当前容器制作为镜像和保存为本地文件
使用sudo docker ps 查看当前运行的容器ID
//制作镜像
//docker commit -m “” -a “” [CONTAINER ID] [给新的镜像命名]
docker commit ecab768154b1 quay.io/external_storage/rbd-provisioner:v15.2.13
然后使用sudo docker images查看就可以看到制作的镜像文件了
//将镜像保存到本地
//docker save -o 要保存的文件名 要保存的镜像

本文讲述了在K8s中遇到的RBD-Provisioner镜像回退问题,通过修改镜像拉取策略、升级容器内ceph并持久化解决方案,确保服务稳定。
最低0.47元/天 解锁文章
3593

被折叠的 条评论
为什么被折叠?



