Deploy a Kubernetes (k3s) Cluster with Quick Start in InMotion Central
Updated October 29, 2026 by Suraj Bangade
4 Minutes to Read
Introduction
Kubernetes runs and manages containers for you. It restarts them when they fail, rolls out new versions, and gives you one API for everything running on the cluster. A full Kubernetes install takes many steps, so for learning, testing, or small workloads, k3s is a lighter option. It is a certified Kubernetes distribution packaged as a single program.
The Kubernetes (k3s) Quick Start template in InMotion Central builds a single-node k3s cluster for you. It launches an Ubuntu 24.04 LTS server on your private network, gives it a public IP address, installs k3s, and opens the Kubernetes API (port 6443) and SSH (port 22) only to the IP addresses you choose.
In this tutorial, we'll show you how to deploy the cluster, copy its kubeconfig file to your computer, and confirm kubectl can manage the cluster.
Steps to Deploy the Kubernetes (k3s) Template
1. Open Quick Start in Your Cloud Project
- Log in to InMotion Central and select Projects from the left navigation bar.
- Open your cloud project and click Quick Start in the project sidebar.
- Locate the Kubernetes (k3s) template card and click Deploy.

2. Configure Your Deployment Settings
In the Deploy Kubernetes (k3s) dialog, review or customize the settings:
Basic
- Stack name: Enter a name for this deployment (for example, k3s). Use letters, numbers, dots, underscores, or hyphens.
- Server name: Enter a hostname for the server (defaults to k3s-1). This is also the name of the Kubernetes node.
- Image: Choose Ubuntu 24.04 LTS.
- Flavor: k3s needs about 2 GB of memory, so choose a flavor with at least 2 GB of RAM (for example, gen2.micro).
Networking
- Public network: Keep External selected. This is the network your public IP address comes from.
- If your project already has a private network, select it from the Private network dropdown.
- If your project does not have a private network yet, InMotion Central offers to create a Private Network + Router deployment first, using the prefilled subnet (192.168.10.0/24) and DNS servers (1.1.1.1, 8.8.8.8).
SSH
- SSH key: Select an existing SSH key, click Generate New Key, or click Paste Public Key. You need a key to copy the kubeconfig file off the server.
- SSH whitelist: Confirm the comma-separated IP addresses or CIDR ranges allowed to connect (prefilled with your current public IP address). The same list controls access to SSH and to the Kubernetes API, so include every IP address you will run kubectl from.
3. Launch and Monitor Your Deployment
- Click Deploy (or Create Network And Deploy if you are creating a private network at the same time).
- Scroll down to My Deployments at the bottom of the Quick Start page to track progress.
- Wait about five minutes while the server boots and installs k3s. When setup finishes, the Status column for k3s changes to CREATE_COMPLETE.
Known issue: The deployment can show CREATE_FAILED and an empty kubeconfig value under Outputs even though the cluster installed correctly. In our test, k3s was running and the node was Ready. If you see this, continue with the next steps. Reading the kubeconfig file over SSH works either way.
4. Copy Your Server's Public IP Address
- Next to your k3s deployment under My Deployments, click Outputs.
- Copy the floating_ip value. This is your server's public floating IP address.
5. Copy the kubeconfig File to Your Computer
kubectl uses a kubeconfig file to find your cluster and sign in to it. k3s writes one on the server at /etc/rancher/k3s/k3s.yaml, pointing at 127.0.0.1. Run this from your own computer to copy it and point it at your server's public IP address instead:
1$ ssh ubuntu@<floating_ip> 'sudo cat /etc/rancher/k3s/k3s.yaml' | sed 's/127.0.0.1/<floating_ip>/' > k3s.yaml
This file contains the cluster's administrator credentials. Keep it safe, and don't share it or commit it to a code repository.
How to Know the Installation Was Successful
Install kubectl on your computer if you don't have it yet (see kubernetes.io/docs/tasks/tools), then list the cluster's nodes:
1$ KUBECONFIG=./k3s.yaml kubectl get nodes
Our test deployment returned:
NAME STATUS ROLES AGE VERSIONk3s-1 Ready control-plane 33m v1.37.1+k3s1
A node with the status Ready means k3s is running, the API is reachable on port 6443 from your IP address, and your kubeconfig file works. If the command times out, check that your current IP address is in the deployment's SSH whitelist.
What Was Automatically Set Up
Running these checks on the server (signed in with ssh ubuntu@<floating_ip>) confirmed what first boot set up:
Check the Ubuntu version installed
1$ lsb_release -ds
Ubuntu 24.04.3 LTS
Check that k3s is running
1$ systemctl is-active k3s
active
Check the node from the server itself
1$ sudo k3s kubectl get nodes
NAME STATUS ROLES AGE VERSIONk3s-1 Ready control-plane 33m v1.37.1+k3s1
The template set up:
- k3s v1.37.1+k3s1 as a single-node cluster. The one node runs both the control plane and your workloads.
- A certificate for your public IP address, so kubectl on your computer can connect to https://<floating_ip>:6443 without certificate errors.
- A firewall that allows SSH (port 22) and the Kubernetes API (port 6443) only from your whitelist, plus ping.
Ports 80 and 443 are not open. To reach an app you run on the cluster from the internet, add a rule for its port to the deployment's security group first.
I love to tinker with cool stuff.
Talk with an InMotion Cloud specialist
Reach out to the InMotion Cloud support team and we’ll walk through your scenario together.