You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Helm部署nginx-ingress自定义默认后端出现CrashLoopBackOff问题

问题解决与原理说明

一、自定义默认后端镜像CrashLoopBackOff问题解决

原因分析

ingress-nginx的Helm Chart默认会给默认后端容器配置只读根文件系统(readOnlyRootFilesystem: true),同时限制容器以非root用户运行。官方defaultbackend-amd64镜像已经预先适配了这些安全规则:比如临时目录通过emptyDir挂载,或者镜像内已创建好可写目录并配置了正确权限;但你的自定义镜像没有做这些适配,导致nginx启动时无法创建/var/cache/nginx/client_temp这类临时目录,触发只读文件系统错误。

两种解决方式

1. 适配自定义镜像(推荐)

修改Dockerfile,预先创建nginx需要的临时目录并设置权限,同时确保nginx以非root用户运行:

# 建议基于官方默认后端镜像构建,减少适配工作量
FROM k8s.gcr.io/defaultbackend-amd64:1.5

# 如果是自定义基础镜像,执行以下步骤
RUN mkdir -p /var/cache/nginx/client_temp /var/cache/nginx/proxy_temp \
    && chown -R nginx:nginx /var/cache/nginx \
    && chmod -R 755 /var/cache/nginx

# 复制自定义404页面和nginx配置
COPY custom-404.html /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/nginx.conf

# 指定运行用户(ingress-nginx默认使用101用户)
USER 101

2. 修改Helm Chart配置,放宽安全限制

如果不想修改镜像,可以在部署ingress-nginx时,通过values.yaml调整默认后端的安全上下文:

defaultBackend:
  enabled: true
  # 关闭只读根文件系统
  securityContext:
    readOnlyRootFilesystem: false
  # 或者挂载emptyDir到nginx缓存目录,保持根文件系统只读
  extraVolumes:
    - name: nginx-cache-dir
      emptyDir: {}
  extraVolumeMounts:
    - name: nginx-cache-dir
      mountPath: /var/cache/nginx

然后执行Helm升级命令:

helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx -f your-values.yaml

二、将独立部署的服务设为默认后端

完全可以将集群中已独立部署的服务作为ingress-nginx的默认后端,具体配置和原理如下:

配置步骤

  1. 确保你的独立服务已正常运行(比如服务名为my-custom-backend,位于default命名空间)
  2. 修改ingress-nginx的values.yaml:
# 关闭内置的默认后端部署
defaultBackend:
  enabled: false
# 配置控制器指向已有的独立服务
controller:
  config:
    default-backend-service: default/my-custom-backend
  1. 重新部署Helm Chart:
helm upgrade --install ingress-nginx ingress-nginx/ingress-nginx -f your-values.yaml

原理说明

ingress-nginx控制器的核心逻辑是根据Ingress规则转发请求,当请求没有匹配到任何Ingress规则时,会将请求转发到配置的默认后端服务。这个配置通过default-backend-service参数指定,格式为[命名空间]/[服务名称]。关闭内置的defaultBackend是为了避免重复部署无用的Pod,直接复用已有的独立服务即可实现默认后端的功能。

内容的提问来源于stack exchange,提问作者Esotopo21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:05:22