Operations¶
This section covers day-to-day operations for running Minecraft servers with the operator.
Overview¶
The Minecraft Operator automates most operational tasks:
- Version updates during maintenance windows
- Plugin compatibility resolution
- Graceful server shutdown
However, some situations require manual intervention.
Sections¶
-
Troubleshooting
Common issues and how to resolve them
Common Operations¶
Check Server Status¶
Check Plugin Status¶
View Server Logs¶
Force Update Check¶
Delete the server pod to trigger immediate reconciliation:
World Data
Deleting the pod is safe - world data is stored on PVC. The server will restart with the same data.
Manual RCON Access¶
Port-forward to RCON port:
Connect with an RCON client:
Access Web UI¶
Maintenance Tasks¶
Backup World Data¶
The operator supports built-in VolumeSnapshot backups. Enable them in your PaperMCServer spec:
When RCON is enabled, backups use RCON hooks (save-all/save-off/save-on) for data consistency. Without RCON, snapshots are crash-consistent only.
Trigger a manual backup:
kubectl annotate papermcserver survival mc.k8s.lex.la/backup-now="$(date +%s)" \
--namespace minecraft
List existing snapshots:
Pre-Update Backups
Set backup.beforeUpdate: true (default) to automatically create a snapshot before any server update.
Scale Down for Maintenance¶
# Scale down (stops the server)
kubectl scale statefulset survival --replicas=0 --namespace minecraft
# Scale back up
kubectl scale statefulset survival --replicas=1 --namespace minecraft
View Operator Logs¶
Filter by log level:
# Errors only
kubectl logs deployment/minecraft-operator \
--namespace minecraft-operator-system | grep '"level":"error"'
Monitoring¶
Prometheus Metrics¶
The operator exposes custom metrics at /metrics (port 8080):
| Metric | Type | Description |
|---|---|---|
minecraft_operator_reconcile_total | counter | Reconciliations by controller |
minecraft_operator_reconcile_errors_total | counter | Failed reconciliations |
minecraft_operator_reconcile_duration_seconds | histogram | Reconciliation latency |
minecraft_operator_plugin_api_requests_total | counter | Plugin API requests by source |
minecraft_operator_plugin_api_errors_total | counter | Failed plugin API requests |
minecraft_operator_plugin_api_duration_seconds | histogram | Plugin API latency |
minecraft_operator_solver_runs_total | counter | Solver invocations by type |
minecraft_operator_solver_errors_total | counter | Failed solver invocations |
minecraft_operator_solver_duration_seconds | histogram | Solver latency |
minecraft_operator_updates_total | counter | Update attempts (success/failure) |
Access metrics locally:
kubectl port-forward svc/minecraft-operator-controller-manager-metrics-service \
8080:8080 --namespace minecraft-operator-system
curl --insecure https://localhost:8080/metrics
Resource Status¶
Check conditions on resources:
Update Status¶
Check for pending updates:
kubectl get papermcserver survival --namespace minecraft \
--output jsonpath='{.status.availableUpdate}'
Plugin Compatibility¶
Check if updates are blocked:
kubectl get papermcserver survival --namespace minecraft \
--output jsonpath='{.status.updateBlocked}'
See Also¶
- Troubleshooting — Common issues and solutions
- Configuration — CRD reference