如何在Kubernetes中使用本地docker镜像? [英] How can I use a local docker image in Kubernetes?

查看:415
本文介绍了如何在Kubernetes中使用本地docker镜像?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个基本的Dockerfile:

I have this basic Dockerfile:

FROM nginx
RUN apt-get -y update && apt install -y curl

在我的Kubernetes集群的主节点中,构建该映像:

In the master node of my Kubernetes cluster I build that image:

docker build -t cnginx:v1 . 

docker images显示图像已正确生成:

docker images shows that the image has been correctly generated:

REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
cgninx                                     v1                  d3b1b19d069e        39 minutes ago      141MB

我使用此部署引用此自定义映像:

I use this deployment referencing this custom image:

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 
  template: 
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: cnginx
        image: cnginx:v1
        imagePullPolicy: Never
        ports:
        - containerPort: 80
      nodeSelector:
        nodetype: webserver

但是找不到图像:

NAME                                READY     STATUS              RESTARTS   AGE
nginx-deployment-7dd98bd746-lw6tp   0/1       ErrImageNeverPull   0          4s
nginx-deployment-7dd98bd746-szr9n   0/1       ErrImageNeverPull   0          4s

描述广告连播信息:

Events:
  Type     Reason                 Age              From                Message
  ----     ------                 ----             ----                -------
  Normal   Scheduled              1m               default-scheduler   Successfully assigned nginx-deployment-7dd98bd746-szr9n to kubenode2
  Normal   SuccessfulMountVolume  1m               kubelet, kubenode2  MountVolume.SetUp succeeded for volume "default-token-bpbpl"
  Warning  ErrImageNeverPull      9s (x9 over 1m)  kubelet, kubenode2  Container image "cnginx:v1" is not present with pull policy of Never
  Warning  Failed                 9s (x9 over 1m)  kubelet, kubenode2  Error: ErrImageNeverPull

我还尝试使用默认的imagePullPolicy以及其他一些东西,例如使用最新的标签标记图像...

I have also tried using the default imagePullPolicy, and some other things such as tagging the image with latest...

那么,如何使Kubernetes使用本地生成的docker映像?

So, how can I make Kubernetes use a locally generated docker image?

推荐答案

您的POD已安排在您的工作节点上.由于将imagePullPolicy设置为Never,因此需要使图像可用于两个节点.换句话说,您需要像在主节点上一样在两个节点上进行构建.

Your PODs are scheduled on your worker nodes. Since you set imagePullPolicy to Never you need to make your image available to both nodes. In other words, you need to build it on both nodes as you did on the master.

作为一个旁注,如果您设置一个自定义docker注册表并将图像推送到那里,从长远来看可能会更容易.

As a sidenote, it would be probably easier in the long term if you setup a custom docker registry and push your images there.

这篇关于如何在Kubernetes中使用本地docker镜像?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