无法从Minikube Docker中拉取镜像

5
当我尝试在集群中运行容器时,会收到一条消息“deployment test created”,但是当我查看仪表板时,可以看到它处于错误状态(Failed to pull image...),由于授权问题,它无法从本地minikube docker环境中拉取图像。
我的步骤如下:
  1. 使用hyperv启动minikube,并将--insecure-registry开关设置为10.0.0.0/8,也尝试了0.0.0.0/0 - Kubernetes版本1.9.0,还尝试了1.8.0
  2. 通过minikube docker-env | Invoke-Expressiondocker env设置为minikube docker
  3. 构建docker镜像 - 镜像构建并存在于minikube本地docker中
  4. kubectl run test --image test-service --port 1101
这是结果: Failed Deployment 我错过了什么?

另外 - 我现在尝试了Docker提供的新内置本地Kubernetes解决方案,结果相同...我在这里记录了这个问题:https://github.com/docker/for-win/issues/1724 - Tim Jarvis
它是否类似于 https://github.com/openfaas/faas-netes/issues/135?我猜想这里没有像 https://dev59.com/r6nka4cB1Zd3GeqPIhnp 那样的拼写错误。 - VonC
@VonC 虽然这不完全是我的问题,但它确实指引了我正确的方向——我意识到这不是一个授权问题,而是总是想从外部仓库拉取。对我来说,解决方法是使用 IfNotPresent 的 imagePullPolicy。但正是你的链接让我走上了这条路,所以回答一下,100 分就归你了 :-) - Tim Jarvis
抱歉耽搁了,那边已经是晚上了 ;) - VonC
4个回答

5

如评论中所讨论的,openfaas/faas-netes的issue 135也说明了一个类似的问题,并提到了一种可能的解决方案:

imagePullPolicy如果没有被提到,应该默认为Never而不是Always

用户Tim Jarvis然后意识到:

我意识到这不是一个授权问题,而是它总是想从外部仓库拉取代码。
我的解决方法是使用imagePullPolicyIfNotPresent选项。


1
这也发生在我身上,重要的是检查政策以发送检索您的图像,有一些方法如一些论坛中所述,您可以通过设置首选项的注册表来启动minikube,作为路径。
$ minikube start --cpus 2 --disk-size 50g --memory 5000 --insecure-registry your.registry.com:5000

另一种方法是在启动minikube时通过docker-env来展示环境变量,具体步骤如下,并在命令执行后生成您的镜像构建。
$ eval $(minikube docker-env)

另一种选择是通过Docker Load将图像导入到现有的容器中。

1

在容器定义中设置以下属性:

imagePullPolicy: IfNotPresent

例子:

  ...
  containers:
    - name: podhealthexample
      image: podhealth-pod-a:latest
      ports:
        - containerPort: 80
      imagePullPolicy: IfNotPresent

0

请尝试以下步骤:

  • eval $(minikube docker-env)
  • minikube start

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接