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

M1芯片2020款Mac Air上Minikube部署hello-node失败如何解决

问题根因

k8s.gcr.io/echoserver:1.4镜像发布时间较早,仅提供linux/amd64架构构建版本,未适配M1系列芯片使用的linux/arm64/v8架构。M1设备默认拉取该镜像后会尝试跨架构运行,镜像内针对amd64架构编译的Nginx与Lua模块无法在arm64环境下正常执行,最终触发Lua VM初始化失败报错,导致Pod无法进入就绪状态。

可行解决方案
  • 方案1:替换为支持多架构的官方镜像版本(优先推荐)
    先清理已创建的异常部署:
    kubectl delete deployment hello-node
    
    官方后续发布的echoserver版本已完成多架构适配,直接使用新版镜像创建部署即可,无需调整集群配置:
    kubectl create deployment hello-node --image=registry.k8s.io/echoserver:1.10
    
    等待10-20秒后执行kubectl get pods,当Pod状态显示为Running、READY列为1/1时即部署正常,查看日志不会再出现Lua VM初始化报错。
  • 方案2:启动amd64架构的Minikube节点(兜底方案,适配必须使用老版本镜像的场景)
    若测试场景必须依赖k8s.gcr.io/echoserver:1.4特定版本,可让Minikube启动运行在Rosetta 2转译层上的amd64架构集群,从节点层面兼容所有amd64镜像:
    先删除现有arm64架构的Minikube集群:
    minikube delete
    
    启动时指定架构参数:
    minikube start --driver=docker --arch=amd64
    
    集群启动完成后,执行原教程的部署命令即可正常运行,不会出现架构不兼容问题。
  • 方案3:单容器指定运行平台(临时测试用,成功率低于前两个方案)
    若不想重建整个Minikube集群,可在创建部署时显式指定容器以linux/amd64平台运行,依赖Docker Desktop的跨架构转译能力执行:
    kubectl delete deployment hello-node
    kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4 --overrides='{"spec":{"template":{"spec":{"containers":[{"name":"echoserver","image":"k8s.gcr.io/echoserver:1.4"}],"nodeSelector":{"kubernetes.io/arch":"amd64"}}}}}'
    
    注意:1.4版本镜像依赖的系统库版本过旧,跨架构转译时仍有概率出现运行异常,优先选择前两个方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:39:16