Nginx Controller升级在Kubernetes 1.16.10集群上失败

时间:2020-09-28 06:02:35

标签: nginx kubernetes kubernetes-helm kubernetes-ingress

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

我的Nginx设置被配置为带有头盔稳定存储库的DaemonSet,因为新存储库已更改为https://kubernetes.github.io/ingress-nginx,所以我试图使用新存储库,并尝试将版本升级到至少0.33,这是头盔版本2.10.0

错误行为:

升级成功了一半,并停留在头盔控制器中说“ 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

我可以确认当前头盔版本(1.33.1)中没有为Nginx Controller运行的服务。我不确定此服务是否是使用NodePort配置的此版本的必要方面,或者我在这里缺少任何内容。

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

      service:
        enabled: false

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

在这里真的很欣赏您的友善和有益的想法。谢谢。

1 个答案:

答案 0 :(得分:2)

最后,我能够弄清楚并能正常工作。这是由于从图表版本0.32更改为0.33,并正在检查是否定义了发布服务标记。

--set controller.publishService.enabled=false

应明确设置上述参数以避免这种情况。

相关PR:#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