【发布时间】:2018-06-03 22:33:14
【问题描述】:
我有这个基本的 Dockerfile:
FROM nginx
RUN apt-get -y update && apt install -y curl
在我的 Kubernetes 集群的主节点中,我构建了该映像:
docker build -t cnginx:v1 .
docker images表示图片已经正确生成:
REPOSITORY TAG IMAGE ID CREATED SIZE
cgninx v1 d3b1b19d069e 39 minutes ago 141MB
我使用这个部署引用这个自定义图像:
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
描述 pod 信息:
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,以及一些其他的东西,比如用最新的标记图像......
那么,如何让 Kubernetes 使用本地生成的 docker 镜像?
【问题讨论】:
-
您在一个节点上构建并试图在另一个节点上运行它?还是这一切都在同一个节点上?
-
集群由三个节点组成,一个master,两个worker。我正在主节点上构建映像。
-
对,正如公认的那样,这就是问题所在:p 你在一个地方构建并试图在其他地方运行它(它不存在的地方)。
-
是的,呵呵,我的错 :-)
标签: docker kubernetes