拉取本地镜像以在 Kubernetes 中运行 Pod

新手上路,请多包涵

我有以下由 Dockerfile 创建的图像:

 REPOSITORY   TAG      IMAGE ID       CREATED       SIZE
ruby/lab     latest   f1903b1508cb   2 hours ago   729.6 MB

我有以下 YAML 文件:

 apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: ruby-deployment
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: ruby
    spec:
      containers:
      - name: ruby-app
        image: ruby/lab
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 4567

当我创建部署时,我在 pod 中获得了以下信息:

 ruby-deployment-3830038651-sa4ii   0/1       ImagePullBackOff   0          7m
ruby-deployment-3830038651-u1tvc   0/1       ImagePullBackOff   0          7m

以及来自下面的错误 Failed to pull image "ruby/lab:latest": Error: image ruby/lab not found

  8m            2m              6       {kubelet minikube}      spec.containers{ruby}   Normal          Pulling         pulling image "ruby/lab:latest"
 8m            2m              6       {kubelet minikube}      spec.containers{ruby}   Warning         Failed          Failed to pull image "ruby/lab:latest": Error: image ruby/lab not found
 8m            2m              6       {kubelet minikube}                              Warning         FailedSync      Error syncing pod, skipping: failed to "StartContainer" for "ruby" with ErrImagePull: "Error: image ruby/lab not found"

真的有必要在docker中有注册表吗?我只想在本地进行测试并将我的代码/存储库传递给朋友以进行测试

谢谢

原文由 CPB 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您可以通过运行将 docker 客户端指向 VM 的 docker 守护进程

eval $(minikube docker-env)

然后你就可以正常构建你的镜像,并使用 kubectl 正常创建你的 kubernetes 资源。确保你有

imagePullPolicy: IfNotPresent

在您的 YAML 或 JSON 规范中。

此外,还有一个标志可以将不安全的注册表传递给 minikube VM。但是,这必须在您第一次创建机器时指定。

 minikube start --insecure-registry

您可能还想在使用私有注册表时阅读此内容 http://kubernetes.io/docs/user-guide/images/

原文由 Matt Rickard 发布,翻译遵循 CC BY-SA 3.0 许可协议

AFAIR minikube 在虚拟机中运行,因此它不会看到您在主机上本地构建的图像,但是……如 https://github.com/kubernetes/minikube/blob/master/docs/reusing_the_docker_daemon 中所述。 md ,您可以使用 eval $(minikube docker-env) 来实际利用在 minikube 上运行的 docker 守护进程,然后在 minikubes docker 上构建您的映像,从而期望它可用于 minikubes k8s 引擎,而无需从外部注册表中提取

原文由 Radek ’Goblin‘ Pieczonka 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题