Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

CircleCI Machine Runner Orchestrator turns a Kubernetes cluster with KubeVirt into an elastic fleet of self-hosted runner virtual machines. You create a CircleCI resource class and one-time token, install the orchestrator Helm chart, map that class to a KubeVirt VirtualMachinePool, and target the class from jobs with machine: true. The controller polls demand about every five seconds and adjusts the pool between your configured replica limits.

This guide covers the prerequisites, installation, job configuration, scaling controls, security model, troubleshooting, and upgrade concerns documented for the current 1.0.0 chart. Start with the infrastructure checks: the chart does not install Kubernetes or KubeVirt.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What the orchestrator does

The Machine Runner Orchestrator is a Kubernetes controller for CircleCI machine runners. It watches task demand for configured CircleCI resource classes and reconciles a KubeVirt VirtualMachinePool. Each VM boots a CircleCI runner, claims work for its resource class, runs the job, and can terminate after becoming idle. This gives a self-hosted fleet the elasticity of a hosted runner pool while keeping compute, network access, images, and credentials under your control.

The deployment is made of four parts:

  • CircleCI resource class: the namespace/name identity that jobs request and that the runner token authorizes.
  • Orchestrator deployment: the Helm-installed controller that polls CircleCI and changes pool size.
  • KubeVirt pool: the virtual machines that provide the actual execution capacity.
  • Runner job configuration: a CircleCI job using machine: true and the exact configured resource class.

The controller and VM lifecycle are separate from CircleCI’s hosted machine images. A self-hosted job does not select a hosted machine.image alias; it selects your resource class instead.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application:Upgraded attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Warranty & Support: Our Electric air duster comes with 5 years warranty and 24/7 customer service. During this period, if you have any questions,pls kindly feel free to contact us.

Read the Machine runner orchestrator documentation alongside your installation. It contains the compatibility matrix and the chart’s authoritative values for the release you deploy.

Prerequisites and capacity planning

Kubernetes and KubeVirt

Provide a Kubernetes cluster with KubeVirt already installed and working before you install the chart. The orchestrator does not install KubeVirt. The guide identifies KubeVirt v1.8 as its tested version; verify the compatibility matrix rather than assuming a newer or older release is supported. Your cluster must be able to schedule the maximum number of runner VMs implied by every pool’s maxReplicas.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Nested virtualization is a separate infrastructure requirement. If the cluster itself runs on a virtualized provider, confirm that the provider and node pool expose nested virtualization. The guide’s Google Kubernetes Engine example uses an n2, n2d, c2, or c2d machine series and says that e2 does not support nested virtualization. Those machine-family details are GKE-specific, not a universal hardware list; consult the requirements for your provider.

Runner VM defaults

The default runner VM is based on Ubuntu 24.04 with 2 GiB of memory and one CPU. The default container disk is maintained by CircleCI and includes Docker and common CI tools. If your builds need more CPU, memory, storage, a different image, or additional disks, set class-specific KubeVirt spec values or shared resourceClassDefaults. Size the Kubernetes nodes for the resulting VM requests, including the warm minimum and any surge capacity.

Administrative access and secrets

  • Kubernetes administrator access sufficient to create a namespace, install a Helm release, and inspect Deployments, pods, and KubeVirt resources.
  • An organization administrator in CircleCI who can create a runner resource class and view its token once.
  • A secret-management process for runner tokens, CircleCI Server credentials (if applicable), and any cloud-init data. Do not commit tokens to a repository or paste them into ordinary, broadly readable configuration.
  • Outbound network connectivity from the orchestrator and each runner VM to the appropriate CircleCI endpoint, plus access to source control, registries, artifact stores, and other services your jobs require.

Step 1: Create the CircleCI namespace and resource class

Resource classes are keyed as namespace/name. An organization generally has one namespace; an existing namespace may have been created for orb use and can normally be reused. Namespace names accept lowercase letters, numbers, underscores, and dashes. Resource-class names additionally accept uppercase letters, colons, and plus signs.

