BiSoft Logo

Services

Products

Partnership

Learning Hub

English

General

From K8s to K3s: A New World with What You Already Know

From K8s to K3s: A New World with What You Already Know

I started my DevOps journey with K8s. So I want you to know one thing from the start while reading this article: this is not an article saying “ditch K8s and switch to K3s”. K8s is still like that first teacher for me who challenged me, made me sweat, but ultimately taught me this whole thing. I won’t let anyone talk badly about it :D

This article is more about this: you know K8s really well, but when you first looked at K3s, you thought something like this, right?

“Wait a minute, this can’t possibly be this easy. There must be a catch.”

Good news: there’s no catch. And even better news: knowing K8s is the shortest path to learning K3s. So this article will be easy for you, because you already know the hardest part. Let’s begin.

What Is K3s? (And Why Is Half of Its Name Missing?)

Let’s get the name thing out of the way first, because everyone wonders about it but nobody asks.

Kubernetes = K8s. Why? Because there are 8 letters between “K” and “s” (u-b-e-r-n-e-t-e). Classic developer laziness, we love it, what can you do…

K3s was deliberately named to be half of K8s. So they’re basically giving you the message “I’m Kubernetes, but smaller” right in the name. It doesn’t have an official expansion; it’s completely a joke. When I first saw it, I also searched “is there some kind of standard called K3s?”, there wasn’t, so don’t waste your time.

K3s was developed by Rancher (now under SUSE). And the most important part is this: K3s is a fully-fledged, CNCF-certified Kubernetes distribution. So it’s not “something that looks like Kubernetes”; it is officially Kubernetes itself. Same API, same kubectl, same YAMLs. Everything you learned in K8s applies here directly, which isn’t really a testament to how easy K3s is, but rather a testament to how solid the foundation of K8s is.

The versions currently running are based on Kubernetes v1.36.4, so it is moving almost shoulder-to-shoulder with upstream Kubernetes. It’s not a dinosaur of a dusty, forgotten project.

So How Did It Get This Much Smaller? (From an Architectural Perspective)

This is the part that will probably confuse you the most, but it’s actually the sweetest part. Because you already know the K8s architecture, the differences will make sense once we explain them.

Remember classic K8s. What do you have in the control plane?

  • kube-apiserver

  • etcd

  • kube-scheduler

  • kube-controller-manager

  • cloud-controller-manager

Each one is a separate process, separate management… And pay attention; this is not a design flaw, it’s a design choice. K8s keeps these components separate so you can scale each one independently, replace them, and fine-tune them in dev environments. This flexibility is both the price and the power that allows K8s to sit underneath the world’s largest systems.

K3s asks a different question: “What if I don’t need all of this flexibility?” And it packs this entire team into a single binary. Yes, you read that correctly. One. Binary. A single binary under 70 MB containing everything from the containerd runtime and Flannel CNI to the Traefik ingress controller and Klipper load balancer. (Sounds like making things easier for developers, right? :DDD)

So K8s tells you “arrange every component however you want”; K3s tells you “I prepared a sensible default for you, change it later if you want.” Both are valid philosophies; they just answer different needs.

One of the Most Significant Differences: etcd Became Optional

K3s uses SQLite instead of etcd in single-node installations. Yes, the simple SQLite that even some of the apps on your phone use. In single-node mode, SQLite is the default datastore.

How is this possible? Inside K3s, there is a layer called Kine (KINE = “Kine Is Not Etcd”, developers are always the same when it comes to naming things, you know). Kine mimics the etcd API, allowing you to use databases such as SQLite, MySQL, and PostgreSQL underneath. So Kubernetes thinks “I’m talking to etcd,” while something else is actually running behind it. Clever solution.

One important note here: etcd didn’t “disappear”; it became optional. In environments where you want multiple nodes and high availability (HA), you can switch to embedded etcd. So K3s still allows you to use etcd in scenarios where etcd is strong; it simply removes it from being “mandatory in every situation.”

Server and Agent (Master/Worker in Disguise)

You already know the “control plane node” and “worker node” distinction in K8s. In K3s, these are called server and agent.

  • Server node = control plane + datastore (master equivalent)

  • Agent node = only runs workloads (worker equivalent)

The names have changed, but the logic is exactly the same. So your K8s knowledge stays right there in your pocket.

And the architecture has been cleaned up even further in recent versions. By making CNI initialization a direct part of the Executor interface, they have reduced the dependency on “CLI flag hacks” for networking providers such as Flannel or Kube-router. Technical, but a nice detail.

