如何在Kubernetes中使用本地docker镜像? [英] How can I use a local docker image in Kubernetes?
问题描述
我有这个基本的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屋!