【问题标题】:Nginx Controller upgrade is failing on Kubernetes 1.16.10 clusterKubernetes 1.16.10 集群上的 Nginx 控制器升级失败
【发布时间】:2021-01-13 17:08:46
【问题描述】:

我正在尝试在 Kubernetes 集群版本 v1.16 (v1.16.10) 上升级 Nginx 控制器,很遗憾没有成功。

我的 Nginx 设置配置为带有 h​​elm stable 存储库的 DaemonSet,因为新存储库已更改为 https://kubernetes.github.io/ingress-nginx 我正在尝试使用新存储库并尝试将版本升级到至少 0.33,这是 helm 发布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 中几乎没有问题,不确定这是否也与此有关。此外,我可以确认默认后端已成功注册,因为我发现与此相关的问题很少,但这不可能是原因。

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

【问题讨论】:

  • 我猜是你的本地环境。您使用的是 Kubeadm 还是 Minikube?您已经使用 0.22 Nginx 并想升级到 0.33?你是怎么做到的?您是否尝试删除旧的 Helm 图表并部署新的图表?您所做的确切步骤会有所帮助。
  • 不,它不是 Minikube,而是 Kubeadm,它具有多个与 HA 集群一起部署的主节点和工作节点。我使用 Helm Controller 并将 repo 和版本更改为新版本。我就是这样做的。您是否知道这些 Helm 版本中对服务的任何更改。可能是添加服务要求?或避免创建服务任何选项来设置值?很抱歉,如果我让您感到困惑,很高兴消除任何疑问。
  • 即使,如果我使用 helm3 在集群中手动运行此命令,也会遇到相同的问题。 helm install ingress ingress-nginx/ingress-nginx --version 2.10.0 --set controller.service.enabled=false --set controller.kind=DaemonSet
  • 使用稳定存储库的旧配置与此完美配合:helm install old-ingress stable/nginx-ingress --version 1.33.1 --set controller.service.enabled=false --set controller。 kind=DaemonSet 部署了没有服务的 pod。有什么想法吗?我被困在这里了。

标签: nginx kubernetes kubernetes-helm kubernetes-ingress


【解决方案1】:

最后,我能够弄清楚并完美地工作。这是由于图表版本从 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

【讨论】:

    猜你喜欢
    • 2021-09-27
    • 2018-11-14
    • 2021-01-09
    • 2022-06-10
    • 2019-05-22
    • 2021-01-01
    • 2021-04-21
    • 2020-10-28
    • 1970-01-01
    相关资源
    最近更新 更多