为了账号安全,请及时绑定邮箱和手机立即绑定

AWS EKS 上的 Golang REST API 部署因 CrashLoopBackOff

AWS EKS 上的 Golang REST API 部署因 CrashLoopBackOff

Go
PIPIONE 2022-11-23 14:21:39

我正在尝试将一个用 Golang 编写的简单 REST API 部署到 AWS EKS。


我使用 Terraform 在 AWS 上创建了一个 EKS 集群,并将 AWS 负载均衡器控制器 Helm 图表应用于它。


集群中的所有资源如下所示:


NAMESPACE     NAME                                                READY   STATUS    RESTARTS   AGE

kube-system   pod/aws-load-balancer-controller-5947f7c854-fgwk2   1/1     Running   0          75m

kube-system   pod/aws-load-balancer-controller-5947f7c854-gkttb   1/1     Running   0          75m

kube-system   pod/aws-node-dfc7r                                  1/1     Running   0          120m

kube-system   pod/aws-node-hpn4z                                  1/1     Running   0          120m

kube-system   pod/aws-node-s6mng                                  1/1     Running   0          120m

kube-system   pod/coredns-66cb55d4f4-5l7vm                        1/1     Running   0          127m

kube-system   pod/coredns-66cb55d4f4-frk6p                        1/1     Running   0          127m

kube-system   pod/kube-proxy-6ndf5                                1/1     Running   0          120m

kube-system   pod/kube-proxy-s95qk                                1/1     Running   0          120m

kube-system   pod/kube-proxy-vdrdd                                1/1     Running   0          120m


NAMESPACE     NAME                                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE

default       service/kubernetes                          ClusterIP   10.100.0.1      <none>        443/TCP         127m

kube-system   service/aws-load-balancer-webhook-service   ClusterIP   10.100.202.90   <none>        443/TCP         75m

kube-system   service/kube-dns                            ClusterIP   10.100.0.10     <none>        53/UDP,53/TCP   127m


我可以使用 Go 和 Docker 在本地运行应用程序。但是在 AWS EKS 上发布这个总是抛出CrashLoopBackOff.


查看完整描述

2 回答

?
慕莱坞森

TA贡献1547条经验 获得超4个赞

将其发布为社区 wiki 以获得更好的可见性。随意扩展它。


感谢@David Maze,他指出了解决方案。这里有一篇文章“从 Mac M1 (ARM) 构建与 Intel64 兼容的 Docker 映像”(作者 Beppe Catanese )
This article很好地描述了潜在的问题。

您正在 ARM 架构 (Mac M1) 上开发/构建,但您将 docker 映像部署到基于 x86-64 架构的 Kubernetes 集群。

解决方案:

选项A:使用buildx

Buildx是一个 Docker 插件,除其他功能外,它还允许为各种目标平台构建图像。

$ docker buildx build --platform linux/amd64 -t myapp .

选项B:设置DOCKER_DEFAULT_PLATFORM

DOCKER_DEFAULT_PLATFORM 环境变量允许为采用 --platform 标志的命令设置默认平台。

export DOCKER_DEFAULT_PLATFORM=linux/amd64


查看完整回答
反对 回复 2022-11-23
?
神不在的星期二

TA贡献1657条经验 获得超6个赞

CrashloopBackOff 意味着您有一个 pod 启动、崩溃、再次启动,然后再次崩溃。

也许错误来自应用程序本身,它无法连接到数据库,redis,......


查看完整回答
反对 回复 2022-11-23

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信