当前位置: 首页 > news >正文

k8s问题详解1:k8s集群上传文件过大导致413 Request Entity Too Large(请求文件实体过大)

  如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情

         各位大佬好,好久不见,向大家汇报下工作,最近小屁重新进军Paas平台运维,开始学习k8s,学习和工作有些忙碌,没时间写博客,后续可以直接给小屁留言,欢迎大家一起讨论

        最近遇到了一个问题,解决之后成就感满满,和大家分享一波,事情是这样子的,公司开发在运行服务的时候,测试上传功能,发现报错“413 Request Entity Too Large”,搜了一下,是上传文件过大,但是问题来了,2M的文件大吗?返回的是413的报错,在常规系统中正常咱们nginx中在nginx.conf中添加client_max_body_size 100M;就可以解决,但是使用的是k8s的ingress的资源,该如何解决呢?

目录

方案1:单个配置

步骤一、

我尝试了修改ingress-nginx-controller的deploy资源,

验证:进入容器内查看

方案2:ConfigMap 全局配置

方案1:单个配置

步骤一、

我尝试了修改ingress-nginx-controller的deploy资源,
[root@k8s-devmaster ingress]# cat ingress-nginx-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:annotations:nginx.ingress.kubernetes.io/proxy-body-size: "1024m" #主要添加了这个参数deployment.kubernetes.io/revision: "1"kubectl.kubernetes.io/last-applied-configuration: |……不要问这个配置怎么来的,这个配置是用k8s命令导出的,不能全局粘贴,选择适合自己用的配置
验证:进入容器内查看
# 1. 进入 ingress-nginx-controller Pod 终端
kubectl exec -it ingress-nginx-controller-844cff6d86-ng2h4 -n ingress-nginx -- /bin/bash
​
# 2. 查看 Nginx 主配置或站点配置(两种路径均可)
# 方式A:查看主配置中的默认值(若未通过 Ingress 注解覆盖,显示默认值,通常为1m)
cat /etc/nginx/nginx.conf | grep "client_max_body_size"
​
[root@k8s-devmaster ingress]# kubectl exec -it ingress-nginx-controller-844cff6d86-ng2h4 -n ingress-nginx -- /bin/bash
k8s-devnode01:/etc/nginx$ cat /etc/nginx/nginx.conf | grep "client_max_body_size"client_max_body_size                    1m;client_max_body_size                    1m;client_max_body_size                    1m;……client_max_body_size                    1m;client_max_body_size                    1m;client_max_body_size                    1m;client_max_body_size                    21M;
k8s-devnode01:/etc/nginx$ ls /etc/nginx/conf.d/
ls: /etc/nginx/conf.d/: No such file or directory
k8s-devnode01:/etc/nginx$
??刚才进行的配置未生效?
哦原来应该到对应的ingress中去配置
# 1. 编辑目标 Ingress(替换 <你的Ingress名称> 和 <命名空间>)
kubectl edit ingress <你的Ingress名称> -n kyt-ei
​
# 2. 在 metadata.annotations 中添加注解(示例配置)
metadata:name: kyt-ei-ingress  # 你的Ingress名称namespace: kyt-eiannotations:kubernetes.io/ingress.class: "nginx"  # 确保关联当前 ingress-nginx 控制器nginx.ingress.kubernetes.io/proxy-body-size: "1024m"  # 关键注解:添加这行# 其他已有注解...
spec:rules:  # 你的Ingress规则(域名、路径、后端服务等)- host: ei.example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: ei-web-serviceport:number: 80

保存退出之后应用,发现问题解决了。

但是问题来了,如果想要全局生效应该如何配置呢?

方案2:ConfigMap 全局配置

(所有 Ingress 默认生效)若需所有通过该控制器的 Ingress 都默认支持 1GB 大文件上传,可修改 ingress-nginx的核心 ConfigMap:
​
# 1. 编辑 ConfigMap(默认命名空间 ingress-nginx,名称 ingress-nginx-controller)
kubectl edit configmap ingress-nginx-controller -n ingress-nginx
​
# 2. 在 data 字段中添加 proxy-body-size 配置
data:# 其他已有配置(如 nginx.conf 片段、tcp-services 等)...proxy-body-size: "1024m"  # 全局设置:所有 Ingress 默认使用 1024m
​
​
kubectl exec -it ingress-nginx-controller-844cff6d86-ng2h4 -n ingress-nginx -- /bin/bash
查看 nginx.conf 中的默认值是否变为 1024m
cat /etc/nginx/nginx.conf | grep "client_max_body_size" | head -1
​
root@k8s-devmaster ingress]# kubectl exec -it ingress-nginx-controller-844cff6d86-ng2h4 -n ingress-nginx -- /bin/bash
k8s-devnode01:/etc/nginx$ # 查看 Nginx 主配置中的全局 client_max_body_size
k8s-devnode01:/etc/nginx$ cat /etc/nginx/nginx.conf | grep -A 1 -B 1 "client_max_body_size" | head -20client_max_body_size                    1024m;client_max_body_size                    1024m;client_max_body_size                    1024m;client_max_body_size                    1024m;client_max_body_size                    1024m;
k8s-devnode01:/etc/nginx$ exit

进入容器后发现确实没问题了,到程序上去上传一个大文件,没问题了,文件解决~~~


想成为大佬,就要从小白开始,从0开始,一点一点的积累,慢慢成长,明天你就是大佬!!想学习更多运维知识,关注小屁,让你成为运维老鸟~~~~~ 

http://www.dtcms.com/a/498942.html

相关文章:

  • 计算机毕业设计:Python农业数据可视化分析系统 气象数据 农业生产 粮食数据 播种数据 爬虫 Django框架 天气数据 降水量(源码+文档)✅
  • 怎么做一个链接网站东莞直播app软件开发定制
  • VSCode - 设置MSYS2终端
  • MATLAB学习文档(二十五)
  • 告别“静态”VI手册:InDesign与AE打造可交互的动态品牌规范
  • 推广网站有那些个人网站免费域名注册
  • Windows EXCEPTION_RECORD 结构深度解析
  • LangGraph学习笔记(四):langgraph本地的流式输出
  • Phoenix Code:一款专为Web开发打造的开源文本编辑器
  • 网络营销的基本特征有哪七个wordpress宝塔优化
  • pyvideotrans问题
  • Large-scale CelebFaces Attributes (CelebA) 数据集生态:核心详解、免费下载与三大扩展应用全景​
  • 【BuildFlow 筑流】品牌命名与项目定位说明
  • PHP 8.0+ 现代Web开发实战指南 引
  • 沈阳有什么网站浙江网架公司
  • 零基础学AI大模型之RAG技术
  • 【论文速递】2025年第30周(Jul-20-26)(Robotics/Embodied AI/LLM)
  • Photoshop修图
  • R 矩阵:解析与应用
  • java.io 包详解
  • 整体设计 逻辑系统程序 之34七层网络的中台架构设计及链路对应讨论(含 CFR 规则与理 / 事代理界定)
  • Vue3 项目创建实战:Vue CLI 与 Vite 深度对比与操作指南
  • C++|手写shared_ptr实现
  • Python 数据分析入门:Pandas vs NumPy 全方位对比
  • 学做网站能赚钱吗信息平台网站模板
  • Redis为什么是单线程的
  • layuiadmin与laravel 12 前后端分离nginx配置
  • IDEA在文件中查找快捷键失效
  • 整合知识图谱与大语言模型:下一代药物发现的革命性技术
  • 详解TCP(详细版)