Skip to content

K3s Architecture on Proxmox

1. Concepts over Tools

Standard Kubernetes (K8s) is designed for large-scale deployments. It relies on distributed databases (etcd) and multiple independent control-plane processes, which introduce high memory and CPU overhead.

Given our Proxmox host is a resource-constrained Ryzen 5 processor, we utilize K3s. K3s is a certified Kubernetes distribution built for IoT and Edge computing.

2. The K3s Efficiency Model

K3s achieves its lightweight footprint through several architectural choices: * Single Binary: The API Server, Scheduler, and Controller Manager are packaged into a single binary and run as a single process. * Datastore: It drops etcd by default in favor of an embedded SQLite database. * Container Runtime: It natively embeds containerd, removing the need for a standalone Docker daemon.

3. Architecture Diagram

graph TD
    subgraph Proxmox Host ["Proxmox VE (Ryzen 5)"]
        subgraph K3s VM ["Debian 13 VM (2 Cores, 4GB RAM)"]

            subgraph K3s Server ["K3s Server Process (Control Plane)"]
                API["API Server"]
                Sched["Scheduler"]
                CM["Controller Manager"]
                SQLite[("SQLite<br>(State)")]

                API --- Sched
                API --- CM
                API --- SQLite
            end

            subgraph K3s Agent ["K3s Agent Process (Worker Node)"]
                Kubelet["Kubelet"]
                KubeProxy["Kube-Proxy"]
                Containerd["containerd<br>(Runtime)"]

                Kubelet --- KubeProxy
                Kubelet --- Containerd
            end

            API <==> Kubelet

            subgraph Pods ["Workloads"]
                App["Status API Pod"]
                Redis["Redis Pod"]
            end

            Containerd --> Pods
        end
    end