我有这个基本的Dockerfile:
FROM nginx
RUN apt-get -y update && apt install -y curl
Run Code Online (Sandbox Code Playgroud)
在我的Kubernetes集群的主节点中,构建该映像:
docker build -t cnginx:v1 .
Run Code Online (Sandbox Code Playgroud)
docker images 显示图像已正确生成:
REPOSITORY TAG IMAGE ID CREATED SIZE
cgninx v1 d3b1b19d069e 39 minutes ago 141MB
Run Code Online (Sandbox Code Playgroud)
我使用此部署引用此自定义映像:
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
Run Code Online (Sandbox Code Playgroud)
但是找不到该图像:
NAME READY STATUS RESTARTS AGE
nginx-deployment-7dd98bd746-lw6tp 0/1 ErrImageNeverPull 0 4s
nginx-deployment-7dd98bd746-szr9n 0/1 ErrImageNeverPull 0 4s
Run Code Online (Sandbox Code Playgroud)
描述广告连播信息:
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
Run Code Online (Sandbox Code Playgroud)
我还尝试使用默认的imagePullPolicy和其他一些东西,例如使用最新标签标记图像...
那么,如何让Kubernetes使用本地生成的Docker映像?
您的POD已安排在您的工作节点上。由于设置imagePullPolicy为Never,因此需要使图像可用于两个节点。换句话说,您需要像在主节点上一样在两个节点上进行构建。
附带说明,从长远来看,如果您设置自定义docker注册表并将映像推送到那里,可能会更容易。
| 归档时间: |
|
| 查看次数: |
10872 次 |
| 最近记录: |