在Deployment中使用Pod模板文件

115次阅读
没有评论

问题描述

在研究Kubernetes中的Deployments描述时,发现在教程中复制粘贴Pod模板文件来定义复制的Pods。用户想知道是否可以使用对Pod定义的yaml文件的引用(或URL),而不是复制整个文件。用户还想知道是否应该避免这样做(例如,为了保持标签/选择器在同一个文件中)以及是否有原因不允许这样做(因为Kubernetes无法知道您是否修改了Pod模板文件)。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

是的,您可以使用kubectl从URL的yaml文件创建资源(包括Pods)。但是,仅仅因为您指向了一个远程URL,并不意味着资源会自动更新。当远程yaml文件更新时,您需要重新部署,开发/集成一个处理此问题的服务,或者使用类似helm的工具来帮助管理更改。
这并不需要避免,只需要知道如果源文件发生更改,它不会自动更新。

方案2

个别的Kubernetes对象必须是自包含的(除非有一些机制可以将Secret值注入到环境变量中)。Kubernetes服务器不知道您的本地文件系统。
不,单个Kubernetes对象必须是自包含的(除非有一些机制可以将Secret值注入到环境变量中)。Kubernetes服务器不知道您的本地文件系统。
如果您确实需要几乎相同的部署和裸Pod,可以使用其中一个模板系统(Helm是比较标准但不是唯一的选择)来减少重复。您可以编写类似以下的内容:

---apiVersion: v1kind: Pod{{ template "pod-spec" . }}---apiVersion: apps/v1kind: Deploymentspec:  template:{{ include "pod-spec" . | trim | indent 4 }}

在上面的示例中,我们使用了Helm模板系统,它允许您在部署描述文件中引用Pod模板文件。这样,您可以减少重复,并确保部署和Pod之间的一致性。
请注意,这只是一个示例,您可以根据自己的需求进行调整和修改。

正文完