在本地Kubernetes集群上,如何在Kubernetes部署清单中使用本地构建映像,而不将其上载到Docker注册表(如Docker Hub)?
除了一些非常有限的面向开发人员的设置(如Minikube或Kind),在Kubernetes上运行应用程序基本上需要某种形式的Docker注册表。
将Docker映像加载到系统上的唯一两种方法是运行注册表,或者加载它。docker load
路径涉及将一个(可能较大的)图像tar文件传输到集群中的每个节点,并在那里运行load
命令。更新应用程序映像时,必须重复此步骤;您通常希望避免使用最新的
图像标记和类似的固定字符串,以便Kubernetes部署机制能够正确地更新内容,因此您必须对每个版本重复此操作,集群中的任何内容都可能仍在使用。设置存储图像的位置、将图像复制到集群中的每个节点、到处运行docker load
等等的机制实际上并不比自己运行docker registry server简单。
你已经有了一台prem机器。您所需要做的只是从dockerfile执行docker构建,执行合适的docker标记并创建清单。
Kubernetes不会直接从注册表中提取。它首先在本地存储器上搜索图像,然后在docker注册表中搜索图像。
>
拉最新的nginx图像
docker pull nginx
docker标签nginx:最新测试:test8970
kind: Deployment
metadata:
labels:
run: test
name: test
spec:
replicas: 1
selector:
matchLabels:
run: test
template:
metadata:
creationTimestamp: null
labels:
run: test
spec:
containers:
- image: test:test8070
name: test
imagePullPolicy: Never