nginx - Kubernetes 1.16.10 集群上的 Nginx 控制器升级失败
问题描述
我正在尝试在 Kubernetes 集群版本 v1.16 (v1.16.10) 上升级 Nginx 控制器,不幸的是它没有成功。
我的 Nginx 设置配置为带有 helm 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 中几乎没有问题,并且不确定这是否也与此有关。此外,我可以确认默认后端已成功注册,因为我发现与此相关的问题很少,但这不可能是原因。
在这里真的很感激你的善意和有益的想法。谢谢。
解决方案
最后,我能够弄清楚并完美地工作。这是由于从图表版本 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
推荐阅读
- flutter - 如何在颤动中读取传入的短信
- python-3.x - Django:FileField'对象在Meta类中没有属性'attrs'
- r - 如果将一行放在组变量中的另一行之后,如何查找和删除一行?
- vb.net - VB .NET - App.config - 连接字符串
- node.js - 使用 mongodb 从查找中计算总成本
- c# - 将 count 的结果存储在 SQL 中的变量中
- sql - 如何将 3 个查询的结果合并到一张表中
- html - 在 Spotify 嵌入链接旁边添加文本
- python - 使用套接字python连接不同网络上的两台计算机
- angular - 在生产模式下找不到 sqlite 文件 Electron + Angular