Skip to content

Clustering Guide

PiVirt clustering enables multi-host orchestration with unified CLI control, distributed state management, shared storage pools, and live VM workload migration.

Terminal window
# Single node
pvcli cluster init --name dev-cluster
# Multi-node
pvcli cluster init --name prod-cluster --control-plane 3
Terminal window
# Generate join token
pvcli cluster token create --ttl 24h
# Join node
pvcli cluster join --token <token> --node-ip 10.0.1.11
Terminal window
# Add worker nodes
pvcli cluster node add --role worker --count 3
# Add specific node
pvcli cluster node add --name worker-04 --ip 10.0.1.24
Terminal window
# Drain node
pvcli cluster node drain worker-03
# Remove node
pvcli cluster node remove worker-03
Terminal window
# Cordon node
pvcli cluster node cordon worker-01
# Drain node
pvcli cluster node drain worker-01
# Uncordon after maintenance
pvcli cluster node uncordon worker-01
Terminal window
# Initialize with 3 control plane nodes
pvcli cluster init --name prod-cluster \
--control-plane 3 \
--etcd-members 3
cluster:
storage:
type: "iscsi"
multipath: true
fencing:
enabled: true
agent: "ipmi"
Terminal window
# Check current version
pvcli cluster get prod-cluster -o json | jq '.version'
# Upgrade
pvcli cluster upgrade --version v0.0.90 --strategy rolling
Terminal window
# Backup etcd
pvcli cluster backup create --name backup-2024-01-15
# Restore
pvcli cluster backup restore --name backup-2024-01-15
  • 3 nodes for small clusters
  • 5 nodes for large clusters
  • Ensures quorum
spec:
controlPlane:
antiAffinity: true
topologyKey: "kubernetes.io/hostname"
cluster:
fencing:
enabled: true
agent: "ipmi"
devices:
- name: "node-01-fence"
ip: "10.0.0.11"
Terminal window
# Check network connectivity
ping 10.0.1.10
# Check token validity
pvcli cluster token verify <token>
# Check logs
journalctl -u pivirt-agent -f
Terminal window
# Check etcd status
etcdctl endpoint health
# Restore from backup
pvcli cluster backup restore --name backup-2024-01-15