Kubernetes is an open-source orchestration platform that automatically deploys, scales and self-heals containerized applications. This guide explains the core concepts (Pod, Node, Deployment, Service) and builds a real single-node cluster on an Ubuntu VPS using K3s.
Understanding Kubernetes starts with distinguishing four interconnected concepts.
The smallest deployable unit Kubernetes manages, hosting one or more containers.
The physical or virtual server that Pods run on; a cluster consists of one or more nodes.
A resource that guarantees the desired number and state of Pods, managing updates and rollbacks.
An abstraction layer that provides a stable network address and load balancing behind changing Pod IPs.
Running a few containers on a single server with `docker run` is easy. The problem starts once the number of containers and servers grows.
If a container crashes or a node becomes unreachable, Kubernetes automatically restarts it or moves it to a healthy node.
You only declare the desired replica count; the scheduler decides which node runs which Pod.
A rolling update strategy does not shut down old Pods until the new version is healthy.
The same manifest files move from a local test environment to a production cluster with almost no changes.
K3s is a lightweight, production-ready Kubernetes distribution from Rancher, shipped as a single binary. It consumes far fewer resources than full Kubernetes for small and medium workloads.
Update your Ubuntu 24.04 VPS, allocate at least 2 vCPU and 2 GB RAM, and open the required port 6443 in the firewall.
The official install script configures both kubelet and the bundled containerd in one step and starts it as a systemd service.
K3s writes the kubeconfig file to /etc/rancher/k3s/k3s.yaml; verify the install by checking node status.
Create a simple Deployment from the nginx image and watch the Pods reach the Running state.
Define a NodePort Service to make the Deployment reachable through the server's IP address.
Increase and decrease the replica count to observe how Kubernetes automatically manages the Pods.
sudo apt update && sudo apt upgrade -y sudo ufw allow 6443/tcp
curl -sfL https://get.k3s.io | sh -
sudo k3s kubectl get nodes -o wide
sudo k3s kubectl create deployment nginx-demo --image=nginx:stable sudo k3s kubectl get pods
sudo k3s kubectl expose deployment nginx-demo --port=80 --type=NodePort sudo k3s kubectl get svc nginx-demo
sudo k3s kubectl scale deployment nginx-demo --replicas=3 sudo k3s kubectl get pods -o wide
Docker is a tool that builds and runs containers. Kubernetes is an orchestration layer that automatically deploys, scales and heals many containers across multiple servers; it typically uses containerd as the container runtime.
K3s is a distribution that exposes the same Kubernetes API while using far less memory and disk, shipped as a single binary. It's recommended for small clusters, edge devices and development environments; because of API compatibility, commands you learn also work on full Kubernetes.
Yes, for learning, development and low-traffic applications. For production workloads that need high availability, a cluster with at least three nodes (including the control plane) is recommended.
In practice, K3s can run with as little as 1 vCPU and 512 MB RAM, but 2 vCPU and 2 GB RAM is a more realistic starting point for running several Deployments.
It depends on your traffic and team size. Docker Compose is usually enough for simple single-server applications; once you need multiple services, autoscaling or zero-downtime deployments, moving to Kubernetes starts to make sense.
Yes. K3s or full Kubernetes can be installed on any suitable Ubuntu VPS with root/SSH access; resource requirements should be sized to the number of Pods you plan to run.
Check out our Linux VPS plans, ready for Kubernetes and container workloads with NVMe storage, an up-to-date kernel and full root access.