k3s is not a fork of Kubernetes or a stripped-down imitation — it is a CNCF-certified, fully conformant Kubernetes distribution that happens to ship as a single sub-70MB binary and run the control plane in a few hundred megabytes of RAM. So 'k3s vs k8s' is really a packaging and operations question, not an API question: your manifests and Helm charts run unchanged on both. This post breaks down what k3s actually changes (the kine datastore shim, SQLite instead of etcd by default, bundled batteries like Traefik and ServiceLB, removed legacy in-tree drivers), the real resource and operational differences, high-availability options, where each one wins, and where k3s's conveniences can surprise you.
Virtualization & Containers
-
k3s vs k8s: Lightweight Kubernetes or the Full Thing? -
Apache CloudStack: The Underrated Workhorse The private cloud platform that does most of what OpenStack does with a fraction of the operational pain: one management server, a real web UI and API, genuine multi-tenancy, a host allocator that places VMs for you, and support for KVM, XCP-ng/XenServer, and VMware. The zone/pod/cluster model, basic versus advanced networking, where it beats both OpenStack and the HCI crowd, and the honest weaknesses — smaller mindshare, an aging UI, and opinionated networking.
-
Harvester: Cloud-Native HCI on Bare Metal SUSE and Rancher's modern hyperconverged platform that runs VMs as Kubernetes resources — KVM via KubeVirt, Longhorn for storage, the whole thing managed as Kubernetes. The most current architecture in the private-cloud field, what you gain from the Kubernetes-everything bet, and the operational weight you inherit whether you wanted it or not.
-
Incus and LXD: The Lightweight Cluster That Auto-Places Canonical's LXD and its community fork Incus: system containers plus real VMs under one excellent CLI, a REST API, and a built-in web UI. Minimal overhead, clustering that automatically lands new instances on the least-loaded member, container density plus full virtual machines when you need them. The fork politics, the auto-placement scriptlet, the lighter multi-tenancy story, and why this is the best low-effort path to self-service-with-placement for mostly-Linux workloads.
-
Knative: Serverless on Your Own Cluster Knative brings the Cloud Run experience to any Kubernetes cluster: request-driven scale-to-zero via the Knative Pod Autoscaler, revision-based traffic splitting for blue-green and canary deployments, and a full CloudEvents-native eventing layer with brokers and triggers. This post covers the architecture in depth, the data path through the activator during cold start, and an honest comparison with KEDA and plain HPA — including when Knative's operational weight makes it the wrong choice.
-
KubeVirt: Running VMs on Kubernetes KubeVirt makes virtual machines first-class Kubernetes objects: each VM becomes a CRD, runs inside a virt-launcher pod backed by libvirt and QEMU, and is managed with kubectl like any other workload. This post covers the architecture, the VirtualMachine and VMI CRDs, live migration, CDI disk import, Multus and SR-IOV networking, and the honest question of when running VMs on Kubernetes actually makes sense versus a dedicated hypervisor.
-
MAAS: Bare-Metal as a Service Canonical's Metal as a Service treats physical machines like cloud instances: PXE-commission a pool of servers, inventory their hardware, then allocate the most appropriate machine on demand by constraints, deploy an OS in minutes, and release it back to the pool. The region/rack controller architecture, the machine lifecycle, allocation as a hardware scheduler, and why MAAS is the foundation layer that makes everything else in this series feel cloud-like — plus the honest cost of running it.
-
Making Proxmox Cloud-Like: OpenTofu, the API, and the Placement Gap You already run Proxmox VE. This is how to bolt self-service onto it: the REST API, the OpenTofu/Terraform provider for declarative VM-plus-network-plus-disk, and an honest accounting of the one thing Proxmox historically did not do — pick the best node for you at provision time. Plus what changed in PVE 9.0's affinity rules and 9.2's dynamic load balancer, and the point where you should stop bolting and adopt a real cloud platform.
-
OpenNebula: The Pragmatic Private Cloud The private cloud for people who want real cloud features — a placement scheduler, multi-tenancy, an API, a clean web UI — without inheriting OpenStack's operational sprawl. What OpenNebula does well, where its edges show, and how it lands on existing KVM hosts and Ceph.
-
OpenStack: The Full Reference Cloud (and What It Costs You) The closest thing to a private AWS — Nova compute with a real filter/weigher scheduler, Neutron SDN, Cinder block, Glance images, Keystone IAM, Horizon UI, multi-tenancy and quotas done properly, scaling to thousands of nodes. And the honest other half: notorious operational complexity, thirty-plus services, and a learning curve survivable only via a deployment tool. When the power is worth the pain, and when it absolutely is not.
-
oVirt: Enterprise KVM Management with Real Scheduling Policies The upstream of Red Hat's former RHV, and the one platform in this series with a genuine, configurable scheduler: oVirt's filters, weights, and load-balancing policies, affinity groups and labels, the heavyweight engine and hosted-engine architecture, and the elephant in the room — RHV reaching end of life in August 2026 and what that means for the open-source project, OLVM, and whether oVirt is still a sound bet.
-
Private Cloud Showdown: Picking the Right Platform The finale of the private-cloud series: a head-to-head scorecard across OpenStack, CloudStack, OpenNebula, Harvester, Incus/LXD, XCP-ng, oVirt, Proxmox, and MAAS — rated on setup effort, scheduler quality, SDN, storage and Ceph, multi-tenancy, UI/API maturity, and community health. Then concrete recommendations by scale (single-node homelab, a few nodes, SMB, enterprise), the honest 'just use Proxmox' and 'just pay for vSphere/Nutanix' cases, realistic migration paths, and the total-cost-of-ownership reality the demo never shows.
-
Rook: Ceph as a Kubernetes Operator Rook turns Ceph into a Kubernetes-native workload: it deploys and reconciles monitors, OSDs, and managers as pods, exposes block, filesystem, and object storage through a handful of CRDs, and handles day-2 operations — scaling, upgrades, failure recovery — through the operator loop. This post covers the full architecture, the key CRDs with YAML, StorageClass patterns for RBD and CephFS, external-cluster mode, and an honest verdict on when Rook-Ceph is the right tool versus when Longhorn or cloud-native block storage is the better answer.
-
Velero: Backup and DR for Kubernetes The honest operator's guide to Velero: what it actually backs up (API objects and persistent volume data), how CSI snapshot integration and the Kopia-powered built-in DataMover work together, how to schedule backups and scope them by namespace or label, and why your DR plan is fiction until you have tested a restore end to end.
-
XCP-ng and Xen Orchestra: The XenServer Successor The fully-open Xen platform with a genuinely excellent web UI: XCP-ng as the community successor to Citrix Hypervisor/XenServer, Xen Orchestra for pools, live migration, backup, replication, and a clean REST API. The type-1 Xen architecture, the XO-from-source versus paid-XOA friction, XOSTOR hyperconverged storage, the pool-level-not-DRS placement gap, and where it fits versus Proxmox and the KVM crowd.
-
Private Cloud on Your Own Hardware: Replicating AWS and Azure On-Prem What you are actually trying to rebuild when you want AWS at home — self-service, an API, a scheduler that places workloads, software-defined networking and storage — and a map of the open-source platforms that get you there, plus where VMware and Nutanix now sit after Broadcom.
-
Kubernetes for the Homelab: K3s from Scratch to Production An end-to-end guide to running Kubernetes at home with K3s — single-node and HA setups, ingress, persistent storage with Longhorn, MetalLB, cert-manager with DNS-01, automated upgrades, and a pragmatic path to migrate Docker Compose workloads without overengineering it.
-
Cilium as a Full CNI: Beyond Observability Cilium is far more than eBPF observability — a full Kubernetes CNI that replaces kube-proxy, enforces identity-based network policy, peers BGP, meshes services, and load-balances in hardware. How it works and how to run it as your networking layer.
-
GPU Passthrough End-to-End A complete guide to PCIe GPU passthrough with VFIO and KVM — IOMMU groups, binding the device, firmware quirks, NVIDIA's Code 43, and the SR-IOV and vGPU options — so you can hand a GPU to a VM and debug it when it breaks.
-
KVM/libvirt Without Proxmox How to run VMs on plain Linux with KVM, QEMU, and libvirt — no Proxmox web UI — so that when something breaks at 2 a.m. you understand the layers underneath. virsh, networking, storage pools, and cloud-init from first principles.
-
Containerization and Virtualization: Every Platform Compared A comprehensive comparison of every major virtualization and containerization platform — Docker, LXC, KVM, VMware, VirtualBox, Proxmox, Singularity, Podman, and more. What each does, when to use it, and how to choose.
-
Proxmox for SMB: Migrating from VMware A practical guide for small and medium businesses migrating from VMware to Proxmox VE — covering migration tooling, vmdk conversion, cluster design, multi-site HA, disaster recovery, and running a production Proxmox environment on a real budget.
-
Karpenter: Intelligent Node Autoscaling for Kubernetes How Karpenter outperforms Cluster Autoscaler with just-in-time node provisioning, flexible NodePool configuration, spot instance handling, bin-packing, and intelligent cost optimization strategies.
-
K3s on Raspberry Pi and Homelab: Lightweight Kubernetes That Actually Works A complete hands-on guide to running K3s on Raspberry Pi hardware and homelab servers — from bare-metal bootstrap to production-grade workloads with ingress, persistent storage, and GitOps deployments.
-
Kubernetes Cost Optimization: Rightsizing, Spot Nodes, Bin Packing, Kubecost, and Scale-to-Zero A practical guide to cutting Kubernetes infrastructure costs — rightsizing workloads with VPA, leveraging spot/preemptible nodes, improving bin packing, measuring cost with Kubecost, and eliminating idle compute with KEDA scale-to-zero.
-
Kubernetes Networking Internals: kube-proxy, iptables vs eBPF, CNI Plugins, and DNS A deep dive into how Kubernetes networking actually works — the pod network model, kube-proxy and Service implementation, iptables vs eBPF data planes, CNI plugin comparison, and CoreDNS resolution internals.
-
Kubernetes Operators Deep Dive A comprehensive guide to writing production-grade Kubernetes operators — CRD design, controller-runtime reconcile loops, finalizers, status conditions, event handling, leader election, and a complete testing strategy.
-
Multi-Cluster Kubernetes: Fleet Management, Cross-Cluster Service Discovery, and Traffic Routing A practical guide to running multiple Kubernetes clusters — when and why to go multi-cluster, fleet management with Cluster API, workload distribution with Karmada, cross-cluster service discovery, and traffic routing strategies.
-
Service Meshes with Istio and Linkerd A practical guide to service meshes — what they are, when you actually need one, and how to use Istio and Linkerd for mTLS, traffic splitting, observability, and fault injection.
-
Container Image Hardening: Distroless, Multi-Stage Builds, and Vulnerability Scanning A practical, in-depth guide to reducing your container attack surface through distroless base images, multi-stage builds, Trivy vulnerability scanning, and CI/CD integration — covering everything from Dockerfile patterns to Kubernetes securityContext settings.
-
Docker Compose for Homelab: Multi-Service Stacks Done Right A deep-dive into Docker Compose for homelabbers and self-hosters — covering Compose file anatomy, environment management, networking, healthchecks, real-world stack examples, and production-readiness tips that scale from a Raspberry Pi to a full rack.
-
Helm Charts: Packaging, Templating, and Managing Kubernetes Applications A comprehensive guide to Helm — the package manager for Kubernetes — covering chart structure, Go templating, building charts from scratch, managing releases in production, chart dependencies, CI/CD integration, and essential community charts for homelabs.
-
Kubernetes for the Homelab: K3s Setup, Workloads, and Beyond A thorough guide to running Kubernetes in your homelab using K3s — covering installation, core concepts, workload deployment, ingress with TLS, persistent storage, migrating from Docker Compose, Helm, GitOps, and cluster operations.
-
Podman vs Docker: Rootless Containers, Pods, and the Case for Switching A deep technical comparison of Podman and Docker covering the daemonless architecture, rootless containers, Kubernetes-native pods, systemd Quadlets, and a practical migration guide for sysadmins and developers ready to make the switch.