我有一个 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中,并且如果它们被持久化,那么它们会再次可用吗?
注意:configmap 的大小也有限制,所以我必须牢记这一点。虽然我猜测 1MB 的大小足以保存配置文件,因为它通常只有几个字节。