Skip to main content
Version: v1.2.x

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 Tenant or Project in Ready status.

  • 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.

info

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

  1. Log in to PaletteAI. Ensure you are in the correct Project or Tenant scope.

  2. From the left main menu, select Compute Pools.

  3. Select Create Compute Pool.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

    warning

    If your Fullstack Profile Bundle includes k8s-objects layers, a Compute Pool reaching the Running status does not confirm that those workloads are deployed, healthy, or accessible. PaletteAI cannot evaluate health policies for generic k8s-objects resources 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 type boolean display 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 ClusterProfile or WorkloadProfile badge.

    • (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.

        warning

        If 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.

  8. 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 resourceGroups field 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.

  9. 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:

    FieldDescriptionRequired
    Node CountNumber of control plane nodes. Valid values: 1, 3, or 5.
    Run workloads on control planeToggle 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.
    ArchitectureCPU architecture. AMD64 (default) or ARM64.
    CPU CountNumber of CPU cores for each control plane node.
    MemoryMemory in MiB (for example, 8192). The UI also accepts values like 8 GB which are converted to MiB.
    Annotations / LabelsExpand to add metadata key-value pairs to control plane nodes.
    TaintsExpand to add node taints. Each taint requires a key, value, and effect (NoSchedule, PreferNoSchedule, or NoExecute).

    Worker Pool Configuration:

    info

    Worker 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:

    FieldDescriptionRequired
    ArchitectureCPU architecture. AMD64 (default) or ARM64.
    CPU CountNumber of CPU cores for each worker node. Each worker pool must specify either CPU or GPU resources.
    MemoryMemory in MiB (for example, 16384 for 16 GiB). The UI also accepts values like 16 GB.
    Min Worker NodesMinimum number of worker nodes to provision. Default: 1.
    GPU variantExpand GPU Resources and select Add GPU variant to configure. For example, NVIDIA H100 PCIe | 80 GB. Required when configuring GPU resources.
    GPU countNumber of GPUs per node. Required when a GPU variant is selected.
    GPU memoryGPU memory per node.
    Annotations / LabelsExpand Metadata to add key-value pairs to worker nodes.
    TaintsExpand to add node taints. Each taint requires a key, value, and effect (NoSchedule, PreferNoSchedule, or NoExecute).
    • 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.

  10. On the Deployment page, configure deployment settings across three sections.

    General Configuration:

    In the left panel, select General.

    FieldDescriptionRequired
    Deletion PolicyControls what happens when the Compute Pool is deleted. delete (default) removes the cluster and all its resources from Palette. orphan keeps 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.

    FieldDescriptionRequired
    VIPVIP 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 DeploymentToggle 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 OverlayToggle to configure overlay network for pod-to-pod communication.
    Enable Static IPToggle to use a static IP for the network overlay. Only available when Network Overlay is enabled.
    CIDRThe network Classless Inter-Domain Routing (CIDR) for the overlay (for example, 192.168.1.0/24). Required when Network Overlay is enabled.
    Overlay Network TypeThe overlay network type (for example, VXLAN). Only available when Network Overlay is enabled.

    Save changes.

    info

    Two-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.

    tip

    Network 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.

    FieldDescriptionRequired
    Sync LabelsToggle to sync labels from Klusterlet to all agent resources.
    Klusterlet / AddOnsSelect Configure to open a YAML editor drawer where you can configure managed cluster settings.
    Cluster ARNThe Amazon Resource Name (ARN) for the managed cluster.
    TimeoutTimeout in seconds for clusteradm operations.
    Log VerbosityLog verbosity level.
    Purge Klusterlet OperatorClean up config setting that purges the Klusterlet operator when the Klusterlet is unjoined.
    Purge Kubeconfig SecretClean up config setting that deletes the kubeconfig secret after the agent takes over managing the workload cluster.

    Select Next.

  11. 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.

info

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.

Validate

  1. From the left main menu, select Compute Pools.
  2. Confirm that the Compute Pool appears with the status Provisioning.
  3. 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.
  4. If you used an Infrastructure Profile Bundle, treat the Compute Pool Running status as the primary completion checkpoint.
  5. If you used a Fullstack Profile Bundle that includes k8s-objects layers, verify those workloads and any exposed service endpoints separately. Running status does not reflect whether k8s-objects resources are fully initialized or accessible.
  6. Select the Compute Pool, and then review details such as cluster status, hardware capacity, allocation, and deployed workloads.

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:

  • clusterVariant type (cannot change between Dedicated and Shared)
  • profileBundleRef.name and profileBundleRef.namespace
  • edge.vip - the Virtual IP is fixed for the lifetime of the cluster
  • cloudType - 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

  1. Log in to PaletteAI. Ensure you are in the correct Project or Tenant scope.
  2. From the left main menu, select Compute Pools.
  3. Select the Compute Pool you want to modify.
  4. In the top-right, select Settings > Compute Pool Settings.
  5. 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.
  6. (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.
  7. 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.
  8. 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

  1. Verify the changes appear in the Compute Pool overview.
  2. 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.

danger

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.

info

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

Enablement

  1. Log in to PaletteAI, and then open your Project.
  2. From the left main menu, select Compute Pools.
  3. Select the Compute Pool you want to modify.
  4. Select the Resource Groups tab.
  5. 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.
  6. Select Save changes.
  7. 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

  1. Verify the updated resource groups appear on the Resource Groups tab.
  2. Monitor the Compute Pool status and confirm it returns to the Running state after any repave completes.
  3. 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.

danger

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.

    info

    If the Compute Pool was created at the Tenant scope, you cannot delete it from the Project scope.

Enablement

  1. Log in to PaletteAI. Ensure you are in the correct Project or Tenant scope.

  2. From the left main menu, select Compute Pools.

  3. 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.
  4. 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

  1. From the left main menu, select Compute Pools.
  2. Verify the Compute Pool no longer appears in the list.

Next Steps