--- myst: html_meta: "description lang=en": "Kasm Workspaces has the ability to automatically provision and destroy Servers and Docker Agents based on user demand. The AutoScale configuration differs slightly between Servers and Agents." "keywords": "Kasm, Pooling, Pool, autoscale, autoscaling, auto, scale, VM" "property=og:locale": "en_US" --- ```{title} AutoScale ``` # AutoScale ```{contents} Table of Contents :depth: 2 :local: ``` (autoscale-overview)= ## AutoScale Overview ```{raw} html ``` **AutoScaling** is a powerful feature that dynamically provisions and destroys the number of available virtual machines (VMs) within a Pool based on a predefined schedule or real-time user demand. Kasm Workspaces offers **AutoScale** capabilities for both full-stack virtual machines (VMs) and containerized environments. It can dynamically provision and integrate full-stack VMs into a **Server Pool** to support **RDP, KasmVNC, VNC, and SSH** sessions. Additionally, Kasm can AutoScale **Docker Agent VMs** to efficiently manage and deploy container-based workspaces, ensuring optimal resource utilization and scalability. ```{note} This feature is available in both the Community and Enterprise editions. If you're using an Enterprise edition, please contact a Kasm Technologies representative for details. ``` ### Agents Agents are the compute resources that store workspace images and initiate sessions upon request. Kasm can autoscale agents based on a predefined schedule or real-time user demand. See [Docker Agents](/guide/agent_settings.md) for more information. ### Servers Servers are the compute resources that support remote access to environments via protocols such as RDP, KasmVNC, VNC, and SSH. Similar to agents, Kasm can also autoscale servers based on a predefined schedule or real-time user demand. See [Servers](/guide/compute/servers.md) for more information. ### Startup Scripts It is strongly recommended to utilize and customize the startup scripts provided on our [AutoScale Startup Scripts GitHub repository](https://github.com/kasmtech/workspaces-autoscale-startup-scripts). These scripts include the necessary logic to install key Kasm components, such as the Kasm Agent role and the Kasm Desktop Service for Windows VMs, making it easier to integrate with your Kasm AutoScale setup. ### Zones A strategic organizational grouping of Kasm services that enables advanced resource management, geographic distribution, and logical segmentation. Zones are strongly tied to the Kasm manager role. Once a manager is assigned to a zone, it is responsible for the Kasm resources and operations of the workspaces within that zone. Learn more about [Deployment Zones in Kasm.](../../guide/zones/deployment_zones.md) ```{figure} /images/zones/deployment_zones_diagram.png :align: center ``` ### Upstream Auth Address This is the endpoint used to authenticate connections to Kasm sessions. It must be correctly set to the address of the resource hosting the Kasm API server. Ensuring proper configuration is essential for newly provisioned VMs to authenticate within the designated Zone. Incorrect settings may result in authentication failures or potential security risks, such as unauthorized access. See [Update Zones](../../how_to/reverse_proxy.md#update-zones) for more information. - In a **single-server architecture**, this address is set to `proxy` by default which refers to the local proxy. When configuring the Autoscaling feature, the default value must be changed to the actual IP/FQDN of your Kasm server so that the autoscaled agents can report back to your Kasm deployment. - For a **multi-server architecture**, the Web App server’s IP/FQDN, or the load balancer's IP/FQDN servicing the Web App servers must be specified for the corresponding Zone. ```{include} /how_to/infrastructure_components/pools.md ``` ## AutoScale Configuration Kasm has the ability to automatically provision and destroy {term}`Servers ` and Docker {term}`Agents ` based on user demand. The AutoScale configuration differs slightly between Servers and Agents. There are two ways to create an Autoscale config: * **Method 1**: Go to "Infrastructure" -> "Pools" -> Edit your Pool -> "AutoScale Configurations" tab -> "Add". The AutoScale type and Pool will be auto-populated based on your selected Pool. ```{figure} /images/autoscaling/autoscale_config_create_from_pool.png :align: center **Create AutoScale config from Pools** ``` * **Method 2**: Go to "Infrastructure" -> "Pools" -> "All AutoScale Configs" -> "Add". Then choose the correct Autoscale Type and Pool. ```{figure} /images/compute/autoscale_list.webp :align: center **Create AutoScale config** ``` AutoScale configurations differ between Docker Agent Pools and Server Pools. - Docker Agents: Designed for **Linux VMs** with the Docker Engine installed. These VMs dynamically provision and manage container-based workspaces to optimize resource utilization. - Servers: Designed for compute resources (**Windows and Linux**) that support RDP, KasmVNC, VNC, and SSH connections, allowing remote access to full desktop environments or specific applications. Select the appropriate configuration guide based on your deployment needs: - [Autoscale Configuration (Docker Pool)](/how_to/infrastructure_components/autoscale_config_docker_agent.md) - [Autoscale Configuration (Server Pool)](/how_to/infrastructure_components/autoscale_config_server.md) ```{toctree} :hidden: :maxdepth: 3 /how_to/infrastructure_components/autoscale_config_docker_agent.md /how_to/infrastructure_components/autoscale_config_server.md ``` ## AutoScale Scheduling AutoScale Scheduling in Kasm Workspaces allows administrators to define specific active periods for AutoScaling, optimizing resource usage and reducing costs. By setting schedules, AutoScaling can automatically provision or scale down compute resources based on predefined times. - **Benefits**: Saves compute costs by deactivating AutoScaling when resources are not needed. - **How It Works**: Administrators can configure schedules per AutoScale configuration, defining active days, start/end times, and time zones. - **Flexibility**: Supports different scheduling strategies, including business-hour scaling, overnight schedules, and multi-day configurations. - **Key Considerations**: Servers with active sessions will not be scaled down, ensuring uninterrupted user access. To learn more about configuring AutoScale Scheduling, refer to the **[AutoScale Scheduling Documentation](/how_to/infrastructure_components/autoscale_sheduling.md)**. ```{include} /how_to/infrastructure_components/autoscale_providers/providers_index.md ``` ```{toctree} :hidden: :maxdepth: 2 /how_to/infrastructure_components/autoscale_providers/digitalocean.md /how_to/infrastructure_components/autoscale_providers/gcp.md /how_to/infrastructure_components/autoscale_providers/harvester.md /how_to/infrastructure_components/autoscale_providers/nutanix.md /how_to/infrastructure_components/autoscale_providers/oci.md /how_to/infrastructure_components/autoscale_providers/proxmox.md /how_to/infrastructure_components/autoscale_providers/vmware.md ```