Use the CircleCI interface

  1. Sign in as an organization administrator and open the Runners area.
  2. Create or select the organization namespace.
  3. Create a custom resource class, such as acme/linux-small, and record its exact spelling.
  4. Generate the runner token and store it immediately in your secret manager. The guide warns that the token is displayed only once.

Use the CLI

The documented command creates a class and generates its token:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
circleci runner resource-class create <namespace>/<resource-class> <description> --generate-token

Replace the angle-bracketed values with your real namespace, class name, and description when you run it. Treat the output as a credential: anyone who obtains the token can attempt to claim work for that class.

Step 2: Prepare Helm values

Create a dedicated Kubernetes namespace and a values file. A minimal class entry belongs under provisioner.resourceClasses. The following example illustrates one small pool and keeps the token as an environment-substituted value rather than a literal credential:

provisioner:
  resourceClasses:
    acme/linux-small:
      token: "${CIRCLECI_RUNNER_TOKEN}"
      scaling:
        minReplicas: 1
        maxReplicas: 6
        headroom: 1
        maxSurge: 2
        scaleDownDelay: 300s
        idleTimeout: 900s
  resourceClassDefaults:
    # Put settings shared by several classes here.
    # A class-specific value overrides an inherited value.

The exact secret and values mechanisms supported by your chart version should be followed for production. The chart supports pre-existing Kubernetes Secrets and ConfigMaps, allowing you to keep tokens and user data outside a general values file. If you use shell or CI substitution as in the example, render the final values without printing them to logs.

Per-class configuration can include the runner token, optional cloud-init userData, scaling settings, runner execution settings, extra disk mounts, and a KubeVirt VM spec. Put common settings in resourceClassDefaults and override only what differs between classes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Step 3: Install the chart

The current guide documents chart version 1.0.0 in the CircleCI Helm repository. Pin the version in automation and review the release notes before changing it; configuration names and defaults may change before a release reaches general availability.

helm repo add circleci https://packagecloud.io/circleci/machine-runner-orchestrator/helm
helm repo update
helm upgrade --install machine-runner-orchestrator 
  circleci/machine-runner-orchestrator 
  --version 1.0.0 
  --namespace circleci-runners 
  --create-namespace 
  --values values.yaml

Use your organization’s approved method for supplying the token while running Helm. After installation, verify that the controller is ready and that the expected KubeVirt pool appears:

Rank #3
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
kubectl get deployment -n circleci-runners
kubectl get virtualmachinepool -n circleci-runners
kubectl get pods -n circleci-runners
kubectl logs deployment/machine-runner-orchestrator -n circleci-runners

The provisioner logs should report task counts and reconciliation decisions. A pool may initially contain only its warm minimum; it should grow when an eligible CircleCI job is queued.

CircleCI Server installations

For a self-hosted CircleCI Server instance, set provisioner.circleciAPIAddr to the instance URL. The guide says this address is injected into each VM and that registration fails when it is omitted. Ensure both the orchestrator and every runner VM can resolve and reach that URL. The Server example also uses a CircleCI API token in addition to the resource-class token; store and pass that credential through the chart’s supported secret configuration.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Step 4: Target the fleet from CircleCI jobs

A job must explicitly select the class that you configured in the Helm release:

version: 2.1
jobs:
  build:
    machine: true
    resource_class: acme/linux-small
    steps:
      - checkout
      - run: echo "Hi from a self-hosted runner"

The resource_class value must match the configured namespace/name exactly. Do not add a CircleCI-hosted machine.image alias to this job. If the class is misspelled, absent from the release, or uses a token from another class, the job will remain unclaimed.

Commit the configuration only after confirming that the class is available to the project and that your organization’s security policy permits the project to use self-hosted runners.

How scaling decisions work

