Skip to content

Listeners are sometimes scheduled on Windows nodes #2652

@macux

Description

@macux

Checks

Controller Version

0.4.0

Helm Chart Version

0.4.0

CertManager Version

N/a

Deployment Method

Helm

cert-manager installation

N/a

Checks

  • This isn't a question or user support case (For Q&A and community support, go to Discussions. It might also be a good idea to contract with any of contributors and maintainers if your business is so critical and therefore you need priority support
  • I've read releasenotes before submitting this issue and I'm sure it's not due to any recently-introduced backward-incompatible changes
  • My actions-runner-controller version (v0.x.y) does support the feature
  • I've already upgraded ARC (including the CRDs, see charts/actions-runner-controller/docs/UPGRADING.md for details) to the latest and it didn't fix the issue
  • I've migrated to the workflow job webhook event (if you using webhook driven scaling)

Resource Definitions

# install arc
helm install arc `
    --namespace my-arc-namespace `
    --create-namespace `
    --set githubConfigSecret.github_token=$myPat `
    --set nodeSelector."kubernetes\.io/os"=linux `
    oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller `
    --version 0.4.0

# linux-values.yaml contents (for linux based jobs):
template:
  spec:
    nodeSelector:
      kubernetes.io/os: linux

# windows-values.yaml contents (for windows based jobs):
template:
  spec:
    nodeSelector:
      kubernetes.io/os: windows
    containers:
    - name: runner
      image: location-of-my-windows-runner-container/my-windows-runner:latest

# scale sets are installed using the helm chart and one of the overrides above, e.g. for windows:
helm upgrade --install my-windows-runner-set `
    --namespace my-runners-namespace `
    --create-namespace `
    --set githubConfigUrl=$myGitHubUrl `
    --set githubConfigSecret.github_token=$myPat `
    --values windows-values.yaml `
    oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set `
    --version 0.4.0

To Reproduce

Using AKS:

# option 1:

1. Create an aks cluster which will have a linux based node pool for the control plane called "nodepool1"
2. Add a Windows node pool called "wpool" with a single Windows node
3. Install the ARC controller via the helm chart as shown above
4. Install a Windows runner scale set via helm chart as shown above
5. The scale set listener is scheduled on the Windows node created in step 2 and not on a linux node in "nodepool1" (despite its name - see below)

# option 2: As for #1 - but add a linux based user nodepool called "zzzpool" - same issue

# option 3: As for #1 - but add a linux based user nodepool called "aaapool" - this works, listeners are scheduled on this and Windows runners are correctly scheduled on the windows node pool

# option 4: As for #1 - but create the Windows node pool with zero nodes and auto scaling enabled - this also works but isn't a feasible workaround (and is obviously also slower when a Windows runner is required)

Note - if a listener pod needs to be recreated for any reason this same issue can occur.

Describe the bug

Described in the steps to reproduce above.

Describe the expected behavior

Listener pods are always scheduled on linux nodes regardless of the nodepool name.

Whole Controller Logs

-

Whole Runner Pod Logs

-

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    attentionRequires attentionbugSomething isn't workinggha-runner-scale-setRelated to the gha-runner-scale-set mode

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions