我正在使用Kubernetes部署我的最新应用程序。我已经使用Docker对其进行了容器化,当我使用Docker对其进行部署时,它可以正常工作。如果然后我使用相同的映像,并尝试使用Kubernetes与
进行部署kubectl create deployment mydeploy --image=myimage
我收到以下错误,显示为我的crashloopbackoff
舱的状态。
如果我登录Pod,我可以看到该应用程序由于此错误而崩溃:
/bin/sh: 1: [npm,: not found
更奇怪的是,如果我现在再次尝试在docker中使用同一图像,则容器将无法启动,而我在docker中会得到完全相同的错误。如果我重建映像,它将再次与docker一起使用,但是我仍然无法使用Kubernetes进行有效的部署。
我已将kubectl create deployment
与其他人的图像一起使用,并且效果很好,仅在使用为应用程序构建的图像时才出现问题。
请帮助!
答案 0 :(得分:1)
我前一段时间实际上也遇到过同样的问题。
对我来说,问题的原因与Kubernetes加载图像时如何使用权限有关。我在Mac上使用Kubernetes进行所有开发工作,在该设置中,docker和Kubernetes有点与docker桌面链接在一起。问题是,如果Kube认为它没有访问该映像的权限,它将尝试创建一个部署,但是不会使用您指定的映像,因为它没有被授予访问权限。如果您的图片标签名称拼写错误,也会遇到相同的错误。
在我的情况下,标签名称正确,但是在尝试在Kube中运行它之前,我需要将新创建的映像推送到docker。完成后,Kube拥有使用该映像所需的权限,因此我能够毫无问题地进行部署。
首先,我会检查图像标签上的拼写,如果看起来不错,请尝试将其推入docker,然后再部署Kube。希望这会有所帮助!