What dictates the image that is used for the Drone controller job in kubernetes

I am running a Kubernetes ARM cluster but the job spawned starts pulling down a drone/controller image and is attempting to use the linux-amd64 tag.

Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  16s   default-scheduler  Successfully assigned builds/drone-job-68rvz-425vq to kube2
  Normal  Pulling    13s   kubelet, kube2     pulling image "drone/controller:linux-amd64"
  Normal  Pulled     12s   kubelet, kube2     Successfully pulled image "drone/controller:linux-amd64"
  Normal  Created    11s   kubelet, kube2     Created container
  Normal  Started    10s   kubelet, kube2     Started container
kubectl logs drone-job-68rvz-425vq
standard_init_linux.go:190: exec user process caused "exec format error"

The drone server deployment is using drone/drone:1.0.0-rc.3 in the arm cluster.

❯ kubectl exec drone-deploy-bbd8848b5-w9rqn -- cat /proc/cpuinfo | grep -m 1 'model name'
model name      : ARMv7 Processor rev 4 (v7l)

I see drone/controller:1.0.0-rc.3-linux-arm exists, but how do I tell my Drone server deployment to spawn jobs from it? I don’t see any new environment variables for this.

Did you try using platform in .drone.yml:

https://docs.drone.io/user-guide/pipeline/multi-platform/

Kubernetes is currently x86 only. Our scheduler does not support the beta.kubernetes.io/arch or beta.kubernetes.io/os affinity labels, although this is something I hope to support in the future.

Alright thanks. I’ll be sure to test it out if I see it supported in the future.