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

Kubernetes 1.19部署Nginx Ingress失败:IngressClass nginx未找到

问题:Kubernetes 1.19.16部署NGINX Ingress控制器失败

部署环境

  • 裸金属Ubuntu 18.04 LTS服务器
  • Kubernetes版本:1.19.16
  • 采用NGINX官方kubernetes-ingress仓库main分支部署,控制器版本2.3.1

部署步骤

$ git clone https://github.com/nginxinc/kubernetes-ingress.git
cd kubernetes-ingress/deployments

kubernetes-ingress/deployments$ git branch
* main

$ kubectl apply -f common/ns-and-sa.yaml
$ kubectl apply -f rbac/rbac.yaml
$ kubectl apply -f rbac/ap-rbac.yaml
$ kubectl apply -f common/default-server-secret.yaml
$ kubectl apply -f common/nginx-config.yaml

$ kubectl apply -f deployment/nginx-ingress.yaml
deployment.apps/nginx-ingress created

Pod状态

$ kubectl get pods -n nginx-ingress -o wide
NAME                             READY   STATUS   RESTARTS   AGE   IP           NODE          NOMINATED NODE   READINESS GATES
nginx-ingress-75c4bd64bd-mm52x   0/1     Error    2          21s   10.244.1.5   k8s-master    <none>           <none>

资源状态

$ kubectl -n nginx-ingress get all
NAME                                 READY   STATUS             RESTARTS   AGE
pod/nginx-ingress-75c4bd64bd-mm52x   0/1     CrashLoopBackOff   12         38m

NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-ingress   0/1     1            0           38m

NAME                                       DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-ingress-75c4bd64bd   1         1         0       38m

Pod日志

$ kubectl logs nginx-ingress-75c4bd64bd-mm52x -n nginx-ingress   
W1003 04:53:02.833073       1 flags.go:273] Ignoring unhandled arguments: []
I1003 04:53:02.833154       1 flags.go:190] Starting NGINX Ingress Controller Version=2.3.1 PlusFlag=false
I1003 04:53:02.833158       1 flags.go:191] Commit=a8742472b9ddf27433b6b1de49d250aa9a7cb47e Date=2022-09-16T08:09:31Z DirtyState=false Arch=linux/amd64 Go=go1.18.5
I1003 04:53:02.844374       1 main.go:210] Kubernetes version: 1.19.16
F1003 04:53:02.846604       1 main.go:225] Error when getting IngressClass nginx: ingressclasses.networking.k8s.io "nginx" not found

Pod事件

$ kubectl describe pods nginx-ingress-75c4bd64bd-mm52x -n nginx-ingress

Events:
  Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Normal   Scheduled  3m6s                 default-scheduler  Successfully assigned nginx-ingress/nginx-ingress-75c4bd64bd-mm52x to k8s-worker-1
  Normal   Pulled     87s (x5 over 3m5s)   kubelet            Container image "nginx/nginx-ingress:2.3.1" already present on machine
  Normal   Created    87s (x5 over 3m5s)   kubelet            Created container nginx-ingress
  Normal   Started    87s (x5 over 3m5s)   kubelet            Started container nginx-ingress
  Warning  BackOff    75s (x10 over 3m3s)  kubelet            Back-off restarting failed container

解决思路

核心问题是控制器启动时找不到名为nginx的IngressClass资源,且当前使用的main分支2.3.1版本与Kubernetes 1.19.16存在兼容性差异,可通过以下方式解决:

1. 手动创建缺失的IngressClass资源

创建名为ingress-class.yaml的文件,内容如下:

apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
  name: nginx
spec:
  controller: nginx.org/ingress-controller

执行命令部署:

kubectl apply -f ingress-class.yaml

2. 切换到兼容Kubernetes 1.19的控制器版本

NGINX Ingress控制器2.3.1版本对Kubernetes版本要求较高,建议切换到支持1.19的稳定版本分支,比如v2.2.x:

cd kubernetes-ingress
git checkout v2.2.0
cd deployments
# 重新执行所有部署命令
kubectl apply -f common/ns-and-sa.yaml
kubectl apply -f rbac/rbac.yaml
kubectl apply -f rbac/ap-rbac.yaml
kubectl apply -f common/default-server-secret.yaml
kubectl apply -f common/nginx-config.yaml
kubectl apply -f deployment/nginx-ingress.yaml

3. 修改部署YAML调整控制器参数

编辑deployment/nginx-ingress.yaml,在容器的args列表中添加--watch-ingress-class=false,禁用IngressClass的自动检查:

containers:
- name: nginx-ingress
  image: nginx/nginx-ingress:2.3.1
  args:
    - -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
    - -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret
    - --watch-ingress-class=false  # 添加这一行

然后重新部署:

kubectl apply -f deployment/nginx-ingress.yaml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:01:05