好的,我已经知道SO上有很多错误,但是我找不到适合我的案例。
前提:
我的环境是带有M1的MacOS。
我有一个EKS集群与linux(amd64)作为AWSOS架构。
当我尝试使用Quarkus构建和部署我的微服务时,我application.properties:
quarkus.container-image.image=<my ECR repository>
quarkus.container-image.build=true
quarkus.container-image.push=true
quarkus.jib.platforms=linux/amd64
我正在使用吊臂扩展来构建图像。
一旦图像成功部署在我的ECRaws注册表,我启动:
kubectl apply -f target/kubernetes/kubernetes.yaml
然后
kubectl get po
我明白了
NAME READY STATUS RESTARTS AGE
kube-cm-example-6ffd58655-rzzqh 0/1 CrashLoopBackOff 8 16m
然后呢
kubectl logs kube-cm-example-6ffd58655-rzzqh
返回以下输出
standard_init_linux.go:219: exec user process caused: exec format error
我在许多来源上读到它是一个平台映像问题,但是使用jib我设置了linux/amd64,它是节点的相同拱。
我还尝试手动构建一个docker镜像,指定平台=linux/amd64,然后部署到ECR,但没有任何变化。
根据观察,可能是您的库伯内特斯集群在启动pod时没有从ECR拉取新更新的图像。除非满足某些条件,否则k8s的默认拉取策略会跳过已经存在的图像。在开发过程中,您可以考虑使其始终拉取图像。看看这个堆栈溢出问题。