AWS EKS 上的 Golang REST API 部署因 CrashLoopBackOff

我正在尝试将一个用 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.


PIPIONE
浏览 91回答 2
2回答

慕莱坞森

将其发布为社区 wiki 以获得更好的可见性。随意扩展它。感谢@David Maze,他指出了解决方案。这里有一篇文章“从 Mac M1 (ARM) 构建与 Intel64 兼容的 Docker 映像”(作者 Beppe Catanese&nbsp;)。This article很好地描述了潜在的问题。您正在 ARM 架构 (Mac M1) 上开发/构建,但您将 docker 映像部署到基于 x86-64 架构的 Kubernetes 集群。解决方案:选项A:使用buildxBuildx是一个 Docker 插件,除其他功能外,它还允许为各种目标平台构建图像。$&nbsp;docker&nbsp;buildx&nbsp;build&nbsp;--platform&nbsp;linux/amd64&nbsp;-t&nbsp;myapp&nbsp;.选项B:设置DOCKER_DEFAULT_PLATFORMDOCKER_DEFAULT_PLATFORM 环境变量允许为采用 --platform 标志的命令设置默认平台。export&nbsp;DOCKER_DEFAULT_PLATFORM=linux/amd64

神不在的星期二

CrashloopBackOff 意味着您有一个 pod 启动、崩溃、再次启动,然后再次崩溃。也许错误来自应用程序本身,它无法连接到数据库,redis,......
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go