k8s (kubernetes)中ingress-nginx建议采用configmap修改全局配置,可读性更高,更加简单方便。具体具体配置参数可参考官网文档:ConfigMap - Ingress-Nginx Controller

今天第一次尝试修改配置,结果即便手工重启pod也不生效。

最终发现是因为configmap的name不对,cm name必须是ingress-nginx-controller 。

原因是在 descirbe deploy里可以看到启动pod的args里指定了

--configmap=$(POD_NAMESPACE)/ingress-nginx-controller

  Containers:
   controller:
    Image:       k8s.gcr.io/ingress-nginx/controller:v1.1.0
    Ports:       80/TCP, 443/TCP, 8443/TCP
    Host Ports:  80/TCP, 443/TCP, 8443/TCP
    Args:
      /nginx-ingress-controller
      --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
      --election-id=ingress-controller-leader
      --controller-class=k8s.io/ingress-nginx
      --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
      --validating-webhook=:8443
      --validating-webhook-certificate=/usr/local/certificates/cert
      --validating-webhook-key=/usr/local/certificates/key

下面列出修改proxy-body-size的完整configmap文件:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ingress-nginx-controller

data:
  proxy-body-size: 10m

注意cm里的proxy-body-size指向nginx原始的配置项client_max_body_size, 注意切勿在这里直接使用client_max_body_size,kubect apply -f 后会立即自动生效并应用到每个ingress的站点配置里。

检查是否生效可以采用如下命令:

kubectl --n ingress-nginx  exec -it ingress-nginx-controller-d55f7ddf5-ggsbt -- cat /etc/nginx/nginx.conf |grep body_size

可以看到类似如下结果就说明是修改成功了,默认是1m:

                        client_max_body_size                    10m;
                        client_max_body_size                    10m;
                        client_max_body_size                    10m;
                        client_max_body_size                    10m;
                        client_max_body_size                    10m;
                        client_max_body_size                    10m;
                        client_max_body_size                    10m;
                        client_max_body_size                    10m;
                        client_max_body_size                    10m;

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