Skip to main content
RunBook Academy

CephX · Manager DaemonsManager Daemons

The orchestrator — how ceph orch drives cephadm

Intermediate⏱ ~16 mincephcephadm

What you'll learn

  • Explain the orchestrator abstraction and its cephadm backend
  • Use ceph orch for host, service, and daemon management
  • Understand reconciliation and its consequences
  • Diagnose orchestrator problems

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

ceph orch is how daemons are created, moved, upgraded, and removed on a cephadm cluster. It is declarative, which means it keeps acting after you stop typing — a property that is useful when understood and surprising when not.

The command surface

ceph orch host ls
ceph orch host add ceph-07 10.0.1.17 --labels osd
ceph orch host label add ceph-07 mon

ceph orch ls                              # services
ceph orch ps                              # daemons
ceph orch ps --daemon-type osd --host ceph-07

ceph orch apply mon --placement="3 ceph-01 ceph-02 ceph-03"
ceph orch apply -i service-spec.yaml
ceph orch daemon restart osd.12
ceph orch daemon rm mgr.ceph-02.abcdef
ceph orch upgrade start --ceph-version 20.2.1
ceph orch upgrade status

Two levels matter: services are the declared intent, daemons are the running instances. ceph orch ls shows what should exist; ceph orch ps shows what does.

Reconciliation

The orchestrator continuously compares declared services against running daemons and acts on the difference:

flowchart LR
  S[Service spec] --> R{Reconcile}
  D[Running daemons] --> R
  R -->|"missing"| C[Create daemon]
  R -->|"extra"| X[Remove daemon]
  R -->|"matches"| N[No action]

So removing a daemon that a service still declares causes it to be recreated. To remove something permanently, change or remove the service, not the daemon.

ceph orch rm mon              # removes the service declaration
ceph orch daemon rm mon.x     # removes one daemon; may be recreated

Service specifications

service_type: rgw
service_id: default
placement:
  hosts:
    - ceph-04
    - ceph-05
spec:
  rgw_frontend_port: 8080
networks:
  - 10.0.2.0/24
ceph orch apply -i rgw-spec.yaml
ceph orch ls --service-type rgw --export

--export prints the current spec, which is how you capture what a cluster is actually declaring — worth storing in version control.

Working with it

  • Keep service specs in version control and apply from files rather than command-line flags, so the intent is reviewable.
  • Prefer explicit host lists for monitors and managers, where placement is a design decision.
  • Use labels and patterns for things where “wherever it fits” is genuinely correct, such as node-exporter.
  • Check ceph orch ls before adding hosts, so you know what will be provisioned automatically.

Quiz

Knowledge check · 4 questions

  1. Q1. An operator removes a daemon with ceph orch daemon rm and it reappears a few minutes later. Why?

  2. Q2. Labelling a host a year after a placement spec was applied is enough to make the orchestrator deploy that daemon on it, with no command run against the spec.

  3. Q3. ceph orch commands return Scheduled but nothing happens for an hour. Diagnose.

    A cephadm cluster of 40 hosts. ceph orch apply for a new RGW service returned successfully an hour ago and no RGW daemon exists. ceph orch ps shows no new daemon. Cluster health is HEALTH_WARN for an unrelated degraded PG. An upgrade was attempted last week and was cancelled partway through.

  4. Q4. Explain the difference between services and daemons in the orchestrator model, and why specs belong in version control.

Passing score: 75%. Answers are checked in this browser.

Production discipline

Treat service specs as policy documents kept in version control and applied from files, since they keep acting long after the command returns. Use explicit host lists for monitors and managers where placement is a failure-domain decision, and reserve labels and counts for daemons where “wherever it fits” is genuinely right. When the orchestrator appears stalled, check ceph orch status for a paused module before anything else — a cancelled upgrade is the usual cause.

Cross-course references

  • Ceph: Part XLIX (cephadm) for the full deployment surface.
  • Ceph: Part XCVIII (Software Upgrades) for orchestrator-driven upgrades.
  • Ceph: Part XCI (Adding Storage Nodes) for host addition in practice.