kiac
Local Kubernetes on Apple's container framework - every node is its own lightweight VM. Metrics, storage, and LoadBalancer included.
What is it?
What it is
A tool for creating local Kubernetes clusters on Apple Silicon where each node is a lightweight virtual machine (VM) with its own kernel, providing hardware-grade isolation and real node behavior.
Why it exists
To address limitations of container-based Kubernetes setups (shared kernel, no real node failure testing) by using isolated VMs per node, enabling true node-level functionality like LoadBalancer services and node failures.
Who should use it
Apple silicon Mac developers needing realistic Kubernetes node isolation for testing features like node failure, LoadBalancer services, and per-node kernel settings.
Who should avoid it
Users without Apple silicon Macs, non-Kubernetes developers, or those requiring clusters on macOS versions below 15 (for single-node) or below 26 (for multi-node).
How it works
A quick walkthrough in plain English
How kiac works
Step 1 of 3
You interact with it
Open kiac, send a request, or connect it to your stack.
Features
Advantages
- Real isolation between nodes via hypervisor, not namespaces
- Accurate node failure simulation for testing
- Direct networking without port mapping or tunnels
- LoadBalancer functionality without additional setup
- Preconfigured observability and gateway tools
- Native Apple silicon optimization with container runtime
- No dependency on Docker or external VMs
- Idempotent cluster resumption after reboots
- Supports modern Kubernetes features (eBPF, Cilium, Gateway API)
- Lightweight VMs with minimal resource overhead
Disadvantages
- Requires Apple silicon Mac with macOS 26+ (multi-node)
- TCP connection issues after node restarts (vmnet limitation)
- Limited to Apple ecosystem (no Linux/Windows support)
- Relies on Apple's container runtime (no Docker compatibility)
- Kernel updates require manual intervention
- Single-node clusters have limitations on older macOS versions
Installation
native
brew install saiyam1814/tap/kiac go install github.com/saiyam1814/kiac@latest # From source git clone https://github.com/saiyam1814/kiac && cd kiac && make build
FAQ
What are the system requirements to run kiac?
kiac requires an Apple silicon Mac, macOS 26+ for multi-node clusters (single-node works on macOS 15 with limitations), apple/container 1.0.0+, and kubectl.
How do I create a multi-node Kubernetes cluster with kiac?
Use `kiac create cluster --name <cluster-name> --workers <number>` to create a cluster with one control plane and the specified number of worker nodes.
How does kiac achieve hardware-grade isolation for Kubernetes nodes?
Each node in kiac runs as its own lightweight virtual machine using Apple's container runtime, which provides a dedicated kernel, cgroups, and IP per node via the Virtualization.framework, ensuring isolation at the hypervisor level.
Can I use kiac with k3s instead of the default kubeadm distribution?
Yes, by specifying the `--distro k3s` flag when creating a cluster (e.g., `kiac create cluster --name quick --distro k3s --workers 1`).
How do I expose a service as a LoadBalancer in kiac?
kiac includes kiac-lb by default, which assigns a node IP to Services of type LoadBalancer. Simply expose your service with `kubectl expose deploy <name> --port=<port> --type=LoadBalancer` and it will get an external IP from the node's vmnet network.
How do I recover my kiac cluster after rebooting my Mac?
Run `kiac resume cluster --name <cluster-name>` to restart the node VMs and restore the control-plane IP configuration; this operation is idempotent.
Featured in Videos
YouTube tutorials and walkthroughs for kiac
Alternatives
Similar projects ranked by category, topics, and text overlap.