Kubernetes 是库伯内特';什么是可写的?

Kubernetes 是库伯内特';什么是可写的?,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,是否可以直接修改由configMap装载的文件?我们有一个应用程序,它读取一个configMap类型的配置文件,如果configMap与其他pod共享,并且pod重新启动时,应用程序应该能够编辑该文件,并且应该保留更改 如果configMap不适用于此,那么我们应该通过concur来保存配置吗?AFAIK对configMap的更改将只存在于本地内存中。 也就是说,其他pod看不到更改,重新启动pod时,更改将丢失 一种解决方案是在配置应用程序中使用kubectl二进制或kubernetes AP

是否可以直接修改由
configMap
装载的文件?我们有一个应用程序,它读取一个
configMap
类型的配置文件,如果
configMap
与其他pod共享,并且pod重新启动时,应用程序应该能够编辑该文件,并且应该保留更改


如果
configMap
不适用于此,那么我们应该通过
concur
来保存配置吗?

AFAIK对
configMap
的更改将只存在于本地内存中。
也就是说,其他pod看不到更改,重新启动pod时,更改将丢失

一种解决方案是在配置应用程序中使用
kubectl
二进制或kubernetes API在配置更改后重新创建
ConfigMap


e、 g.
kubectl apply-f/path/to/updated/config.yaml

是的,配置映射是。如果您正在与configmap中的文件进行交互,则可以将这些文件放在可写卷中,然后单击。或者,正如您所建议的,您也可以使用集中式配置,如concur。假设应用程序正在动态地写入数据,您可以将其视为状态而不是配置。然后可以将其存储在数据库中。另一个选项可以是分布式缓存或hazelcast。

从Kubernetes文档中,可以对其进行更新,请参见

更新卷中已使用的ConfigMap时,最终也会更新投影的密钥。Kubelet正在检查装载的ConfigMap是否在每次定期同步时都是新的。但是,它正在使用基于本地ttl的缓存来获取ConfigMap的当前值。因此,从更新ConfigMap到将新密钥投影到pod的总延迟可能与kubelet同步周期+kubelet中ConfigMaps缓存的ttl一样长


有趣的是,我偶然发现了这个问题,因为Redis的sentinel实际上试图将运行时状态写入其配置文件,但这不起作用。不过,这是关于从POD外部更新ConfigMap的,就像Kubernetes命令一样。写入ConfigMap卷的文件(相当于ConfigMap密钥)是不可能的,但如果是,它将不会跨使用ConfigMap的其他POD更新等效文件。可能值得一提的是,这需要ServiceAccount角色绑定角色?(我刚刚这么做了,如果需要,我可以发布一个配置示例。)