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

AKS升级至v1.22.6后Nginx-ingress-controller启动失败

环境信息
  • Kubernetes版本:1.22.6
  • 部署背景:此前通过Terraform调用官方Helm Chart部署ingress controller,对应Helm仓库地址为https://kubernetes.github.io/ingress-nginx
故障现象

启动ingress controller时,ingress-nginx-admission-create Job持续抛出fatal级别错误,ingress controller无法正常启动,错误日志如下:

{
  "err": "Get \"https://192.168.64.1:443/api/v1/namespaces/ingress-nginx/secrets/ingress-nginx-admission\": EOF",
  "level": "fatal",
  "msg": "error getting secret",
  "source": "k8s/k8s.go:232",
  "time": "2022-06-30T22:03:16Z"
}
已尝试操作

已执行如下helm命令删除并重建ingress-controller,先后尝试指定4.1.1版本、使用最新版本安装,均未解决问题:

helm upgrade --install \
     ingress-nginx ingress-nginx \
     --repo https://kubernetes.github.io/ingress-nginx \
     --namespace ingress-nginx \
     --create-namespace \
     --debug \
     --version="4.1.1" # 也尝试过使用最新版本安装
排查与解决方案

错误核心是admission-create Job访问Kubernetes API Server时直接被断开连接返回EOF,按以下优先级排查:

  • 先验证集群API Server连通性
    找集群内任意运行中的正常Pod、或者集群节点执行测试命令:
    curl -vk https://192.168.64.1:443/version
    
    如果命令同样返回EOF,按以下场景修复:
    • 检查控制节点kube-apiserver组件状态,确认组件正常运行、没有证书过期、进程崩溃、端口监听异常问题
    • 检查节点本地防火墙、云服务器安全组、主机安全防护规则,确认没有拦截Pod/节点网段到API Server 443端口的TCP请求
    • 如果API Server前置了四层负载均衡做高可用,检查负载均衡后端配置,确认所有控制节点的API Server端口健康检查正常,没有把流量转发到异常节点
    • 核对集群kubeconfig中配置的API Server地址和端口,部分自建集群API Server默认监听6443端口,若配置为443且没有做对应的端口转发规则,会直接连接异常
  • 清理旧版本残留资源
    之前卸载不彻底残留的webhook、权限、Job资源会导致新部署的组件运行冲突,先执行全量清理:
    # 删除ingress-nginx命名空间,若删除卡住可手动编辑资源移除finalizer
    kubectl delete namespace ingress-nginx
    # 清理集群维度的残留绑定、webhook、历史Job
    kubectl delete clusterrole,clusterrolebinding -l app.kubernetes.io/name=ingress-nginx
    kubectl delete mutatingwebhookconfiguration,validatingwebhookconfiguration -l app.kubernetes.io/name=ingress-nginx
    kubectl delete jobs -A -l app.kubernetes.io/name=ingress-nginx
    
    清理完成后可以先临时关闭admissionWebhooks验证核心功能是否正常:
    helm upgrade --install \
         ingress-nginx ingress-nginx \
         --repo https://kubernetes.github.io/ingress-nginx \
         --namespace ingress-nginx \
         --create-namespace \
         --set controller.admissionWebhooks.enabled=false
    
    如果关闭后ingress controller能正常启动,说明问题出在admission Job的运行逻辑上,后续可以手动生成admission证书挂载,或者检查Job绑定的ServiceAccount是否有secret的读写权限。
  • 核对版本兼容性
    Kubernetes 1.22版本对应兼容的ingress-nginx Helm Chart版本为4.1.x分支,4.2及以上版本默认适配K8s 1.24+,存在API版本不兼容问题,不要使用最新版本安装。安装前可以拉取chart包到本地,检查templates/admission目录下的Job模板使用的API版本是否为batch/v1,如果是已废弃的batch/v1beta1版本会导致Job运行异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:39:27