Deploy a Single-Node Compute Pool
This guide describes how to deploy a single-node Compute Pool. A single-node Compute Pool uses one Edge host for both the Kubernetes control plane and workload scheduling. To achieve this, you configure a Compute Config that marks the control plane node as worker-eligible, then create a Compute Pool that references it. You can deploy a single-node Compute Pool using the PaletteAI UI or YAML Kubernetes manifests.
A single-node Compute Pool is not considered a High Availability (HA) setup. If the Edge host fails, the cluster and all workloads running on it become unavailable. Use single-node Compute Pools for development, experimentation, or non-critical deployments only.
Prerequisites
Before you begin, confirm that you have the following PaletteAI resources configured.
- UI Workflow
- YAML Workflow
-
A Project in
Readystatus -
A Settings resource with valid Palette API credentials
-
A Profile Bundle of type Infrastructure or Fullstack
-
A Compute resource with available Edge hosts registered in Palette
-
Edge hosts with a resolved default NIC (and per-host static IP where required for multi-NIC hosts). Configure these on the Compute tab in Project Settings, Tenant Settings, or System Settings before provisioning.
-
A reserved Virtual IP (VIP) address for the cluster control plane endpoint
-
A user with Project Admin permissions. The Project Editor role has read-only access to Compute Pools.
-
A Project in
Readystatus -
A Settings resource with valid Palette API credentials
-
A Profile Bundle of type Infrastructure or Fullstack
-
A Compute resource with available Edge hosts registered in Palette
-
Edge hosts with a resolved default NIC (and per-host static IP where required for multi-NIC hosts). Configure these on the Compute tab in Project Settings, Tenant Settings, or System Settings before provisioning.
-
A reserved Virtual IP (VIP) address for the cluster control plane endpoint
-
kubectl installed and available in your
$PATH -
The
KUBECONFIGenvironment variable set to the path of the PaletteAI hub cluster'skubeconfigfile.export KUBECONFIG=<kubeconfig-location> -
A user with Project Admin permissions. The Project Editor role has read-only access to Compute Pools.
Create a Compute Config
Create a Compute Config that specifies a single control plane node with worker eligibility enabled.
- UI Workflow
- YAML Workflow
-
Log in to PaletteAI, and then open your Project.
-
From the left main menu, select Settings, and then select the Compute Config tab.
-
Select Create Compute Config. Follow the Create and Manage Compute Configs guide for details on each page, using the following single-node values on the Node Pool Defaults page.
Field Value Node Count Set to 1.Single node cluster Turn on. The cluster deploys as a single node that serves as both control plane and worker. Run workloads on control plane Turn on. Required for single-node clusters. Architecture CPU architecture of the target Edge host (for example, AMD64orARM64). This value must match the Architecture of Worker Pool 1. -
(Optional) Configure default worker pool settings on the same page. In a single-node cluster, PaletteAI uses worker pool requirements to select the Edge host, not the control plane settings.
-
On the Review page, confirm your settings, and then submit the Compute Config.
-
Define a YAML manifest for the
ComputeConfig.single-node-compute-config.yamlapiVersion: spectrocloud.com/v1alpha1
kind: ComputeConfig
metadata:
name: single-node-compute-config
namespace: <project-namespace>
spec:
paletteClusterConfig:
defaults:
controlPlanePool:
nodeCount: 1
singleNodeCluster: true
workerNodeEligible: true
architecture: <target-architecture>Replace
<project-namespace>with the namespace of your Project, and<target-architecture>with the CPU architecture of the target edge host (for example,AMD64orARM64). This value must match the Architecture you configure for Worker Pool 1. -
(Optional) Set the Compute Config as the project default so the Compute Pool wizard pre-populates single-node mode before the Resource groups step. In Project Settings, open the Compute Config tab, select your Compute Config, and select Set as default from the action menu. Refer to Project Settings.
-
Apply the manifest.
kubectl apply --filename single-node-compute-config.yaml -
Verify the
ComputeConfigwas created.kubectl get computeconfig single-node-compute-config --namespace <project-namespace>Example OutputNAME AGE
single-node-compute-config 10s
Resource Groups and Single-Node Host Selection
Single-node Compute Pools use Control Plane Resource Groups (spec.clusterVariant.controlPlaneResourceGroups) to filter which Edge host PaletteAI selects. PaletteAI ignores Worker Resource Groups for the initial single-node host selection even though the worker pool requirements drive CPU, memory, and GPU matching.
Edge hosts tagged with both palette.ai/control-plane: true and palette.ai/worker: true appear only in worker inventory on the Compute resource. Their palette.ai.rg/<key> labels therefore surface under worker compute, not control plane compute. When the Compute Pool wizard detects single-node mode, it merges worker inventory resource groups into the Control Plane Resource Groups list so you can target a specific dual-role host.
The Compute Pool creation wizard presents Resource groups before Node config. Single-node mode is usually chosen on Node config (or pre-populated from a Compute Config). Use one of the following approaches so control plane resource groups stay selectable:
-
Set a single-node Compute Config as the project default before you open Create Compute Pool. The wizard pre-populates
singleNodeCluster: truefrom that default, so the Resource groups step already includes worker inventory tags in the control plane list. -
Return to the Resource groups step after Node config. Complete Node config, apply your single-node Compute Config, then use the wizard's back navigation to open Resource groups again. The control plane list refreshes with worker inventory tags once single-node mode is enabled.
Reordering the wizard so Node config precedes Resource groups would remove the need for these workarounds, but that change is out of scope for this fix and left as a follow-up.
Resource group labels are assigned on Edge hosts in Palette (palette.ai.rg/<key>: "<value>"). PaletteAI reads them from Compute inventory; it does not infer resource groups from control plane or worker role labels alone.
Create a Single-Node Compute Pool
- UI Workflow
- YAML Workflow
Create a Compute Pool that references the Compute Config you created. The worker pool requirements you configure determine which Edge host PaletteAI selects for the single-node cluster.
-
Log in to PaletteAI and navigate to your project.
-
From the left main menu, select Compute Pools.
-
Select Create Compute Pool.
-
Complete the General information, Mode (select Dedicated resources), Profile Bundle, and Variables screens. Refer to Create and Manage Compute Pools for details on each screen.
Select Next after completing each screen.
-
On the Resource groups screen, optionally add Control Plane Resource Groups to restrict host selection. If you set a single-node Compute Config as the project default, the control plane list already includes worker inventory tags and you can configure resource groups here. Otherwise, you can skip this screen for now and return after Node config (described below).
Select Next.
-
On the Node config screen, select the gear icon in the top-right to open the Advanced settings drawer.
-
From the Compute Config drop-down menu, select
single-node-compute-config, and then select Apply. When the confirmation dialog appears, select Replace values.The Compute Config auto-populates the control plane pool with Node Count: 1 and Run workloads on control plane enabled. The CPU Count, Memory, and Architecture fields are also auto-populated but do not determine which edge host is selected. Edge host selection is driven by the worker pool requirements you configure in the next step.
-
If you need to set Control Plane Resource Groups and skipped the Resource groups screen earlier, use the wizard's back navigation to return to Resource groups now that single-node mode is enabled. Add the key/value pairs that match your target Edge host's
palette.ai.rg/labels, then continue forward to Node config again if needed. -
In the Node Pools panel on the left, select Worker Pool 1 and configure it with the hardware requirements of the target Edge host.
Field Description Required Min Worker Nodes Set to 1.✅ Architecture CPU architecture of the target Edge host. ✅ GPU Variant GPU variant of the target Edge host. Expand GPU Resources and select Add GPU variant. ❌ GPU Count Number of GPUs on the worker node. Required when a GPU variant is selected. ❌ GPU Memory GPU memory on the worker node. ❌ Select Next.
-
On the Deployment screen, select Edge Configuration in the left panel, and then select Configure. Enter the VIP address for the cluster control plane endpoint, and then select Save changes.
Select Next.
-
On the Summary screen, review your configuration, and then select Submit.
Create a Compute Pool by applying a manifest with worker eligibility and node count set directly in the spec. The worker pool requirements you configure determine which Edge host PaletteAI selects for the single-node cluster.
-
Define a YAML manifest for the
ComputePool.single-node-compute-pool.yamlapiVersion: spectrocloud.com/v1alpha1
kind: ComputePool
metadata:
name: single-node-compute-pool
namespace: <project-namespace>
spec:
profileBundleRef:
name: <profile-bundle-name>
namespace: <project-namespace>
cloudType: edge-native
clusterVariant:
controlPlaneResourceGroups:
datacenter: us-west-1
dedicated:
paletteClusterDeploymentConfig:
cloudType: edge-native
nodePoolRequirements:
controlPlanePool:
nodeCount: 1
singleNodeCluster: true
workerNodeEligible: true
architecture: <target-architecture>
workerPools:
- name: worker-pool-0
architecture: <target-architecture>
minWorkerNodes: 1
edge:
vip: <vip-address>Replace the following placeholders:
Placeholder Description <project-namespace>The namespace of your Project. <profile-bundle-name>The name of your Profile Bundle resource. <target-architecture>CPU architecture of the target Edge host (for example, AMD64orARM64). Both values must match.<vip-address>The reserved VIP address for the cluster control plane endpoint. For dual-role Edge hosts (both control plane and worker labels), set
controlPlaneResourceGroupsrather thanworkerResourceGroups. PaletteAI uses control plane resource groups for single-node host selection. -
Apply the manifest.
kubectl apply --filename single-node-compute-pool.yaml -
Verify the
ComputePoolwas created.kubectl get computepool single-node-compute-pool --namespace <project-namespace>Example OutputNAME AGE
single-node-compute-pool 10s
Validate
- UI Workflow
- YAML Workflow
-
Log in to PaletteAI and navigate to your project.
-
From the left main menu, select Compute Pools.
-
Confirm the Compute Pool appears with status Provisioning.
-
Confirm the status changes to Running. Provisioning typically takes 10–15 minutes depending on Edge host availability.
-
Select the Compute Pool to open its detail page, and then review the Total CPU and Total Memory stats to confirm they reflect a single edge host.
-
Confirm the Compute Pool status changes to
Running. Provisioning typically takes 10–15 minutes depending on Edge host availability.kubectl get computepool single-node-compute-pool --namespace <project-namespace>Example OutputNAME STATUS AGE
single-node-compute-pool Running 15m -
Confirm a single node is allocated by reviewing the Compute Pool details.
kubectl describe computepool single-node-compute-pool --namespace <project-namespace>In the output, verify that the control plane pool has
nodeCount: 1,singleNodeCluster: true, andworkerNodeEligible: true.
Next Steps
-
Create and Manage Compute Pools for standard multi-node Compute Pool configuration.
-
Deploy applications to your Compute Pool.
-
Troubleshoot common Compute Pool issues.