Skip to content

Getting Started#

In this tutorial you'll create a full Kubernetes cluster with just one node including both the controller and the worker. This is well suited for environments where the high-availability and multiple nodes are not needed. This is the easiest install method to start experimenting k0s.


This tutorial has been written for Debian/Ubuntu, but it can be used for any Linux running one of the supported init systems: Systemd or OpenRC.

Before proceeding, make sure to review the System Requirements.

Installation steps#

1. Download k0s#

The k0s download script downloads the latest stable k0s and makes it executable from /usr/bin/k0s.

$ curl -sSLf | sudo sh

2. Install k0s as a service#

The k0s install sub-command will install k0s as a system service on the local host running one of the supported init systems: Systemd or OpenRC. Install can be executed for workers, controllers or single node (controller+worker) instances.

This command will install a single node k0s including the controller and worker functions with the default configuration:

$ sudo k0s install controller --single

The k0s install controller sub-command accepts the same flags and parameters as the k0s controller. See manual install for an example for entering a custom config file.

3. Start k0s as a service#

To start the k0s service, run

$ sudo systemctl start k0scontroller
It usually takes 1-2 minutes until the node is ready for deploying applications.

If you want to enable the k0s service to be started always after the node restart, enable the service. This command is optional.

$ sudo systemctl enable k0scontroller

4. Check service, logs and k0s status#

You can check the service status and logs like this:

$ sudo systemctl status k0scontroller
     Loaded: loaded (/etc/systemd/system/k0scontroller.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-02-26 08:37:23 UTC; 1min 25s ago
   Main PID: 1408647 (k0s)
      Tasks: 96
     Memory: 1.2G
     CGroup: /system.slice/k0scontroller.service

To get general information about your k0s instance:

$ sudo k0s status
Version: v0.11.0
Process ID: 436
Parent Process ID: 1
Role: controller+worker
Init System: linux-systemd

5. Access your cluster using kubectl#

The Kubernetes command-line tool 'kubectl' is included into k0s. You can use it for example to deploy your application or check your node status like this:

$ sudo k0s kubectl get nodes
k0s    Ready    <none>   4m6s   v1.21.0-k0s1

6. Clean-up#

If you want to remove the k0s installation you should first stop the service:

$ sudo systemctl stop k0scontroller

Then you can execute k0s reset, which cleans up the installed system service, data directories, containers, mounts and network namespaces. There are still few bits (e.g. iptables) that cannot be easily cleaned up and thus a reboot after the reset is highly recommended.

$ sudo k0s reset

Next Steps#