【发布时间】:2019-08-24 17:24:48
【问题描述】:
我有一个 Kubernetes pod(我们称之为 POD-A),我希望它使用某个配置文件来使用 k8s API 执行一些操作。配置文件将是 YAML 或 JSON,将由 pod 内的应用程序解析。
配置文件由云上的应用服务器托管,可以根据触发器拉取最新版本。配置文件包含 k8s 集群中所有部署的配置详细信息,将用于在 POD-A 中使用 k8s API 更新部署。
现在我想的是将此配置文件保存在配置映射中,每次拉取新配置文件时,使用 k8s API 的 pod 都会创建一个新配置映射。
我想要做的是用某个标志(一个键和一个值)更新以前的配置映射,这基本上可以帮助应用程序知道哪个是当前的部署版本。因此,假设我有一个正在运行的 k8s 集群,其中包含多个 pod,那里有一个配置映射,其中包含针对这些 pod 的所有配置详细信息(映像版本、命名空间等)和一个标志,通知这是当前部署和POD-A 中的应用程序将通过加载配置映射来知道这一点。现在,当拉取一个新的配置文件时,会创建一个新的配置映射,并且当前部署的标志对于前一个配置映射设置为 false,对于最新创建的配置映射设置为 true。然后该配置映射用于更新集群中的所有 pod。
我知道有很多细节,但我不得不解释它们以提出以下问题:
1) configmaps 可以用于此目的吗?
2) 我可以更新configmaps 还是必须完全重写它们?我正在考虑在configmap 中写一个文件,因为这样会更简单。
3) 我知道configmaps 存储在 etcd 中,但它们是保存在磁盘上还是保存在内存中?
4) 假设 POD-A 宕机了,对configmaps 有影响吗?它们是否与 pod 的生命周期有任何关联?
5) 如果 k8s 集群本身出现故障,`configmaps 会发生什么?由于它们在 etcd 中,如果它们被持久化,那么它们会再次可用吗?
注意:还有一个limit on the size of configmaps,所以我必须记住这一点。虽然我猜 1MB 的大小足以保存配置文件,因为它通常只有几个字节。
【问题讨论】:
-
我的理解清楚吗。您想根据配置映射中的值变化动态地使用配置映射来部署和更新在 pod 中运行的应用程序?
-
是的,但更新将由用户从应用程序触发
标签: kubernetes configmap