After the first node is initialized in episode 4, it's time to add the other nodes with microcloud join. This episode dissects the multi-node scenario, the trust/join token mechanism between members, and how to verify all members with lxc cluster list, microceph status, and microovn status.

Your cloud already has a foundation: microcloud init in episode 4 formed the cluster from the first node. But a real cloud needs more than one node — it needs other members so HA, replication, and scheduling actually work. In episode 5 we add nodes with microcloud join, understand the trust mechanism between members, and verify the entire cluster.
Think of init as founding a company: one director (the first node) forms its legal entity. Join is like bringing in partners — each brings capital (OSD disks) and assets (compute/network), and everyone follows the same rules. Without enough members (at least 3 nodes), joint decisions — quorum — can't be reached.
On node-b and node-c, run the same command:
sudo microcloud joinJoin must run at the same time as the init session waiting on the first node (remember the "Waiting for other nodes to join" prompt from episode 4). The MicroCloud on the joining node will scan the network, find the node that's initializing, and offer itself as a member.
> Scanning for servers on the network...
Found: node-a (192.168.1.10) initializing a cluster
Join this cluster? (yes/no) [default=yes]After agreeing, the MicroCloud on the new node will ask the same storage and network questions as during init — select the empty disk dedicated to that node, and the correct underlay interface. Finally, on the first node, you'll see the list of peers requesting to join and be asked to approve them (or they're already trusted automatically via proactive trust on version 2.1+).
The ideal multi-node process:
microcloud init on node-a — choose storage/network, wait for peers.microcloud join on node-b — choose storage/network, agree to join.microcloud join on node-c — the same.node-a, confirm all peers — the cluster is complete.node-a [initializer] ──┐
node-b [join] ─────────┼──► LXD cluster (3 member)
node-c [join] ─────────┘ + Ceph OSD 3x + OVNEvery LXD node has its own certificate. When joining, the new node sends its certificate to the cluster; the cluster only "trusts" that node after:
Behind the scenes, this process generates a join token — a one-time token linking the new node's certificate to the LXD cluster. This is similar to an SSH handshake: the new node must prove its identity, and the cluster ensures only invited nodes join.
By default, MicroCloud discovers nodes via mDNS on the local network. For nodes on a different network (e.g., a separate edge site), MicroCloud supports remote peers — you can add a peer address manually so nodes don't need to be on the same subnet. This matters for cross-site cluster design (episode 14).
lxc cluster listThe output shows each member, its address, role, and status. In a 3-node cluster, one member becomes the leader (the database-leader role) holding the cluster's consistent database.
microceph statusMake sure all OSDs show HEALTH_OK or at least no OSD down. If an OSD from a newly joined node hasn't appeared, check that the empty disk was selected during the join.
microovn statusThe output shows the OVN cluster, its members, and the underlay interface in use. All nodes must be registered here.
microcloud statusThis command combines the LXD, Ceph, and OVN views into a single display — from now on this is your first "dashboard" (we level it up with Cluster Manager and Grafana in episodes 12 and 20).
Join doesn't have to happen at the same time as init. A running cluster can accept new nodes at any time:
sudo microcloud joinThe new node will find the existing cluster and join as an additional member. This is the foundation of scaling, which we cover fully in episode 11.
If a node fails to join (e.g., its disk isn't empty or the network is wrong), the cluster still forms from the nodes that succeeded. You can try joining that node again, or remove it from the peer list on the first node.
Warning
Don't run microcloud join twice at once on the same node, and make sure the join completes (don't Ctrl-C it) until the verification prompt appears. A join interrupted halfway can leave a dangling certificate in the cluster.
lxc cluster list: check the logs with snap logs microcloud on the joining node (episode 16).Key takeaways:
microcloud join on other nodes merges them into the initialized cluster.lxc cluster list, microceph status, microovn status, and microcloud status.In the next episode, we'll dissect storage: MicroCeph — how OSDs form from empty disks, the RBD pool for instance block devices, CephFS for files, and RGW for S3 objects, replication for HA, microceph disk add, placement groups, and optional disk encryption. This is the heart of your cloud's data.