前言
nginx本身是支持热更新的,通过nginx -s reload指令,实际通过向进程发送hub信号实现不停服重新加载配置,然而在docker或者kubernetes中,每次都需要进容器执行nginx -s reload指令,单docker容器还好说,可以在外面通过exec指定容器执行该指令进行热加载,kubernetes的话,就比较难受了
今天介绍一下kubernetes中nginx热加载配置的处理方法——reloader
reloader地址:https://github.com/stakater/reloader
reloader主要就是用来监测configmap或secret的变化,然后对相关deploymentconfig的deployment、daemonset执行滚动升级
reloader需要kubernetes1.9以上的版本才支持
使用方法
首先是安装部署reloader
默认情况下reloader是部署在default命名空间,但是它是监控所有命名空间的configmaps和secrets
当然,如果不想监控某个configmap或secret,可以通过–resources-to-ignore=configmaps/secrets来忽略某个资源
部署成功后,就可以直接使用了,我提前部署了nginx和configmap
这是目前的配置,看一下nginx目前的配置
接着,我修改nginx的deployment,添加reloader,监听nginx-config这个configmap,执行reload
然后apply该deployment,之后我们去更新configmap,更新nginx配置文件
更新完成,去掉proxy_redirect,然后去看nginx容器是否执行滚动更新
可以看到,nginx执行了滚动更新,接着看下nginx配置文件是否更新
这样很简单的通过reloader就可以实现nginx的配置热加载
除了这种方法,常见的方法还有使用sidecar,通过sidecar去做的话,需要自己写监听脚本,比较麻烦,但是有时候也相对灵活,这里也附一个sidecar的python脚本
如果喜欢用go的,这里也提供go脚本
ok,今天的内容就到这里
总结
到此这篇关于kubernetes中nginx配置热加载的文章就介绍到这了,更多相关kubernetes中nginx配置热加载内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://mp.weixin.qq.com/s/dcqprANA0m6gGEvnF2l4uQ