The Scaling Question: How Much Can This Little Thing Handle?

Now let’s get to the question you’re really wondering about. “Okay, nice, lightweight, cool, but I’m used to large environments. Can I actually do serious work with this?”

First, let’s look at its hardware appetite:

K3s can run with as little as* 512 MB of RAM on an agent node. According to the official documentation (updated May 2026), a server node (control plane) requires* 2 GB of RAM and 2 CPU* cores, excluding application workloads.

But an honest warning: in tests conducted on hardware with 1 GB of total RAM, instability was observed with K3s, k0s, and MicroK8s when real application workloads were deployed… even a lightweight Kubernetes cluster consumes enough control-plane resources that it cannot simply be ignored. So if you’re the person saying “I installed it on a Raspberry Pi but it keeps crashing,” the problem isn’t K3s, it’s that poor 1 GB of RAM.

So, Is It Suitable for Large Environments?

Short answer: Yes, but with nuance.

K3s has “edge computing, IoT, development environments, and resource-constrained locations” in its DNA. Raspberry Pi clusters, an edge device in a factory, a remote branch, CI/CD environments, dev/test clusters… this is where K3s shines.

But it depends on what you mean by “large”:

  • Many small clusters (edge scenario, such as a cluster in every store) → K3s is excellent. Lightweight, quick to install, and easy to manage automatically.

  • One huge cluster, hundreds of nodes, heavy enterprise traffic → This is where K8s is at home. K3s can also handle serious environments with HA embedded etcd, and it does work. But at massive scale, the ecosystem, tooling, and collective experience of the community are deeper on the K8s side. In these scenarios, you understand once again why K8s (or managed EKS/GKE/AKS) exists.

In short: both scale, but they shine at different scales. K3s is a surgeon’s knife, while K8s is a fully equipped operating room. Which one you want depends on the job at hand.

Pros and Cons (The Honest List)

The need to make a list like this appears in every DevOps Engineer who designs architectures… Reflex.

Pros:

  • Easy to install. One command, one coffee, cluster up and running.

  • Lightweight. Runs anywhere resources are limited.

  • Batteries included. Traefik (ingress), Klipper (load balancer), local-path-provisioner (storage), and CoreDNS all come ready to go.

  • Real Kubernetes. kubectl, YAMLs, Helm charts, and operators all work exactly the same. You carry your K8s knowledge over as-is.

  • Excellent Airgap (offline) environment support. Perfect for factories, ships, and remote-location scenarios.

Cons:

  • Some defaults can be challenging. If you don’t like Traefik, you have to remove it and put NGINX in its place, which might initially make you think, “but why is this here?”

  • In very large / very complex enterprise scenarios, K8s’s years of accumulated “proven path” and its large community provide stronger support.

  • SQLite is great on a single node, but if you want serious HA, you still need to switch to etcd or an external DB, at which point the “lightweight” advantage decreases somewhat.

  • Some managed service automations (automatic upgrades, integrated monitoring, etc.) need to be set up by you because this is your cluster and your responsibility.

K8s and K3s are not competitors. They are two members of the same family: one is the powerhouse ready for every scenario, offering virtually unlimited flexibility; the other is the agile and lightweight sibling designed for places where all that power is more than you need.

They are both “Kubernetes.” You get to enjoy the same kubectl apply -f happiness with both. The difference is how many moving parts you have to manage and which one fits your job better.

K3s doesn’t exist to replace K8s; it exists for the places where K8s is more than you need. One isn’t better than the other; they are built for different jobs.

And don’t forget this: if you know K8s well, learning K3s is a 1–2 day job. Because there’s nothing new to learn, just a whole bunch of complexity you can put aside when you don’t need it. Everything that first teacher taught you is still there with you :))


Source: https://medium.com/@oktayca/k8sten-k3s-e-bildiklerinle-yeni-bir-d%C3%BCnya-fdca91287643

Join our 250+ customers

Whether you need expert consulting, custom software, or full-scale data solutions, BiSoft is here to help. Let’s talk about how we can support your goals.

Join our 250+ customers

Whether you need expert consulting, custom software, or full-scale data solutions, BiSoft is here to help. Let’s talk about how we can support your goals.

Join our 250+ customers

Whether you need expert consulting, custom software, or full-scale data solutions, BiSoft is here to help. Let’s talk about how we can support your goals.

Smart data solutions for business growth and efficiency

Company

Services

Product

Vispeahen

BFM

BFM4Patroni

More content