无法通过minikube从不安全的注册表中提取图像



我有一个本地不安全的docker注册表,它是我使用以下命令创建的:

docker run -d -p 5000:5000 --restart=always --name registry registry:2` 

我也将其添加到了/etc/docker/daemon.json中。我用localhost:5000/<orgname>/<imagename>:<tag>格式标记了几个图像,并将它们推送到不安全的注册表中。

当我运行curl -X GET localhost:5000/v2/_catalog时,我可以看到它们在本地注册表中可用。

我用命令minikube start --insecure-registry="localhost:5000"启动了minikube。这里,我的默认驱动程序是docker(我也尝试过kvm2(。我也使用命令minikube addons enable registry启用了注册表插件

我有一个configmap,它以我前面提到的格式声明图像。当我使用kubectl应用它时,我会得到一个ImagePullBackoff错误,错误消息为

Failed to pull image "localhost:5000/org/product:tag": rpc error: code = Unknown desc = Error response from daemon: manifest for localhost:5000/org/product:tag not found: manifest unknown: manifest unknown

有什么关于为什么会发生这种情况的想法吗?

Docker版本:19.03.8, build afacb8b7f0

Minikube版本:1.9.2

Ubuntu 20.04 LTS

好吧,minikube K8s子网与注册表正在运行的子网不同,所以如果不进行一些调整,localhost就无法工作。我建议遵循minikube官方指南,不要运行:

docker run -d -p 5000:5000 --restart=always --name registry registry:2` 

本质上,它说运行后:

minikube addons enable registry

然后当你创建你的minikube实例

minikube start --drive=docker --insecure-registry "10.0.0.0/24"

我能够通过用我的IP替换localhost来解决这个问题。

minikube start --insecure-registry="<IP-of-your-computer>:5000"

在标记图像并将其推送到本地注册表时,必须使用IP而不是localhost。

我在Ubuntu 20.04 上使用了以下内容

  1. 以不安全注册表作为计算机的ip启动minikube:
    minikube start --insecure-registry="<your-computer-ip>:5000"
  2. 启用注册表:
    minikube addons enable registry
  3. 确保注册表已启动并正在运行:
    kubectl get service --namespace kube-system
>名称类型集群-IP外部IP端口年龄>kube dns ClusterIP 10.96.0.10 none 53/UDP,53/TCP,9153/TCP 54m>registry ClusterIP 10.98.34.333 none 80/TCP,443/TCP 37m
  1. 端口转发到本地主机:
    kubectl port-forward --namespace kube-system service/registry 5000:80
  2. 构建图像并将其推送到localhost
    docker tag my/image localhost:5000/myimage
    docker push localhost:5000/myimage
  3. 使用部署yaml中的映像并使用kubectl应用在yaml文件中:
容器:-名称:应用程序名称image:localhost:5000/image-name:latest

相关内容

  • 没有找到相关文章

最新更新