You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何指定Azure Arc Runner Pod在ARM64架构K8s节点部署?

解决Azure Arc Runner架构调度不匹配问题

问题背景

Azure Kubernetes集群同时部署AMD64和ARM64节点,Azure Arc Runner的Pod被随机调度到AMD64节点后,运行ARM64架构的MySQL镜像时因架构不兼容导致工作流失败,而Arc Runner Controller的Helm Chart未提供直接指定Pod架构的配置项。

解决方案

1. 通过节点选择器强制调度到ARM64节点

在Runner Scale Set的Helm配置中,为Runner Pod添加nodeSelector,指定仅调度到kubernetes.io/arch=arm64的节点:

修改values.yaml

containerMode:
  type: "dind"
runnerPod:
  nodeSelector:
    kubernetes.io/arch: arm64

或在Terraform中直接设置(无需修改values.yaml)

在helm_release.arc_runners资源中新增set块:

resource "helm_release" "arc_runners" {
  # 原有配置...

  set {
    name  = "runnerPod.nodeSelector.kubernetes.io/arch"
    value = "arm64"
  }
}

2. 使用节点亲和性实现灵活调度(可选)

如果需要更复杂的调度逻辑(比如优先选择ARM64节点,无可用节点时再 fallback 到AMD64),可以配置节点亲和性:

修改values.yaml

containerMode:
  type: "dind"
runnerPod:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: kubernetes.io/arch
            operator: In
            values:
            - arm64

3. 指定ARM64版本的DIND镜像(配合调度规则)

由于使用dind模式,需确保DIND容器本身为ARM64架构镜像,避免跨架构模拟引发的兼容问题:

containerMode:
  type: "dind"
  dindContainer:
    image: docker:dind-arm64v8
    tag: latest # 根据实际需求指定具体版本
runnerPod:
  nodeSelector:
    kubernetes.io/arch: arm64

验证配置

部署更新后的Runner Scale Set后,执行以下命令确认Pod是否成功调度到ARM64节点:

# 查看Runner Pod对应的节点
kubectl get pods -n arc-systems -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.nodeName}{"\n"}{end}'
# 查看节点架构信息
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.nodeInfo.architecture}{"\n"}{end}'

内容的提问来源于stack exchange,提问作者Manikanta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 14:26:05