Skip to main content

Changing Container Image for Running Cephadm Daemon

Problem

Change the container image for a single running cephadm daemon or downgrade the container image for a cephadm daemon.

Cephadm does not support upgrading daemons out of order, for good reason. However, if you need to change the container image for a running cephadm daemon, you can do so by editing the unit.run file on the host of the daemon.

Solution

This example is for an osd daemon, but the same applies to any cephadm daemon like the mgr or mon.

  1. Bring down the daemon systemctl stop ceph-fsid@osd.1.service
  2. Edit the unit.run on the host of the daemon located at /var/lib/ceph/fsid/osd.1 and change the CONTAINER_IMAGE variable to the new image.

Change it in both places CONTAINER_IMAGE= variable appears in the unit.run file.

Example of the command to change the image to my.new.image:tag when inside the daemon's directory:

sed -i 's|CONTAINER_IMAGE=[^ ]*|CONTAINER_IMAGE=my.new.image:tag|g' unit.run
  1. Start the daemon again systemctl start ceph-fsid@osd.1.service. This will also pull the image if it is not already present on the host.
$ ceph versions

{
"mon": {
"ceph version 18.2.6 (ff498e17d264a1a4d588c361cbce9cc65afa2327) reef (stable)": 3
},
"mgr": {
"ceph version 18.2.6 (ff498e17d264a1a4d588c361cbce9cc65afa2327) reef (stable)": 3
},
"osd": {
"ceph version 18.2.6 (ff498e17d264a1a4d588c361cbce9cc65afa2327) reef (stable)": 7,
"ceph version 18.2.5 (a5b0e13f9c96f3b45f596a95ad098f51ca0ccce1) reef (stable)": 1
},
"overall": {
"ceph version 18.2.6 (ff498e17d264a1a4d588c361cbce9cc65afa2327) reef (stable)": 14,
}
}