macos m1 芯片无法安装kubeedge keadm 解决办法
官方提供的几种下载方式,不论是下载二进制文件还是运行镜像从容器中复制到外面文件都无法执行
MacBookM1Pro keadm % ./keadm --help
zsh: exec format error: ./keadm
在尝试下载不同的包无法使用之后,最后通过下载源码编译解决问题
git clone https://github.com/kubeedge/kubeedge.git
git checkout v1.17.0
make BUILD_WITH_CONTAINER=false
然后可以看到输出了一些日志
MacBookM1Pro kubeedge % make BUILD_WITH_CONTAINER=false
KUBEEDGE_OUTPUT_SUBPATH=_output/local hack/make-rules/build.sh
go detail version: go version go1.22.0 darwin/arm64
go version: 1.22.0
building github.com/kubeedge/kubeedge/cloud/cmd/cloudcore
+ go build -o /Users/liudui/go/src/kubeedge/_output/local/bin/cloudcore -gcflags= -ldflags '-s -w -buildid= -X github.com/kubeedge/kubeedge/pkg/version.buildDate=2025-09-18T00:56:22Z -X github.com/kubeedge/kubeedge/pkg/version.gitCommit=d9bbf3d5b8c90d763e9a4bb3353264a866221ffe -X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=clean -X github.com/kubeedge/kubeedge/pkg/version.gitVersion=v1.17.0 -X github.com/kubeedge/kubeedge/pkg/version.gitMajor=1 -X github.com/kubeedge/kubeedge/pkg/version.gitMinor=17' github.com/kubeedge/kubeedge/cloud/cmd/cloudcore
+ set +x
building github.com/kubeedge/kubeedge/cloud/cmd/admission
+ go build -o /Users/liudui/go/src/kubeedge/_output/local/bin/admission -gcflags= -ldflags '-s -w -buildid= -X github.com/kubeedge/kubeedge/pkg/version.buildDate=2025-09-18T00:56:22Z -X github.com/kubeedge/kubeedge/pkg/version.gitCommit=d9bbf3d5b8c90d763e9a4bb3353264a866221ffe -X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=clean -X github.com/kubeedge/kubeedge/pkg/version.gitVersion=v1.17.0 -X github.com/kubeedge/kubeedge/pkg/version.gitMajor=1 -X github.com/kubeedge/kubeedge/pkg/version.gitMinor=17' github.com/kubeedge/kubeedge/cloud/cmd/admission
+ set +x
building github.com/kubeedge/kubeedge/keadm/cmd/keadm
+ go build -o /Users/liudui/go/src/kubeedge/_output/local/bin/keadm -gcflags= -ldflags '-s -w -buildid= -X github.com/kubeedge/kubeedge/pkg/version.buildDate=2025-09-18T00:56:22Z -X github.com/kubeedge/kubeedge/pkg/version.gitCommit=d9bbf3d5b8c90d763e9a4bb3353264a866221ffe -X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=clean -X github.com/kubeedge/kubeedge/pkg/version.gitVersion=v1.17.0 -X github.com/kubeedge/kubeedge/pkg/version.gitMajor=1 -X github.com/kubeedge/kubeedge/pkg/version.gitMinor=17' github.com/kubeedge/kubeedge/keadm/cmd/keadm
+ set +x
building github.com/kubeedge/kubeedge/edge/cmd/edgecore
+ go build -o /Users/liudui/go/src/kubeedge/_output/local/bin/edgecore -gcflags= -ldflags '-s -w -buildid= -X github.com/kubeedge/kubeedge/pkg/version.buildDate=2025-09-18T00:56:22Z -X github.com/kubeedge/kubeedge/pkg/version.gitCommit=d9bbf3d5b8c90d763e9a4bb3353264a866221ffe -X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=clean -X github.com/kubeedge/kubeedge/pkg/version.gitVersion=v1.17.0 -X github.com/kubeedge/kubeedge/pkg/version.gitMajor=1 -X github.com/kubeedge/kubeedge/pkg/version.gitMinor=17' github.com/kubeedge/kubeedge/edge/cmd/edgecore
+ set +x
building github.com/kubeedge/kubeedge/edgesite/cmd/edgesite-agent
+ go build -o /Users/liudui/go/src/kubeedge/_output/local/bin/edgesite-agent -gcflags= -ldflags '-s -w -buildid= -X github.com/kubeedge/kubeedge/pkg/version.buildDate=2025-09-18T00:56:22Z -X github.com/kubeedge/kubeedge/pkg/version.gitCommit=d9bbf3d5b8c90d763e9a4bb3353264a866221ffe -X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=clean -X github.com/kubeedge/kubeedge/pkg/version.gitVersion=v1.17.0 -X github.com/kubeedge/kubeedge/pkg/version.gitMajor=1 -X github.com/kubeedge/kubeedge/pkg/version.gitMinor=17' github.com/kubeedge/kubeedge/edgesite/cmd/edgesite-agent
+ set +x
building github.com/kubeedge/kubeedge/edgesite/cmd/edgesite-server
+ go build -o /Users/liudui/go/src/kubeedge/_output/local/bin/edgesite-server -gcflags= -ldflags '-s -w -buildid= -X github.com/kubeedge/kubeedge/pkg/version.buildDate=2025-09-18T00:56:22Z -X github.com/kubeedge/kubeedge/pkg/version.gitCommit=d9bbf3d5b8c90d763e9a4bb3353264a866221ffe -X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=clean -X github.com/kubeedge/kubeedge/pkg/version.gitVersion=v1.17.0 -X github.com/kubeedge/kubeedge/pkg/version.gitMajor=1 -X github.com/kubeedge/kubeedge/pkg/version.gitMinor=17' github.com/kubeedge/kubeedge/edgesite/cmd/edgesite-server
+ set +x
building github.com/kubeedge/kubeedge/cloud/cmd/csidriver
+ go build -o /Users/liudui/go/src/kubeedge/_output/local/bin/csidriver -gcflags= -ldflags '-s -w -buildid= -X github.com/kubeedge/kubeedge/pkg/version.buildDate=2025-09-18T00:56:22Z -X github.com/kubeedge/kubeedge/pkg/version.gitCommit=d9bbf3d5b8c90d763e9a4bb3353264a866221ffe -X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=clean -X github.com/kubeedge/kubeedge/pkg/version.gitVersion=v1.17.0 -X github.com/kubeedge/kubeedge/pkg/version.gitMajor=1 -X github.com/kubeedge/kubeedge/pkg/version.gitMinor=17' github.com/kubeedge/kubeedge/cloud/cmd/csidriver
+ set +x
building github.com/kubeedge/kubeedge/cloud/cmd/iptablesmanager
+ go build -o /Users/liudui/go/src/kubeedge/_output/local/bin/iptablesmanager -gcflags= -ldflags '-s -w -buildid= -X github.com/kubeedge/kubeedge/pkg/version.buildDate=2025-09-18T00:56:22Z -X github.com/kubeedge/kubeedge/pkg/version.gitCommit=d9bbf3d5b8c90d763e9a4bb3353264a866221ffe -X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=clean -X github.com/kubeedge/kubeedge/pkg/version.gitVersion=v1.17.0 -X github.com/kubeedge/kubeedge/pkg/version.gitMajor=1 -X github.com/kubeedge/kubeedge/pkg/version.gitMinor=17' github.com/kubeedge/kubeedge/cloud/cmd/iptablesmanager
+ set +x
building github.com/kubeedge/kubeedge/edge/cmd/edgemark
+ go build -o /Users/liudui/go/src/kubeedge/_output/local/bin/edgemark -gcflags= -ldflags '-s -w -buildid= -X github.com/kubeedge/kubeedge/pkg/version.buildDate=2025-09-18T00:56:22Z -X github.com/kubeedge/kubeedge/pkg/version.gitCommit=d9bbf3d5b8c90d763e9a4bb3353264a866221ffe -X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=clean -X github.com/kubeedge/kubeedge/pkg/version.gitVersion=v1.17.0 -X github.com/kubeedge/kubeedge/pkg/version.gitMajor=1 -X github.com/kubeedge/kubeedge/pkg/version.gitMinor=17' github.com/kubeedge/kubeedge/edge/cmd/edgemark
+ set +x
building github.com/kubeedge/kubeedge/cloud/cmd/controllermanager
+ go build -o /Users/liudui/go/src/kubeedge/_output/local/bin/controllermanager -gcflags= -ldflags '-s -w -buildid= -X github.com/kubeedge/kubeedge/pkg/version.buildDate=2025-09-18T00:56:22Z -X github.com/kubeedge/kubeedge/pkg/version.gitCommit=d9bbf3d5b8c90d763e9a4bb3353264a866221ffe -X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=clean -X github.com/kubeedge/kubeedge/pkg/version.gitVersion=v1.17.0 -X github.com/kubeedge/kubeedge/pkg/version.gitMajor=1 -X github.com/kubeedge/kubeedge/pkg/version.gitMinor=17' github.com/kubeedge/kubeedge/cloud/cmd/controllermanager
+ set +x
编译成功之后的结果
MacBookM1Pro bin % ls
admission cloudcore controllermanager csidriver edgecore edgemark edgesite-agent edgesite-server iptablesmanager keadm
liudui@MacBookM1Pro bin % ./keadm --help+----------------------------------------------------------+| KEADM || Easily bootstrap a KubeEdge cluster || || Please give us feedback at: || https://github.com/kubeedge/kubeedge/issues |+----------------------------------------------------------+Create a cluster with cloud node(which controls the edge node cluster), and edge nodes(where native containerized application, in the form ofpods and deployments run), connects to devices.
补充内容,在安装好之后执行 keadm init
出现了错误具体内容是
failed to exec 'bash -c pidof cloudcore 2>&1', err: , err: exit status 127
127 表示你没有 pidof
命令, 当然也没有必要安装这个命令。因为 pidof
命令是一个依赖于linux
内核/proc
文件系统的工具,所以在macos
上就算安装了也会无法工作出现错误的逻辑。这里需要修改源码,这个命令主要用来检测cloudcore
有没有安装,我们肯定没有安装,所以直接跳过这一步,然后再次打包。
keadm/cmd/keadm/app/cmd/util/common_others.go
func IsKubeEdgeProcessRunning(proc string) (bool, error) {procRunning := fmt.Sprintf("pidof %s 2>&1", proc)cmd := NewCommand(procRunning)err := cmd.Exec()//if cmd.ExitCode == 0 {// return true, nil//} else if cmd.ExitCode == 1 {// return false, nil//}return false, err
}