kubernetes - 在 AKS 集群中处理大文件 (3gb) 所需的节点硬件要求和 kubernetes nginx 入口配置是什么?
问题描述
我们需要通过托管在 AKS 群集中的 .net 核心 api pod 来处理总计不超过 3gb 大小的文件集合。
3 节点集群的当前节点配置为 16gb Ram 和 2vCpus。我还添加了一些入口注释,如下所示:
nginx.ingress.kubernetes.io/client-body-buffer-size: 5000M
nginx.ingress.kubernetes.io/client-max-body-size: 5000M
nginx.ingress.kubernetes.io/proxy-body-size: 5000M
nginx.ingress.kubernetes.io/proxy-connect-timeout: '14400'
nginx.ingress.kubernetes.io/proxy-next-upstream-timeout: '14400'
nginx.ingress.kubernetes.io/proxy-read-timeout: '14400'
nginx.ingress.kubernetes.io/proxy-send-timeout: '14400'
nginx.ingress.kubernetes.io/server-snippet: keepalive_timeout 3600s; client_body_timeout 3600s;
这些更改通过使用 1.02cpu 和 1000mi 内存近 5 分钟的入口来帮助处理高达 2gb 的文件大小。我为入口更新的最新资源要求如下,但它也没有帮助。
resources:
requests:
cpu: 1400m
memory: 3000Mi
但是难以处理超过 2gb 的大小,并在处理大约 7 分钟后终止并引发内部服务器错误。
我还找不到确切的日志消息,除了硬件和入口配置以成功处理 3gb 文件大小之外,有关配置 azure 指标、日志、警报的任何建议也很有帮助。
解决方案
对于该大小的上传,或者直接发布服务端口,或者如果入口提供一些其他功能,请禁用 nginx 中的请求缓冲。
将上传服务放在它自己的入口主机上:upload.x.com
nginx.ingress.kubernetes.io/proxy-request-buffering: off
nginx.ingress.kubernetes.io/proxy-body-size: 3G
否则,缓冲对临时文件的请求,因此 nginx 不会将请求保存在内存中。
nginx.ingress.kubernetes.io/configuration-snippet: |
client_body_in_file_only: on
nginx.ingress.kubernetes.io/proxy-max-temp-file-size: 3G
nginx.ingress.kubernetes.io/client-body-buffer-size: 64k
nginx.ingress.kubernetes.io/proxy-body-size: 3G
推荐阅读
- java - 无法在春季应用程序中更改语言
- selenium - 无法使用 Appium 桌面找到 xpath
- websocket - Presence 不接收用户离开事件?
- cuda - 用 cuda C++ 对向量值求和
- xamarin - 快速单击按钮时持续显示 Toast 消息
- sqlite - 如何通过不在字符串中的字符串字段获取行?
- indy - 在 D2005 中使用 TIdHTTPServer 线程安全
- linux - 提取和重新格式化字符串/时间键之间的文本
- java - java.util.IllegalFormatFlagsException:标志=''
- websocket - 建立连接后,我可以将分配添加到“主套接字”吗?