首页 > 解决方案 > Kubernetes 1.16.10 集群上的 Nginx 控制器升级失败

问题描述

我正在尝试在 Kubernetes 集群版本 v1.16 (v1.16.10) 上升级 Nginx 控制器,不幸的是它没有成功。

我的 Nginx 设置配置为带有 h​​elm stable 存储库的 DaemonSet,因为新存储库已更改为https://kubernetes.github.io/ingress-nginx我正在尝试使用新存储库并尝试将版本升级到至少 0.33 是掌舵版本 2.10.0

错误行为:

升级成功一半,卡在 helm 控制器中说“Pod 未准备好:kube-system/nginx-ingress-controller-xxxx”的地方。当时节点中存在由 DaemonSet 创建的 pod,它们将进入“CrashLoopBackOff”状态,然后进入“Error”状态,日志显示以下错误:

W0928 05:21:50.497500       6 flags.go:249] SSL certificate chain completion is disabled (--enable-ssl-chain-completion=false)
W0928 05:21:50.497572       6 client_config.go:552] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
I0928 05:21:50.497777       6 main.go:218] Creating API client for https://172.31.0.1:443
I0928 05:21:50.505692       6 main.go:262] Running in Kubernetes cluster version v1.16 (v1.16.10) - git (clean) commit f3add640dbcd4f3c33a7749f38baaac0b3fe810d - platform linux/amd64
I0928 05:21:50.512138       6 main.go:85] Validated kube-system/nginx-ingress-ingress-nginx-defaultbackend as the default backend.
F0928 05:21:50.517958       6 main.go:91] No service with name kube-system found in namespace nginx-ingress-ingress-nginx-controller: services "nginx-ingress-ingress-nginx-controller" not found

我可以确认当前 helm 版本(1.33.1)没有为 Nginx 控制器运行服务。我不确定这个服务是这个版本的 NodePort 配置的一个重要方面,或者我在这里遗漏了一些东西。

我在 DaemonSet 的当前配置中将服务设置为 false

      service:
        enabled: false

我发现 k8s 1.16 中几乎没有问题,并且不确定这是否也与此有关。此外,我可以确认默认后端已成功注册,因为我发现与此相关的问题很少,但这不可能是原因。

在这里真的很感激你的善意和有益的想法。谢谢。

标签: nginxkuberneteskubernetes-helmkubernetes-ingress

解决方案


最后,我能够弄清楚并完美地工作。这是由于从图表版本 0.32 到 0.33 的更改,它正在检查发布服务标志是否已定义。

--set controller.publishService.enabled=false

应显式设置上述参数以避免这种情况。

相关公关:# 5553

工作命令:

helm install nginx-new ingress-nginx/ingress-nginx --version 3.3.0 --set controller.service.enabled=false --set controller.kind=DaemonSet --set controller.publishService.enabled=false

推荐阅读