kubernetes Minikube无法从本地注册表中提取图像

brccelvz  于 2023-04-05  发布在  Kubernetes
关注(0)|答案(5)|浏览(172)

我运行了eval $(minikube docker-env),然后构建了一个docker容器。当我在我的主机上运行docker images时,我可以看到镜像。当我运行minikube ssh时,然后运行docker images,我可以看到它。
当我尝试运行它时,pod无法启动。kubectl describe pod给出:

14m     3m      7   kubelet, minikube   spec.containers{quoting-crab-customer-refresh-cache-cron}   Normal      Pulling         pulling image "personalisation-customer:latest"
14m     3m      7   kubelet, minikube   spec.containers{quoting-crab-customer-refresh-cache-cron}   Warning     Failed          Failed to pull image "personalisation-customer:latest": rpc error: code = 2 desc = Error: image library/personalisation-customer:latest not found
14m     2s      66  kubelet, minikube                                   Warning     FailedSync      Error syncing pod
14m     2s      59  kubelet, minikube   spec.containers{quoting-crab-customer-refresh-cache-cron}   Normal      BackOff         Back-off pulling image "personalisation-customer:latest"

我的imagePullPolicyAlways
是什么造成的?其他的分离舱在当地工作。

gr8qqesn

gr8qqesn1#

你并不是从你的本地注册表中拉取,你使用的是你以前下载的镜像或者你本地构建的镜像,因为你指定的是imagePullPolicy: Always,它总是会尝试从注册表中拉取它。
您的镜像不包含特定的docker注册表personalisation-customer:latest,docker将理解index.docker.io/personalisation-customer:latest,并且这是一个不存在于公共docker注册表中的镜像。
所以你有2个选项imagePullPolicy: IfNotPresent或上传图像到一些注册表。

sg24os4d

sg24os4d2#

本地Docker缓存不是注册表。Kubernetes尝试从Dockerhub(默认注册表)下载镜像,因为您将iMagePullPolicy设置为Always。将其设置为Never,因此Kubernetes使用本地镜像。

syqv5f0l

syqv5f0l3#

我有同样的问题。问题是没有提到图像版本。我用

kubectl run testapp1 --image=<image> --image-pull-policy=IfNotPresent

作为替代,

kubectl run testapp1 --image=<image>:<version> --image-pull-policy=IfNotPresent
djmepvbi

djmepvbi4#

对于minikube,进行如下更改:
1.使用以下命令评估docker env:eval $(迷你库对接器-环境)
1.构建Docker映像:docket build -t my-image
1.在yaml文件的pod规范中,将图像名称仅设置为“my-image”。
1.在yaml文件中将imagePullPolicy设置为Never。下面是示例:

apiVersion:
kind:
metadata:
spec:
  template:
     metadata:
        labels:
           app: my-image
  spec:
     containers:
       - name: my-image
       image: "my-image"
       imagePullPolicy: Never
rm5edbpk

rm5edbpk5#

您可以使用ssh向minikube发送ssh

minikube ssh -p <profilename>

然后把图像

docker pull <image>

确保imagePullPolicy: IfNotPresent
然后运行部署

相关问题