Ограничения по размеру объекта Kubernetes - PullRequest
3 голосов
/ 29 февраля 2020

Я имею дело с CRD и создаю пользовательские ресурсы. Мне нужно хранить много информации о моем приложении на пользовательском ресурсе. В соответствии с официальным do c, etcd работает с запросом до 1,5 МБ. Я получаю сообщения об ошибках, например,

"error": "Слишком большой объект запроса: ограничение составляет 3145728"

Я считаю, что указанный предел ошибки составляет 3 МБ. Есть мысли по этому поводу? Есть ли выход для этой проблемы?

1 Ответ

2 голосов
/ 02 марта 2020
  • "error": "Request entity too large: limit is 3145728" - это, вероятно, ответ по умолчанию от обработчика kubernetes для объектов размером более 3 МБ, как вы можете видеть здесь, в L305 исходного кода:
expectedMsgFor1MB := `etcdserver: request is too large`
expectedMsgFor2MB := `rpc error: code = ResourceExhausted desc = trying to send message larger than max`
expectedMsgFor3MB := `Request entity too large: limit is 3145728`
expectedMsgForLargeAnnotation := `metadata.annotations: Too long: must have at most 262144 bytes`
  • ETCD действительно имеет ограничение 1,5 МБ для обработки файла, и вы найдете в ETCD Documentation предложение попробовать флаг --max-request-bytes но это не повлияет на кластер GKE, потому что у вас нет такого разрешения на главном узле.

  • Но даже если бы вы это сделали, это не было бы идеально, потому что обычно эта ошибка означает что вы потребляете объекты вместо того, чтобы ссылаться на них, что ухудшит вашу производительность.

Я настоятельно рекомендую вместо этого рассмотреть следующие варианты:

  • Определите, включает ли ваш объект ссылки, которые не используются;
  • Разделите ваш ресурс;
  • Рассмотрите объем вместо этого смонтировать;

Есть запрос на новый ресурс API: файл (orBinaryData) , который может применяться к вашему делу. Это очень свободно sh, но хорошо следить за этим.

Если вам все еще нужна помощь, дайте мне знать.

...