Ограничение размера Kubernetes ConfigMap

Хотя resourceQuotas может ограничивать количество конфигурационных карт в пространстве имен, существует ли такая возможность для ограничения размера отдельной карты конфигурации? Я не хочу, чтобы какой-нибудь пользователь начал загружать большие текстовые файлы в качестве конфигурационных карт.

Каков максимальный размер поддержки ConfigMap etcd? Если есть разумный предел на стороне etcd, тогда все будет в порядке.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
20
0
18 677
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

На сегодняшний день карты конфигурации подпадают под квоту на количество объектов. Вы можете установить максимальное количество конфигурационных карт. Вы не можете установить ограничения на размер отдельной карты конфигурации. Поскольку они еще не включены в квоту ресурсов хранения.

https://kubernetes.io/docs/concepts/policy/resource-quotas/

Я считаю, что его вопрос касается ограничения на размер самого ConfigMap, а не на количество ConfigMap, которое вы можете иметь в кластере.

Rico 26.10.2018 20:23

да @Rico, я уже упоминал, что вы не можете ограничить размер configmap. Отредактирую, если непонятно.

Shashank Pai 26.10.2018 20:29

Спасибо, за ограничение размера, которое я могу сделать, возможно, настраиваемый контроллер допуска для configmap

Ijaz Ahmad Khan 27.10.2018 18:27

Круто, дайте нам знать, как вы это делаете.

Shashank Pai 27.10.2018 18:44
Ответ принят как подходящий

На момент написания этой статьи нет жесткие ограничения ни в объектах ConfigMap, ни в Secret.

Однако существует ограничение в 1 МБ со стороны etcd, где Kubernetes хранит свои объекты.

Со стороны API, если вы действительно видите API код и тип ConfigMap, вы увидите, что его поле данные представляет собой карту строк Golang, поэтому это кажется связанным с памятью и управляемым во время выполнения, если где-то еще оно не определено с помощью make(). Технически максимальный размер для количества ключей в хэш-карте - это длина карты, которая равна int, и максимальное значение объясняется здесь: Максимальное количество элементов на карте. Это также было бы теоретическим пределом для значения данных как максимального значения для len(string).

Если вы действительно хотите получить больше информации со стороны API, где kube-apiserver получает protobufs (или JSON, если на то пошло), вы можете взглянуть на максимальный размер google protobuf. Это даст вам некоторую меру ограничения на отправку поля data по сети. Когда дело доходит до обработки любого большого сообщения, могут быть другие ограничения со стороны самого kube-apiserver.

Читая это: github.com/helm/helm/issues/1413 предполагает ограничение в 1 МБ

Lev Kuznetsov 26.10.2018 22:37

Да, есть ограничение в 1МБ со стороны etcd, добавил подробностей. Спасибо!

Rico 26.10.2018 22:44

спасибо, ограничение в 1 МБ кажется довольно разумным, я думаю о каком-то настраиваемом контроллере addmission, чтобы отклонить запрос карты конфигурации размером больше X

Ijaz Ahmad Khan 27.10.2018 18:26

@IjazAhmadKhan не нужно, по крайней мере, из kubectl 1.18, вы получите сообщение об ошибке, если cm больше 1 МБ

Oliver 03.01.2021 05:02

Размер отдельной карты конфигурации ограничен 1 МБ, согласно kubernetes.io:

A ConfigMap is not designed to hold large chunks of data. The data stored in a ConfigMap cannot exceed 1 MiB. If you need to store settings that are larger than this limit, you may want to consider mounting a volume or use a separate database or file service.

Цитата взята отсюда - https://kubernetes.io/docs/concepts/configuration/configmap/#motivation

Другие вопросы по теме