Kubernetes ConfigMap大小限制

26

虽然resourceQuotas可以限制命名空间中ConfigMap的数量,但是否有此选项来限制单个ConfigMap的大小呢?我不希望某些用户将大型文本文件上传为ConfigMap。

ConfigMap etcd支持的最大大小是多少?如果在etcd方面有合理的限制,那就应该没问题。

3个回答

37
截至目前,ConfigMap或Secret对象没有硬限制。但是,etcd方面有1MB的限制,这是Kubernetes存储其对象的地方。从API方面来看,如果您实际查看API code和ConfigMap类型,则会发现它的data字段是字符串的Golang映射,因此在运行时出现内存绑定并进行管理,除非在其他地方使用make()定义了它。从技术上讲,哈希图中键数的最大大小是地图长度,即int,最大值在此处解释:Maximum number of elements in map。那也是数据值的理论极限,因为len(string)的最大值。
如果您想从API方面获得更多见解,其中kube-apiserver接收protobufs(或JSON)的地方,您可以查看google protobuf maximum size。这将为您提供通过电线发送data字段的限制的一些措施。当涉及处理任何大型消息时,kube-apiserver本身可能存在其他限制。

2
阅读此链接:https://github.com/helm/helm/issues/1413,表明存在1mb的限制。 - Lev Kuznetsov
1
是的,etcd 那边有1MB的限制,我已经添加了更多详细信息。谢谢! - Rico
1
谢谢,1 MB 的限制似乎相当合理,我正在考虑使用自定义准入控制器来拒绝大小超过 X 的配置映射请求。 - Ijaz Ahmad
@IjazAhmadKhan 不需要了,因为从 kubectl 1.18 开始,如果 cm 大于 1 MB,你会收到一个错误。 - Oliver

5
根据kubernetes.io,单个configmap的大小限制为1mb:

ConfigMap并非设计用于存储大数据块。存储在ConfigMap中的数据不能超过1 MiB。如果您需要存储大于此限制的设置,可以考虑挂载卷或使用单独的数据库或文件服务。

引用摘自此处 - https://kubernetes.io/docs/concepts/configuration/configmap/#motivation

-2

1
我认为他的问题是关于ConfigMap大小限制本身,而不是集群中可以拥有的ConfigMap数量的限制。 - Rico
是的 @Rico,我已经提到了你不能限制 ConfigMap 的大小。如果不清楚,我会进行编辑。 - Shane Warne
感谢您的回复,对于大小限制,我可以为configmap编写自定义准入控制器。 - Ijaz Ahmad
很酷。让我们知道你是如何做到的。 - Shane Warne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接