Create and Manage Compute Pools
This guide describes how to create and manage Compute Pools. Compute Pools are Kubernetes clusters where AI and ML applications run. You can create Dedicated clusters or Shared clusters. Refer to the Compute Pool concepts page to understand the different variants and their use cases.
You can create Compute Pools using the PaletteAI UI or using YAML Kubernetes manifests.
Create Compute Pool
Prerequisites
-
A user with Tenant Admin or Project Admin permissions. The Project Editor role has read-only access to Compute Pools. Refer to Roles and Permissions for more information.
-
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 Static IP.
-
A reserved virtual IP (VIP) address for the cluster control plane endpoint, required when network overlay is disabled. When network overlay is enabled, the endpoint is derived from the overlay CIDR and VIP can be omitted. If you require a VIP, it must be allocated from your network infrastructure team or IPAM system before provisioning.
The Compute Pool variant (Dedicated or Shared) cannot be changed after creation. If you need to switch variants, you must delete the Compute Pool and create a new one. Review the Compute Pool concepts page to select the appropriate variant before proceeding.
Enablement
- UI Workflow
- YAML Workflow
-
Log in to PaletteAI. Ensure you are in the correct Project or Tenant scope.
-
From the left main menu, select Compute Pools.
-
Select Create Compute Pool.
-
On the General information page, set the name and tags for your Compute Pool to help track and organize it across projects.
-
Enter a unique Compute pool name. The name must be 3-33 characters, start with a lowercase letter, end with a lowercase letter or number, and contain only lowercase letters, numbers, and hyphens. The name must be unique within the Project.
-
(Optional) Add a Description.
-
(Optional) Expand Metadata to add labels and annotations for sorting and filtering.
-
(Tenant scope only) By default, the Compute Pool is shared with all Projects when it is created. To change which Projects can use the Compute Pool, choose the Select button, and mark the applicable Projects. Confirm your changes when finished.
Select Next.
-
-
On the Mode page, configure how you want to provision this Compute Pool.
-
Choose Create new resources to provision a new Compute Pool by deploying fresh resources managed by PaletteAI.
-
Select the deployment mode:
- Dedicated resources — Get exclusive access to physical resources with security and no resource contention. Use this for production, training, or sensitive data.
- Shared resources — Create a Compute Pool that is shared across multiple teams and personas. Use this for development, experimentation, or budget-conscious use cases. When selected, enter the Number of clusters (required, minimum 1) to specify how many clusters to provision for the shared Compute Pool.
Select Next.
-
-
On the Profile Bundle page, select a Profile Bundle to use for the Compute Pool.
-
Choose Select Profile Bundle. If a Profile Bundle is already selected, select Replace to change it.
-
In the Profile Bundle selection drawer, choose an Infrastructure or Fullstack Profile Bundle from the table.
-
Select Save. The selected Profile Bundle appears with its details.
-
Select the Cloud Type. Only Edge Native is supported at this time.
-
Select the Profile Bundle Version.
Select Next.
-
-
On the Variables page, configure variables for the selected Profile Bundle.
The layers and variables displayed depend on your Profile Bundle type. Refer to Supported Workflows and Fullstack Profile Bundle Deployment Behavior for details. The same layers and variables are displayed for Day-1 (Compute Pool deployment) and Day-2 (Compute Pool management) actions.
warningIf your Fullstack Profile Bundle includes
k8s-objectslayers, a Compute Pool reaching the Running status does not confirm that those workloads are deployed, healthy, or accessible. PaletteAI cannot evaluate health policies for generick8s-objectsresources and treats them as healthy as soon as they are applied to the cluster. Add health policies where possible, and verify those workloads separately.-
The variables table displays all configurable variables with Name, Value, Description, and Source columns.
-
Required variables are marked with an asterisk (
*) next to the name. Enter or update the Value for each variable. Variables of typebooleandisplay a toggle switch; all other types use a text input. -
The Description column provides context for the expected input. The Source column shows which profile the variable comes from, displayed as a
ClusterProfileorWorkloadProfilebadge. -
(Optional) Select Deployment settings in the top-right to configure application deployment settings that apply to all application Profile Bundles.
-
Enter the Namespace where workloads are deployed. This field is required and defaults to the Project namespace. The namespace must start and end with alphanumeric characters and can only contain lowercase letters, numbers, hyphens, and periods.
-
(Optional) Toggle Merge variables to control how variables with the same name across multiple profiles are handled. When enabled (the default), each variable name appears once and the provided value applies to all profiles. When disabled, each profile source has its own row and values are set per profile.
warningIf profiles reuse a variable name for different functions, the variables are merged automatically when this setting is enabled, which may produce unintended results. Use distinct, meaningful variable names to avoid conflicts.
-
(Optional) Expand Metadata to assign labels and annotations to the workload and the namespace the workload is installed onto in the Compute Pool.
-
Select Confirm.
-
Select Next.
-
-
On the Resource groups page, apply a filter to ensure only specific compute resources are automatically selected when provisioning the Compute Pool.
-
If resource groups are configured, they appear in the Control Plane Resource Groups and Worker Resource Groups sections.
-
If no resource groups are listed, verify that your Compute resource has eligible edge hosts with resource group labels assigned and resolved default NICs. The key/value pairs displayed are derived from the
resourceGroupsfield on available compute resources in your Project. If hosts are missing, refer to Manage Compute in Project Settings or Manage Compute in Tenant Settings. -
Resource group keys typically use the
palette.ai.rg/prefix. For example,palette.ai.rg/network-pool: "1".
Select Next.
-
-
On the Node config page, configure settings for the control plane and worker pools. You can create multiple worker pools to match your compute needs.
-
In the left panel under Node Pools, select Control Plane Pool or a worker pool (e.g., Worker Pool 1) to configure.
-
The Profile Bundle Requirements panel at the top shows the requirements from your selected Profile Bundle (node count, architecture, CPUs, memory, GPU variant, GPU count, GPU memory).
-
(Optional) If Compute Config resources exist in your Project, or are shared with it from a higher scope, a gear icon appears in the top-right. Select the gear icon to open the Advanced settings drawer.
-
Select a Compute Config from the drop-down menu. A Compute Config is a reusable blueprint for compute settings. Selecting an existing configuration auto-populates default values for the Compute Pool setup, including control plane and worker pool settings (node count, architecture, CPU, memory, GPU, labels, annotations), as well as deployment settings (Secure Shell (SSH) keys, deletion policy, and edge configuration).
-
Select Apply. A confirmation dialog warns that selecting a Compute Config overwrites your current node configuration values. Select Replace values to apply, or Cancel to keep your current settings.
-
Control Plane Pool Configuration:
Field Description Required Node Count Number of control plane nodes. Valid values: 1,3, or5.✅ Run workloads on control plane Toggle to enable workloads on control plane nodes. Required for single-node clusters. For multi-node clusters: enable if you want to run workloads only on control plane nodes (without worker pools), or disable to keep the control plane dedicated and define worker pools separately. Default: off. ❌ Architecture CPU architecture. AMD64(default) orARM64.✅ CPU Count Number of CPU cores for each control plane node. ❌ Memory Memory in MiB (for example, 8192). The UI also accepts values like8 GBwhich are converted to MiB.❌ Annotations / Labels Expand to add metadata key-value pairs to control plane nodes. ❌ Taints Expand to add node taints. Each taint requires a key, value, and effect ( NoSchedule,PreferNoSchedule, orNoExecute).❌ Worker Pool Configuration:
infoWorker pools are optional for multi-node control planes when Run workloads on control plane is enabled. Worker pools are required for single-node clusters (for edge host selection) and for dedicated control planes (where workloads cannot schedule on control plane nodes).
The wizard starts with one worker pool. Select Add Worker Pool in the Node Pools header to add more pools. To remove a worker pool, select the Remove button on the pool tab (the first worker pool cannot be removed).
For each worker pool:
Field Description Required Architecture CPU architecture. AMD64(default) orARM64.✅ CPU Count Number of CPU cores for each worker node. Each worker pool must specify either CPU or GPU resources. ❌ Memory Memory in MiB (for example, 16384for 16 GiB). The UI also accepts values like16 GB.❌ Min Worker Nodes Minimum number of worker nodes to provision. Default: 1.❌ GPU variant Expand GPU Resources and select Add GPU variant to configure. For example, NVIDIA H100 PCIe | 80 GB. Required when configuring GPU resources.❌ GPU count Number of GPUs per node. Required when a GPU variant is selected. ❌ GPU memory GPU memory per node. ❌ Annotations / Labels Expand Metadata to add key-value pairs to worker nodes. ❌ Taints Expand to add node taints. Each taint requires a key, value, and effect ( NoSchedule,PreferNoSchedule, orNoExecute).❌ - Repeat configuration for each worker pool.
Autoscaling (Optional):
In the left panel under Autoscaling, select Scaling Policy. Turn on Auto-Scaling Policy, and then select a Scaling Policy to automatically scale worker machines based on CPU and GPU utilization.
Select Next.
-
-
On the Deployment page, configure deployment settings across three sections.
General Configuration:
In the left panel, select General.
Field Description Required Deletion Policy Controls what happens when the Compute Pool is deleted. delete(default) removes the cluster and all its resources from Palette.orphankeeps the cluster running independently with PaletteAI management removed.❌ | SSH Keys | SSH public keys for cluster node access. | ❌ |
Select Configure to open the Override settings drawer where you can modify the deletion policy and add SSH keys using the Add SSH Key button.
Edge Configuration:
In the left panel, select Edge Configuration, and then select Configure to open the Override edge configuration drawer.
Field Description Required VIP VIP address for the cluster control plane endpoint. Must be a valid IP version 4 (IPv4) address. The VIP is used as the edge cluster's Kubernetes API server endpoint. Required unless Network Overlay is enabled. When Network Overlay is enabled, the VIP field is not required and should not be provided. ❌ Two Node Deployment Toggle to enable a two-node edge deployment configuration. Available only when using Palette Optimized K3s or Palette Optimized Canonical Kubernetes as the Kubernetes distribution in the Profile Bundle. ❌ Network Overlay Toggle to configure overlay network for pod-to-pod communication. ❌ Enable Static IP Toggle to use a static IP for the network overlay. Only available when Network Overlay is enabled. ❌ CIDR The network Classless Inter-Domain Routing (CIDR) for the overlay (for example, 192.168.1.0/24). Required when Network Overlay is enabled.✅ Overlay Network Type The overlay network type (for example, VXLAN). Only available when Network Overlay is enabled.❌ Save changes.
infoTwo-node deployment is only available when using Palette Optimized K3s or Palette Optimized Canonical Kubernetes as the Kubernetes distribution in the Profile Bundle. If you selected a Profile Bundle with a different Kubernetes distribution (such as RKE2 or PXK-E), the Two Node Deployment toggle is disabled.
tipNetwork Time Protocol (NTP) servers are not configurable in the Edge Configuration step. If NTP servers are configured in a Compute Config, they are inherited when the Compute Config is applied on the Node config page and displayed in the Edge Configuration card.
Multi-cluster registration (Advanced):
In the left panel, select Multi-cluster registration.
Field Description Required Sync Labels Toggle to sync labels from Klusterlet to all agent resources. ❌ Klusterlet / AddOns Select Configure to open a YAML editor drawer where you can configure managed cluster settings. ❌ Cluster ARN The Amazon Resource Name (ARN) for the managed cluster. ❌ Timeout Timeout in seconds for clusteradmoperations.❌ Log Verbosity Log verbosity level. ❌ Purge Klusterlet Operator Clean up config setting that purges the Klusterlet operator when the Klusterlet is unjoined. ❌ Purge Kubeconfig Secret Clean up config setting that deletes the kubeconfig secret after the agent takes over managing the workload cluster. ❌ Select Next.
-
On the Summary page, review and confirm all Compute Pool configuration. The summary displays an overview of your general information, resource groups, node configuration, and deployment settings. The summary is read-only. To make changes, select a previous step in the left sidebar to navigate back.
Multi-cluster registration settings (Sync Labels, Cluster ARN, Timeout, Log Verbosity, Klusterlet / AddOns, Purge Klusterlet Operator, and Purge Kubeconfig Secret) are not displayed in the summary. Review these settings on the Deployment page before submitting.
-
Review your settings.
-
Select Submit.
A Compute Pool is a ComputePool resource in the spectrocloud.com/v1alpha1 API group. The manifest has three main parts: metadata that names the pool, a reference to the Profile Bundle that provisions the cluster, and a cluster variant that describes the machines you need. The following steps create a dedicated Compute Pool. For every available field, refer to the ComputePool Configuration reference, which opens with a complete annotated example.
-
Create a
ComputePoolmanifest. Replace the placeholders with your own values.compute-pool.yamlapiVersion: spectrocloud.com/v1alpha1
kind: ComputePool
metadata:
name: <compute-pool-name>
namespace: <project-namespace>
spec:
profileBundleRef:
name: <profile-bundle-name>
namespace: <project-namespace>
cloudType: edge-native
clusterVariant:
dedicated:
paletteClusterDeploymentConfig:
cloudType: edge-native
nodePoolRequirements:
controlPlanePool:
nodeCount: 3
workerNodeEligible: false
architecture: AMD64
cpu:
cpuCount: 4
memory:
memory: '16 GB'
workerPools:
- name: gpu-pool
architecture: AMD64
cpu:
cpuCount: 16
memory:
memory: '64 GB'
gpu:
variant: 'NVIDIA H100 PCIe | 80 GB'
gpuCount: 2
deletionPolicy: delete
edge:
vip: '<reserved-vip-address>'The manifest breaks down as follows:
-
profileBundleRefselects the Infrastructure or Fullstack Profile Bundle that provisions the cluster. It must exist in the same Project namespace. -
nodePoolRequirementsdescribes the machines you need. The control plane pool must have1,3, or5nodes. Each worker pool describes one group of machines with the same hardware; add more entries to theworkerPoolslist to mix CPU-only and GPU hardware. -
edge.vipis the reserved virtual IP address for the cluster's Kubernetes API endpoint. The VIP cannot be changed after creation. -
deletionPolicycontrols whether the underlying cluster is removed (delete) or kept running (orphan) when you delete the Compute Pool.
To create a shared Compute Pool instead, replace
dedicatedwithsharedand provide apaletteClusterDeploymentConfigslist with one entry per cluster, where each entry uses the same shape aspaletteClusterDeploymentConfigshown in the example. -
-
(Optional) Restrict which machines the pool can use by adding resource groups, or enable autoscaling by adding a
scalingPolicyRef. -
Apply the manifest to the hub cluster.
kubectl apply --filename compute-pool.yaml
Validate
- UI Workflow
- YAML Workflow
- From the left main menu, select Compute Pools.
- Confirm that the Compute Pool appears with the status Provisioning.
- Confirm that the status changes to Running. For Infrastructure Profile Bundles, Running means the Kubernetes cluster is provisioned and available. For Fullstack Profile Bundles, Running also reflects the health of any workloads that define health policies. Provisioning typically takes 10-15 minutes depending on cluster size and edge host availability. If the status remains Provisioning beyond this time, select the Compute Pool and review its events for errors.
- If you used an Infrastructure Profile Bundle, treat the Compute Pool Running status as the primary completion checkpoint.
- If you used a Fullstack Profile Bundle that includes
k8s-objectslayers, verify those workloads and any exposed service endpoints separately. Running status does not reflect whetherk8s-objectsresources are fully initialized or accessible. - Select the Compute Pool, and then review details such as cluster status, hardware capacity, allocation, and deployed workloads.
-
Confirm the Compute Pool exists and watch its status. Provisioning typically takes 10-15 minutes depending on cluster size and edge host availability.
kubectl get computepool <compute-pool-name> --namespace <project-namespace> --watchExample OutputNAME STATUS AGE
my-compute-pool Provisioning 2m
my-compute-pool Running 12m -
Confirm the status changes to
Running. For Infrastructure Profile Bundles,Runningmeans the Kubernetes cluster is provisioned and available. For Fullstack Profile Bundles,Runningalso reflects the health of any workloads that define health policies. Workloads fromk8s-objectslayers are not health-checked; verify them separately. -
Review the hardware capacity and allocation recorded in the pool's status. Refer to the Status Reference for a description of each field.
kubectl get computepool <compute-pool-name> --namespace <project-namespace> --output yaml
If you encounter issues during provisioning, refer to Troubleshooting Compute Pools. If edge hosts are not being allocated, verify default NIC and static IP configuration on the Compute tab in Project Settings or Tenant Settings. Troubleshooting steps use kubectl commands that require access to the hub cluster.
Modify Compute Pool
Update a Compute Pool by updating its configuration. Currently, only a limited set of fields can be modified after creation.
Limitations
The PaletteAI User Interface currently supports metadata, Profile Bundle, and resource group modifications.
Supported Modifications
- General metadata (description, labels, annotations)
- Profile Bundle version updates (includes variable management). Refer to Supported Workflows and Fullstack Profile Bundle Deployment Behavior for details on which layers and variables are editable.
- Resource groups (
controlPlaneResourceGroups,workerResourceGroups). Modifying resource groups can trigger a repave of your clusters. Refer to Modify Resource Groups for instructions and the repave impact.
Node pool requirements (nodePoolRequirements.controlPlanePool and nodePoolRequirements.workerPools) can also be updated after creation by editing the Compute Pool manifest. PaletteAI reconciles the cluster's machine pools to match the updated requirements. Refer to Machine Pool Lifecycle for details on how changes are applied.
Immutable Fields
The following fields should not be changed after Compute Pool creation:
clusterVarianttype (cannot change between Dedicated and Shared)profileBundleRef.nameandprofileBundleRef.namespaceedge.vip- the Virtual IP is fixed for the lifetime of the clustercloudType- Cloud provider type
To change these fields, you must delete the existing Compute Pool and create a new one with the desired configuration.
Prerequisites
- A user with Tenant Admin or Project Admin permissions. The Project Editor role has read-only access to Compute Pools. Refer to Roles and Permissions for more information.
- An existing Compute Pool
Enablement
- Log in to PaletteAI. Ensure you are in the correct Project or Tenant scope.
- From the left main menu, select Compute Pools.
- Select the Compute Pool you want to modify.
- In the top-right, select Settings > Compute Pool Settings.
- Modify the supported Compute Pool Settings as necessary, and Save your changes when finished.
- Update the Description in the General section.
- Add or update Labels and Annotations in the metadata section.
- (Tenant scope only) For Compute Pools created in the Tenant scope, you can also select Settings > Shared to change the list of Projects that can access the Compute Pool. Select the Projects that should have access, and Confirm your changes when finished.
- To update the Profile Bundle, select the Profile Bundle tab, and choose the appropriate Version. If you need to change the variable values, use the Variables modal window.
- Save your changes.
Using the YAML workflow, edit the same supported fields on the ComputePool resource and re-apply the manifest. Update metadata.labels, metadata.annotations, or the description annotation directly. To move to a specific Profile Bundle revision, set spec.profileBundleRef.name using the <profile-bundle-name>@v<revision> format described in the UI Field to YAML Mapping.
Validate
- Verify the changes appear in the Compute Pool overview.
- Check the Compute Pool status to confirm it remains in the Running state.
Modify Resource Groups
Resource groups (controlPlaneResourceGroups, workerResourceGroups) are not immutable. You can modify them after the Compute Pool is created, but modifying them is a potentially destructive operation.
Modifying resource groups can trigger a repave of the clusters in the Compute Pool. Resource groups determine which compute resources are eligible to serve as control plane and worker nodes. When you change them, PaletteAI re-evaluates host eligibility and may rebuild cluster nodes on different hosts. Repaving can temporarily affect cluster performance, availability, and the workloads on the affected nodes. We recommend that you back up important data and make resource group changes during a maintenance window.
Only the Project that owns the Compute Pool can modify its resource groups. Projects that a shared Compute Pool is shared with have read-only access to the Resource Groups tab.
Prerequisites
- A user with Project Editor or Admin permissions
- An existing Compute Pool
Enablement
- Log in to PaletteAI, and then open your Project.
- From the left main menu, select Compute Pools.
- Select the Compute Pool you want to modify.
- Select the Resource Groups tab.
- Add, update, or remove key-value pairs in the Control Plane Resource Groups and Worker Resource Groups sections. Ensure the values match the resource group labels assigned to your edge hosts. Refer to Resource Groups for details on how resource groups control host eligibility.
- Select Save changes.
- In the Repave Warning dialog, review the impact of the change. Select Continue to apply the change, or Cancel to keep the current resource groups.
Validate
- Verify the updated resource groups appear on the Resource Groups tab.
- Monitor the Compute Pool status and confirm it returns to the Running state after any repave completes.
- Confirm that your workloads are healthy on the affected clusters.
Delete Compute Pool
Delete a Compute Pool when you no longer need it. Deleting the Compute Pool deletes the Kubernetes clusters and all workloads running on them.
Deleting a Dedicated or Shared Compute Pool deletes the Kubernetes clusters and workloads running on the clusters. Back up important data before you delete a Compute Pool.
Prerequisites
-
A user with Tenant Admin or Project Admin permissions (
computepools:delete). Refer to Roles and Permissions for more information. -
An existing Compute Pool.
infoIf the Compute Pool was created at the Tenant scope, you cannot delete it from the Project scope.
Enablement
-
Log in to PaletteAI. Ensure you are in the correct Project or Tenant scope.
-
From the left main menu, select Compute Pools.
-
Delete the Compute Pool using either of the following methods:
- From the table — Beside the Compute Pool, select the three-dot menu, and choose Delete.
- From the detail page — Select the Compute Pool to open its Overview tab. In the top-right, select Settings > Delete Compute Pool.
-
In the confirmation dialog, select Delete.
Using the YAML workflow, delete the resource from the hub cluster. Whether the underlying cluster is removed or kept running depends on the pool's deletion policy.
kubectl delete computepool <compute-pool-name> --namespace <project-namespace>
Validate
- From the left main menu, select Compute Pools.
- Verify the Compute Pool no longer appears in the list.
Next Steps
- Deploy applications to your Compute Pool.
- Troubleshoot common Compute Pool issues.
- Compute Pool Configuration Reference for all configuration options.