kubernetes - 在 minikube 上修补 nginx 控制器部署会导致回滚到以前的配置
问题描述
我正在尝试修补 minikube vm 之后的 nginx 入口控制器。
使用以下命令修补成功:
$ kubectl patch deployment nginx-ingress-controller --type 'json' --namespace kube-system -p '[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--profiling"}]'
#-> deployment.extensions/nginx-ingress-controller patched
打补丁后会自动回滚之前的状态。如果我在部署后检查,我可以看到配置仍然存在(如下所示)
$ kubectl describe deployment/nginx-ingress-controller --namespace kube-system
#--- snip
Args:
/nginx-ingress-controller
--default-backend-service=$(POD_NAMESPACE)/default-http-backend
--configmap=$(POD_NAMESPACE)/nginx-load-balancer-conf
--tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
--udp-services-configmap=$(POD_NAMESPACE)/udp-services
--annotations-prefix=nginx.ingress.kubernetes.io
--report-node-internal-ip-address
--profiling
#---
回滚后,配置被重置:
$ kubectl describe deployment/nginx-ingress-controller --namespace kube-system
#--- snip
Args:
/nginx-ingress-controller
--default-backend-service=$(POD_NAMESPACE)/default-http-backend
--configmap=$(POD_NAMESPACE)/nginx-load-balancer-conf
--tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
--udp-services-configmap=$(POD_NAMESPACE)/udp-services
--annotations-prefix=nginx.ingress.kubernetes.io
--report-node-internal-ip-address
#---
我在日志中看不到任何错误,这应该会触发回滚。在回滚之前,我唯一能看到的是由于配置更改而触发 Pod 关闭的部署。
解决方案
由于 minikube 仅运行 1 个节点,并且 ingress 使用 hostPort,滚动更新不适用于 ingress 部署。
在修补入口以使用重新创建后,修补入口配置按预期工作。
将入口控制器设置为“重新创建”的命令:
kubectl patch deployment nginx-ingress-controller --type 'json' --namespace kube-system -p '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "replace", "path": "/spec/strategy/rollingUpdate", "value": null }]'
在 nginx-ingress-controller 上设置调试输出日志的命令:
kubectl patch deployment nginx-ingress-controller --type 'json' --namespace kube-system -p '[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "-v=5"}]'
入口控制器现在具有调试日志输出,并设置为在配置或图像更改时重新创建。
推荐阅读
- c# - 无法从字符串中删除 \\u0000
- javascript - 遍历对象时如何停止变量覆盖
- c++ - 尝试使用 cpp .so lib 编译 c 代码,使用 extern "C" { ... } 段
- wordpress - 反向代理另一个 Wordpress 多站点中的文件夹下的 Wordpress 多站点
- java - Cucumber HTML 报告的输出格式异常
- sql - count()over() 有重复记录
- java - @Aggregation 春季数据上的 MongoDB 投影
- flutter - 没有权限阅读我自己的 Firestore 收藏 (Flutter)
- tensorflow - 使用分段模型库时的问题
- c++ - 当我的系统使用 Ubuntu 18.04 和 QT Creator 和 C++ 突然关闭时出现问题