Kuberblue#
Kuberblue is the Kubernetes-ready variant of Immutablue, designed for running container orchestration workloads.
Overview#
Kuberblue includes everything needed to run a Kubernetes cluster:
- Pre-installed Kubernetes components (kubeadm, kubelet, kubectl)
- Container runtime (CRI-O)
- Networking components
- Automated cluster initialization
Installation#
sudo bootc switch ghcr.io/immutablue/kuberblue:latest
sudo rebootConfiguration#
Kuberblue settings are configured via settings.yaml:
kuberblue:
install_dir: "/usr/immutablue-build-kuberblue"
config_dir: "/etc/kuberblue"
uid: 970| Setting | Default | Description |
|---|---|---|
.kuberblue.install_dir | /usr/immutablue-build-kuberblue | Build artifacts directory |
.kuberblue.config_dir | /etc/kuberblue | Configuration directory |
.kuberblue.uid | 970 | System user UID |
Cluster Setup#
Initialize a New Cluster#
# Initialize the cluster
kuberblue init
# Get kubeconfig
kuberblue get-configJoin an Existing Cluster#
# Get join command from master node
kuberblue get-join-command
# On worker node
kuberblue join <token> <master-ip>Commands#
The kuberblue command provides cluster management:
| Command | Description |
|---|---|
kuberblue init | Initialize a new cluster |
kuberblue reset | Reset/destroy the cluster |
kuberblue get-config | Copy kubeconfig to user |
kuberblue put-config | Deploy kubeconfig to cluster |
kuberblue untaint-master | Allow pods on master node |
kuberblue deploy | Deploy applications |
Justfile Commands#
# Via immutablue command
immutablue kuberblue_init
immutablue kuberblue_reset
immutablue kuberblue_get_configSystemd Services#
| Service | Description |
|---|---|
kuberblue-onboot.service | Cluster initialization on boot |
Directory Structure#
/usr/immutablue-build-kuberblue/ # Build artifacts
/etc/kuberblue/ # Configuration
/usr/libexec/kuberblue/ # Scripts
├── kube_setup/ # Setup scripts
│ ├── kube_init.sh
│ ├── kube_reset.sh
│ ├── kube_get_config.sh
│ └── ...
├── setup/ # Boot scripts
└── variables.sh # Configuration variablesNetworking#
Kuberblue supports common CNI plugins:
- Flannel (default)
- Calico
- Cilium
Storage#
For persistent storage, consider:
- Local path provisioner
- NFS provisioner
- TrueBlue variant for ZFS-backed storage
Best Practices#
Single-Node Cluster#
For development or small deployments:
# Initialize
kuberblue init
# Allow workloads on master
kuberblue untaint-masterMulti-Node Cluster#
- Initialize master node
- Get join command from master
- Join worker nodes
Resource Limits#
Recommended minimums:
- Master: 2 CPU, 4GB RAM
- Worker: 2 CPU, 2GB RAM
Troubleshooting#
Cluster won’t initialize#
# Check kubelet status
systemctl status kubelet
# View kubelet logs
journalctl -u kubelet -f
# Reset and retry
kuberblue reset
kuberblue initPods stuck in Pending#
# Check node status
kubectl get nodes
# Check pod events
kubectl describe pod <pod-name>See Also#
- Immutablue Variants
- TrueBlue (ZFS) - For ZFS storage