The scaler polls CircleCI approximately every five seconds. For each configured class, it considers unclaimed tasks and running tasks, adds headroom when tasks exist, clamps the result between the configured minimum and maximum, and applies maxSurge to limit how many new VMs can be requested above the ready capacity.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
Setting Effect Operational implication
minReplicas Warm floor for the pool. Use a positive value to reduce cold-start latency; use 0 to allow scale-to-zero while idle.
maxReplicas Upper bound on pool size. Reserve enough Kubernetes capacity and keep it consistent with CircleCI plan concurrency.
headroom Extra warm VMs above current task demand when tasks exist. Improves burst response at the cost of idle compute.
maxSurge Limits launches above VMs already ready. Prevents a large queue from creating an uncontrolled burst; a low value ramps in waves.
scaleDownDelay Waits after demand falls before reducing the pool. Absorbs short gaps between jobs and avoids churn.
idleTimeout Allows an idle VM to shut itself down after the configured period. Controls how quickly individual VMs release capacity. Without it, an idle VM waits indefinitely.

Scale-in does not forcibly stop a VM in the middle of a job. The pool shrinks as VMs finish their task or self-terminate after the idle timeout. Set the timeout and delay together: a long delay preserves warm capacity, while a short timeout reduces idle usage but can increase boot activity.

Do not set a maximum that your CircleCI plan cannot use. CircleCI’s scaling guidance warns against starting compute that is unavailable to jobs because of plan concurrency limits. Conversely, a maximum below your normal parallelism will leave tasks queued even when Kubernetes has spare capacity.

Choosing one pool or several

A single Helm deployment can serve multiple resource classes. The 1.0.0 release adds multi-class support for CPU, GPU, and ARM workloads, as well as support for GKE, AKS, EKS, and other KubeVirt-based Kubernetes clusters. Use separate classes when workloads need materially different VM shapes, operating-system images, architectures, disks, or trust boundaries.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
provisioner:
  resourceClasses:
    acme/linux-small:
      token: "${SMALL_TOKEN}"
      scaling:
        minReplicas: 1
        maxReplicas: 8
    acme/linux-large:
      token: "${LARGE_TOKEN}"
      scaling:
        minReplicas: 0
        maxReplicas: 4
      spec:
        # Supply the KubeVirt VM settings required by your chart version.
        # Example: more CPU, memory, or attached storage.

Keep defaults conservative and override them per class. A GPU or ARM class should have its own node placement and VM specification, while a small general-purpose class can inherit the common runner image and cloud-init settings. In CircleCI configuration, route each job to the class whose capacity and isolation it requires.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Security design for a self-hosted fleet

Protect tokens and the guest boundary

The chart’s default sidecar proxy supplies the resource-class token only when claiming work, so the token itself does not have to be passed into the guest VM. Disabling that sidecar hands the token to the VM and removes support for grantSudo and SSH. Keep the sidecar enabled unless you have a documented reason to accept that exposure.

Use Kubernetes Secrets or your organization’s secret-management integration for resource-class tokens, CircleCI Server credentials, and sensitive cloud-init data. Restrict read access to the controller’s service account and the operators who maintain the fleet. Rotate a token by updating the secret and confirming that newly started runners claim work before retiring the old credential.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.

Assume job code is privileged

CircleCI’s self-hosted runner FAQ states: Allowing jobs to access a Docker daemon is equivalent to providing root access to the machine. Machine runners let the operator choose the job-execution user, but you are responsible for restricting its permissions. Pre-installing dependencies is described as the more secure option; the trade-off is that dependency changes require machine reconfiguration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Untrusted jobs on persistent self-hosted machines can run malicious programs, attempt to escape the runner sandbox, reach internal services, or leave unwanted data for the next job. Use trusted-project policies, network segmentation, least-privilege identities, short-lived or clean VMs, and controlled persistence. Treat Docker socket access, host mounts, SSH, and grantSudo as deliberate privileged features, not convenience defaults.

