Kubernetes对象大小限制

5kgi1eie  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(4)|浏览(223)

我正在处理CRD和创建自定义资源。我需要在自定义资源中保存大量关于我的应用程序的信息。根据官方文档,etcd可以处理高达1.5MB的请求。我遇到了如下错误
“错误”:“请求实体太大:限制为3145728”
我相信错误中指定的限制是3MB。对此有什么想法吗?有解决这个问题的方法吗?

s1ag04yj

s1ag04yj1#

  • "error": "Request entity too large: limit is 3145728"可能是kubernetes处理程序对大于3 MB的对象的默认响应,正如您在源代码的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.5MB的文件处理限制,您可以在ETCD文档中找到一个尝试--max-request-bytes标志的建议,但它对GKE集群没有任何影响,因为您在主节点上没有这样的权限。
  • 但即使这样做了,也并不理想,因为通常这种错误意味着您正在使用对象,而不是引用对象,这会降低性能。

我强烈建议您考虑以下选项:

*确定您的对象是否包含未使用的引用;
*分解资源;
*请考虑使用卷装载;

有一个new API Resource: File (orBinaryData)的请求可以适用于你的情况。它是非常新的,但它是很好的保持关注。
如果你还需要帮助,请告诉我。

8dtrkrch

8dtrkrch2#

当我在Helm图表目录中放置一些大文件时,这种情况就发生在我身上。删除这些文件帮助我解决了我的问题。

s71maibg

s71maibg3#

检查目录中文件的大小,它包含了你的图表版本的模板和值。yaml(因为它看起来目录的名称通常等于charts)。

du <directory-path> --max-depth=1

# if you want it to be more readable add -h switch

du -h <directory-path> --max-depth=1

如果文件大小超过3145728,请确保没有任何不相关的文件。(源代码)

jei2mxaa

jei2mxaa4#

如果您使用的是HELM,请检查是否有日志文件等大文件。添加.helmignore

.DS_Store

# Common VCS dirs

.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/

# Common backup files

* .swp
* .bak
* .tmp
* ~

# Various IDEs

.project
.idea/

* .tmproj

.vscode/

* .log

相关问题