Kubernetes 对象大小限制

Yud*_*udi 7 etcd kubernetes google-kubernetes-engine

我正在处理 CRD 并创建自定义资源。我需要在自定义资源中保留有关我的应用程序的大量信息。根据官方文档,etcd 最多可处理 1.5MB 的请求。我遇到了类似的错误

“错误”:“请求实体太大:限制为 3145728”

我相信错误中指定的限制是 3MB。对此有何想法?这个问题有什么出路吗?

Wil*_*.F. 5

  • "error": "Request entity too large: limit is 3145728"可能是 kubernetes 处理程序对大于 3MB 的对象的默认响应,正如您在源代码的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`
Run Code Online (Sandbox Code Playgroud)
  • ETCD确实已经处理一个文件,你会发现一个1.5MB限制ETCD文档建议尝试--max-request-bytes标志,但它会有一个GKE群集上没有影响,因为你没有主节点上这样的权限。

  • 但即使你这样做了,它也不是理想的,因为通常这个错误意味着你正在使用对象而不是引用它们,这会降低你的性能。

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

  • 确定您的对象是否包含未使用的引用;
  • 分解你的资源;
  • 考虑使用卷挂载;

有一个新的 API Resource: File (orBinaryData)请求可能适用于您的案例。它非常新鲜,但值得关注。

如果您仍然需要帮助,请告诉我。

  • 谢谢。是的,设置 --max-request-byte 并不是一个好主意,而且 k8s 集群不在我的控制范围内,所以这个选项对我来说几乎不可能。我正在努力打破这个结构。 (2认同)