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

# Machines

> CNAP-managed compute that provisions and manages worker nodes for you

When you create a managed cluster, you need <Tooltip headline="Worker Nodes" tip="Worker nodes are the compute machines that run your applications in a Kubernetes cluster. They provide compute capacity and are managed by CNAP.">worker nodes</Tooltip> to run your applications. CNAP can provision and manage these machines for you — create a machine from the dashboard, and CNAP handles the rest: server creation, Kubernetes setup, cluster joining, and lifecycle management.

<Note>
  You can also [add your own workers manually](/clusters/add-workers) by running a bootstrap command on any Linux server. CNAP-managed machines are an alternative that removes the need for a separate cloud provider account.
</Note>

## How it works

When you add a CNAP-managed machine to your cluster:

1. CNAP provisions a cloud server (currently Hetzner Cloud)
2. The server is configured with cloud-init to automatically join your cluster
3. The machine appears in your dashboard with real-time status updates
4. CNAP monitors the machine and handles its full lifecycle

You can track each machine's progress through four stages: **Provisioned** (server created), **Bootstrapped** (Kubernetes installed), **Joined** (connected to cluster), and **Ready** (accepting workloads).

## Supported providers

| Provider      | Regions                                                        | Status    |
| ------------- | -------------------------------------------------------------- | --------- |
| Hetzner Cloud | EU (Falkenstein, Nuremberg, Helsinki), US (Ashburn, Hillsboro) | Available |

More providers are coming. You can also [bring your own cloud key](/platform/quotas#bring-your-own-cloud-key--unlimited-machines-on-any-plan) to bypass CNAP-managed compute entirely.

## Machine lifecycle

### Provisioning

Machines are provisioned on demand. CNAP selects the best available instance type based on your cluster's resource requirements and provisions a server with the appropriate operating system and Kubernetes version.

If your cluster is [suspended](/clusters#cluster-suspension) (idle with no workers), requesting a machine automatically resumes the cluster first. This adds approximately 15-25 seconds to the first provision while the control plane starts up. Subsequent provisions are immediate.

### Scaling

CNAP automatically matches capacity to your workload requirements. When your cluster needs more resources, new machines are provisioned. When demand decreases, idle machines are removed to reduce costs.

To protect your cluster and account, CNAP limits concurrent provisioning to 3 machines per cluster at a time (1 on the free plan). If your cluster requests more machines than this limit, they are queued and provisioned as earlier machines finish launching. If provisioning repeatedly fails (for example, a provider capacity issue), CNAP backs off exponentially to avoid unnecessary retries and costs. See [quotas](/platform/quotas#provisioning-limits) for details.

### Suspend and resume

Suspend a machine to stop paying for compute while preserving its data. When you suspend a machine, CNAP takes a snapshot of the disk, deletes the cloud server (stops billing), and stores the snapshot for later restoration. Resume creates a new server from the snapshot — your machine comes back with the same hostname, Kubernetes identity, and local data intact.

Suspended machines cost a fraction of running machines (snapshot storage only):

| State                | Example cost (40 GB disk) |
| -------------------- | ------------------------- |
| Running (cx23)       | \~€4.11/month             |
| Suspended (snapshot) | \~€0.40/month             |

Suspend from the **Machines** tab in your cluster dashboard — click the menu on any machine and choose **Suspend**. Suspended machines appear in a separate section with a **Resume** button.

<Info>
  Persistent volumes using local storage or LINSTOR/DRBD are preserved during suspend. The restored machine rejoins the cluster with the same hostname, so Kubernetes recognizes it as the same node and rebinds volumes automatically.
</Info>

**Auto-suspend on downgrade**: When a Pro subscription ends, CNAP-managed machines are automatically suspended (not deleted). If you re-subscribe within 90 days, you can resume them from the dashboard. After 90 days, snapshots are permanently deleted.

### Deletion

When a machine is deleted (not suspended), the data is permanently removed:

1. Gracefully drains running workloads off the machine (up to 2 minutes)
2. Deletes the cloud server (stops billing immediately)
3. Cleans up cluster resources

If the cluster is unreachable (for example, during cluster deletion), CNAP skips the drain and deletes the cloud server directly to stop billing.

### Auto-scaling controls

You can pause and resume auto-scaling from the **Machines** tab. When paused, no new machines are created regardless of pending workloads. The current machine count and limit are shown in the header.

### Free tier lifetime

CNAP-managed machines on the free tier are automatically deleted after 7 days. You'll receive email and [dashboard notifications](/platform/notifications) at 5 days, 2 days, and 24 hours before deletion.

To keep machines running longer, bring your own cloud key or upgrade to Pro. See [plans and pricing](/pricing) for details.

## Notifications

CNAP sends notifications for machine lifecycle events like upcoming expiry. Notifications appear both via email and in the **notification center** in your dashboard header (bell icon). See [notifications](/platform/notifications) for details.

## What's next?

<CardGroup cols={2}>
  <Card title="Add workers manually" icon="terminal" href="/clusters/add-workers">
    Use a bootstrap command to add your own servers
  </Card>

  <Card title="Plans and pricing" icon="credit-card" href="/pricing">
    Compare plans and understand machine limits
  </Card>

  <Card title="Deploy products" icon="rocket" href="/products">
    Start deploying applications to your cluster
  </Card>

  <Card title="Storage" icon="hard-drive" href="/clusters/storage">
    Configure persistent storage for your workloads
  </Card>
</CardGroup>
