aga*_*lue 5 docker kubernetes-helm
如何使用 Helm 从本地文件系统部署 docker 映像?
图表中的语法是什么?
我不想从本地 docker 守护进程/存储库中提取数据,而是从适当的文件系统中提取数据。
file:///mumble/whatever所产生的docker build -o type=local,dest=mumble/whatever
组合的 Helm/Kubernetes/Docker 堆栈实际上并不是这样工作的。您必须在本地构建映像并将其推送到某种注册表,然后才能运行它(或者使用像 minikube 这样的纯本地环境)。“文件系统中的图像”根本不寻常。
Helm 对构建镜像一无所知;就此而言,Helm 本身并不真正了解图像。它知道如何将 Go 模板语言应用于文本文件以(希望)生成 YAML,并将其发送到 Kubernetes 集群,但 Helm 对这些含义的了解非常有限。在 Helm 图表中,您通常会写类似的内容
image: {{ .Values.registry }}/{{ .Values.image }}:{{ .Values.tag }}
Run Code Online (Sandbox Code Playgroud)
但这对 Helm 来说没有任何“意义”。
Kubernetes 确实理解image:其正常含义,但同样,这通常指的是位于 Docker Hub 或类似镜像注册表中的镜像,而不是“文件系统上”的镜像。对于 Kubernetes 来说,重要的是它期望有许多节点,因此如果节点上尚未存在映像,它知道如何从注册表中提取它。事实上,一个非常典型的设置是自动创建和销毁节点(通过集群自动缩放器),并且在 Pod 之外的节点上几乎不会有任何重要的东西。
这意味着,在实际使用中,你基本上必须有一个容器注册表。您可以使用 Docker Hub,或者在本地运行Docker Hub,或者使用云提供商提供的东西。如果您使用面向桌面的 Kubernetes 设置,minikube和kind都有运行注册表作为该设置的一部分的说明。
基本上唯一的例外是,在 minikube 中,您可以通过运行直接使用 minikube 的 Docker 守护进程
eval $(minikube docker-env)
docker build -t my-image .
Run Code Online (Sandbox Code Playgroud)
这会正常构建镜像,将其保留在“Docker 空间内”,但这里它位于 minikube VM 内。
文件中的 Docker 映像并不是特别有用。你唯一能用它做的就是docker load它;即使没有 Kubernetes 的普通 Docker 也无法直接运行它。如果您碰巧拥有该文件,您可以docker load按照我们上面构建它的方式将其放入 minikube 中,或者minikube load它。不过,如果可以的话,使用标准 Docker 注册表系统通常比尝试使用纯文件复制它更容易。
| 归档时间: |
|
| 查看次数: |
8155 次 |
| 最近记录: |