Self-hosted runners are unavailable for public projects with the Build forked pull requests setting enabled, for security reasons. Check the project setting before diagnosing an apparently missing runner.

See the self-hosted runner FAQ and runner concepts documentation for the vendor’s security model and responsibility boundaries.

Operating and updating the fleet

Observe three layers

  • CircleCI demand: confirm that the job requests the intended class and is waiting rather than being filtered by project or plan policy.
  • Controller: inspect provisioner logs for task counts, desired replicas, token errors, and API failures.
  • Kubernetes and KubeVirt: inspect the Deployment, pool status, VM objects, events, node capacity, and runner service logs inside the VM.

Scaling configuration and class credentials hot-reload. KubeVirt VM spec values and userData apply at boot, so changing them does not retrofit existing VMs. Recycle old VMs in an orderly way after a change: let active jobs finish, reduce or cordon the pool as appropriate, and verify that newly booted VMs contain the new settings.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Troubleshooting matrix

Symptom Likely causes Checks and fixes
Job remains queued. Class mismatch, invalid token, class not loaded, or project policy blocks self-hosted runners. Compare the job’s resource_class character-for-character with the Helm key; inspect controller logs and confirm the class token; review project runner permissions.
Pool never grows. Controller cannot reach CircleCI, maximum already reached, or Kubernetes lacks capacity. Read provisioner logs for task counts and API errors; check maxReplicas, plan concurrency, node resources, and KubeVirt events.
VM starts but never registers. Unreachable CircleCI endpoint, missing Server API address, bad token, or cloud-init did not run. From the VM, test DNS and HTTPS reachability to the endpoint; verify provisioner.circleciAPIAddr for Server; inspect the runner service and cloud-init logs.
New VM has old settings. VM spec and userData are boot-time configuration. Confirm the release values, then retire and recreate the affected VMs rather than waiting for a hot reload.
Idle VMs remain indefinitely. No idle timeout is configured, or the VM still has a task. Check task state and set an appropriate idleTimeout; remember that scaleDownDelay also postpones pool reduction.

Version and upgrade considerations

The 1.0.0 release note records the product rename from runner-provisioner to Machine Runner Orchestrator. Existing deployments must be uninstalled and reinstalled under the new chart name, with runners offline during that transition. Plan a maintenance window, drain or finish active jobs, export the current values, and validate the new Deployment and pools before re-enabling traffic.

The same release note identifies patches for two high-severity gRPC-Go denial-of-service vulnerabilities, CVE-2026-84304 and CVE-2026-84445. Treat those identifiers and the 1.0.0 details as release-specific: review the official release note and current compatibility guidance before applying them to an existing installation.

Installation checklist

  • Kubernetes is running, KubeVirt is installed, and the chosen KubeVirt version is in the compatibility guidance.
  • Nested virtualization works for the provider and node pool, where required.
  • Cluster capacity covers every pool’s minimum, maximum, and surge behavior.
  • The organization namespace and resource class exist, and the one-time token is stored securely.
  • The Helm chart is pinned and values use the correct namespace/name keys.
  • CircleCI Server users set provisioner.circleciAPIAddr and provide the required API credential.
  • The controller, VirtualMachinePool, VMs, and runner services are healthy.
  • A test job uses machine: true and the exact self-hosted resource_class, without a hosted machine.image alias.
  • Scaling limits, headroom, surge, delay, and idle timeout match both workload latency goals and CircleCI plan concurrency.
  • Network access, Docker privileges, persistence, project trust, and secret rotation are documented before production use.

For the general scaling model, including unclaimed-task queries and the distinction between ephemeral single-task machines and continuous agents, consult CircleCI’s self-hosted runner scaling guide.

The Bottom Line

A reliable CircleCI self-hosted fleet starts with a functioning KubeVirt cluster and a securely managed resource class. Install the pinned orchestrator chart, target the class explicitly from jobs, and tune replica and security settings together; otherwise the controller can create capacity that jobs cannot safely or usefully consume.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.