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 reboot

Configuration#

Kuberblue settings are configured via settings.yaml:

kuberblue:
  install_dir: "/usr/immutablue-build-kuberblue"
  config_dir: "/etc/kuberblue"
  uid: 970
SettingDefaultDescription
.kuberblue.install_dir/usr/immutablue-build-kuberblueBuild artifacts directory
.kuberblue.config_dir/etc/kuberblueConfiguration directory
.kuberblue.uid970System user UID

Cluster Setup#

Initialize a New Cluster#

# Initialize the cluster
kuberblue init

# Get kubeconfig
kuberblue get-config

Join 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:

CommandDescription
kuberblue initInitialize a new cluster
kuberblue resetReset/destroy the cluster
kuberblue get-configCopy kubeconfig to user
kuberblue put-configDeploy kubeconfig to cluster
kuberblue untaint-masterAllow pods on master node
kuberblue deployDeploy applications

Justfile Commands#

# Via immutablue command
immutablue kuberblue_init
immutablue kuberblue_reset
immutablue kuberblue_get_config

Systemd Services#

ServiceDescription
kuberblue-onboot.serviceCluster 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 variables

Networking#

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-master

Multi-Node Cluster#

  1. Initialize master node
  2. Get join command from master
  3. 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 init

Pods stuck in Pending#

# Check node status
kubectl get nodes

# Check pod events
kubectl describe pod <pod-name>

See Also#