我正在使用Kubernetes部署我的最新应用。我已经使用Docker将其容器化,当我使用Docker部署它时,它工作正常。如果我随后使用相同的映像并尝试使用Kubernetes部署它,
kubectl create deployment mydeploy --image=myimage
我得到以下错误显示为我的pod crashloopbackoff
的状态。
如果我记录pod,我可以看到应用程序崩溃,因为这个错误:/bin/sh: 1: [npm,: not found
更奇怪的是,如果我现在尝试在docker中再次使用相同的映像,容器无法启动,并且在docker中得到完全相同的错误。如果我重新构建映像,它将再次开始使用docker,但我仍然没有获得使用Kubernetes的工作部署。
我用过kubectl create deployment
和其他人的图像,它工作得很好,只有当我使用我为我的应用程序构建的图像时,它才是一个问题。
救命啊!
1条答案
按热度按时间63lcw9qa1#
其实我也有同样的问题。
对我来说,这个问题的原因与Kubernetes在加载映像时如何使用权限有关。我在Mac上使用Kubernetes进行所有的开发工作,在该设置中,docker和Kubernetes有点像是通过docker桌面链接在一起的。问题是,如果Kube认为它没有权限访问映像,它将尝试创建一个部署,但不会使用您指定的映像。因为它还没有被授予访问权限。如果你有一个拼写错误的图像标签名称,你也会得到同样的错误。
在我的例子中,标签名称是正确的,但我需要在尝试在Kube中运行之前将新创建的映像推送到Docker。一旦我这样做了,Kube就有了使用映像所需的权限访问,我就可以毫无问题地部署了。
首先,我会检查你的图像标签的拼写,如果看起来不错,尝试把它推到docker之前,你部署与Kube。希望这有助于!