amazon-eks - standard_init_linux.go:219:exec 用户进程导致:exec 格式错误 ECR + Quarkus
问题描述
好的,我已经知道 SO 上有很多错误,但是我找不到任何适合我的情况。
前提:
我的环境是带有 M1 的 MacOS。
我有一个使用linux (amd64)作为 AWS 上的操作系统架构的 EKS 集群。
在尝试使用 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
我正在使用 jib 扩展来构建图像。
在我的 ECR aws 注册表上成功部署映像后,我将启动:
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,它与节点的拱门相同。
我还尝试手动构建一个指定 platform=linux/amd64 的 docker 映像,然后部署到 ECR,但没有任何变化。
解决方案
根据观察结果,可能是您的 Kubernetes 集群在启动 pod 时没有从 ECR 中提取新更新的图像。除非满足某些条件,否则 k8s 的默认拉取策略会跳过拉取已经存在的镜像。在开发过程中,您可以考虑让它始终拉取图像。看看这个Stack Overflow 问题。
推荐阅读
- rust - 为什么在基于类型实现宏时需要在 <$a> 中使用尖括号?
- sql - 如何插入从子查询(SQL)返回的多条数据记录
- android - Android:如果我有一部新手机并从旧手机恢复应用程序,如果我不启动该应用程序,后台任务是否仍会运行?
- ios - 将 segue 展开到以编程方式指定的 unwindSegue(无情节提要)
- c# - 如何使用 Linq 语法为给定的 MQL 聚合异步和项目?
- next.js - 我的 nextjs 应用程序中没有 index.html 文件。Netlify 不喜欢这样
- sas - SAS 文件名超过 32 个字符
- javascript - 如何通过 API 调用将图像添加到 React 而不是导入图像?
- html - CSS:悬停一个元素,并创建两个框?
- bash - 如何在匹配关键字后将 bash 变量添加到文本文件?