Kubernetes 对象大小限制

标签 kubernetes google-kubernetes-engine etcd

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

"error": "Request entity too large: limit is 3145728"



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

最佳答案

  • "error": "Request entity too large: limit is 3145728"可能是 kubernetes 处理程序对大于 3MB 的对象的默认响应,如您所见 here at 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 Documentation 上找到建议尝试使用 --max-request-bytes标志,但它不会对 GKE 集群产生影响,因为您在主节点上没有这样的权限。
  • 但即使你这样做了,也不会很理想,因为通常这个错误意味着你是 consuming the objects而不是引用它们会降低您的性能。

  • 我强烈建议您考虑以下选项:
  • 确定您的对象是否包含未使用的引用;
  • 分解你的资源;
  • 考虑使用卷挂载;


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

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

    关于Kubernetes 对象大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60468110/

    相关文章:

    azure - 如何配置 pod 中断预算以耗尽 kubernetes 节点?

    docker - 'OpenCvSharp.NativeMethods' 抛出异常。无法加载共享库 'OpenCvSharpExtern' 或其依赖项之一。,Ubuntu 18.04

    rest - 如何使用etcd v3 Restful api观看

    没有负载均衡器的 Kubernetes 入口 Controller

    docker - ASP.NET Core 2.0 在 Kubernetes 中启动 Kestrel 时出错

    mongodb - 从其他容器与 Kubernetes (GKE) 上的容器通信

    angular - Kubernetes:ERR_NAME_NOT_RESOLVED

    docker - 具有etcd键的容器依赖性

    go - 三个 etcd-go 包有什么区别?

    linux - 使用 Ansible 在 Kubernetes 集群中实现证书轮换功能