> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up Kubernetes with Qualcomm Linux

[Kubernetes](https://kubernetes.io/) is an open-source platform that automates the deployment, scaling, and management of applications running in a container. Kubernetes helps to organize containers across multiple devices, ensuring efficient resource utilization, high availability, and scalability of applications. Kubernetes is useful not only for large-scale servers and cloud systems but also for small-scale Linux-embedded devices. It helps manage and orchestrate containers and applications across IoT devices efficiently.

## **Enable Kubernetes**

The Qualcomm Linux release enables Kubernetes by default in `qcom-container-orchestration-image` defined in `meta-qcom-distro/recipes-products/images/qcom-container-orchestration-image.bb`.

After the image is built and flashed, Kubernetes and all its prerequisites and dependencies are available on the device.

<Note>
  Kubernetes does not start automatically after flashing. You must connect the device to a network and initialize it as a Kubernetes node using `kubeadm` before `kubelet` becomes active.
</Note>

## **Step 1: Connect to a network**

Kubernetes requires a network interface with a reachable IP address for the API server. Connect the device to a WiFi network using NetworkManager:

```bash theme={null}
nmcli device wifi connect <ssid> password <password>
```

Note the IP address assigned to the device — you will need it in the next step:

```bash theme={null}
ip addr show
```

## **Step 2: Initialize Kubernetes**

Run `kubeadm init` to bootstrap the device as a Kubernetes control-plane node:

```bash theme={null}
kubeadm init --ignore-preflight-errors=SystemVerification \
             --apiserver-advertise-address=<device-ip-address>
```

<Note>
  `--ignore-preflight-errors=SystemVerification` is required because embedded devices may not meet all standard Kubernetes preflight checks (for example, available memory thresholds).
</Note>

## **Step 3: Verify kubelet status**

After initialization, verify that `kubelet` is running:

```bash theme={null}
systemctl status kubelet
```

| **State**            | **Description**                                                  |
| :------------------- | :--------------------------------------------------------------- |
| `Active (running)`   | Device has been initialized as a Kubernetes node using `kubeadm` |
| `Inactive (stopped)` | Device has not yet been initialized using `kubeadm`              |

## **Next steps**

* For Docker container support, see [Run Docker containers](./run-docker-containers).
* For virtual machine setup, see [Create a secondary virtual machine](./create-a-secondary-virtual-machine).
