K8S中ConfigMap更新的方式

最近的项目中,需要监控ConfigMap数据变化,然后通过grpc调用相应的接口通知业务系统发生变化。
首先我创建了另一个ConfigMap, 然后将它挂载到系统的/config目录下,然后监控这个目录的变化,
但发现我需要的某一个文件(比如db.properties)发生了修改, 则通知业务系统进行更新,

	if ev.Op&fsnotify.Write == fsnotify.Write {
						log.Println("写入文件 : ", ev.Name)
						var fileName = path.Base(ev.Name)
						if fileName == "db.properties" {
							log.Println("start call switchDB ")
							switchDB()
							log.Println("end call switchDB ")
						}
					}

当我把程序集成到docker镜像中后,通过rancher修改了ConfigMap, 程序什么也没有发生,没有任何调用Log,
但实际上通过cat /config/db.properties文件内容已经发生了变化,真是一个奇怪的情况,然后我打印了所有的目录变动记录,
发现configmap是用了符号链接,目录结构如下

drwxr-xr-x. 2 root root 27 Jun 25 08:47 ..2020_06_25_08_47_52.504274213
lrwxrwxrwx. 1 root root 31 Jun 25 08:47 ..data -> ..2020_06_25_08_47_52.504274213
lrwxrwxrwx. 1 root root 20 Jun 25 06:21 db.properties -> ..data/db.properties

当我们修改ConfigMap后, 然后重新创建新的目录(以时间命名的),最后将…data的符号链接
重新指向新创建的目录,最后删除原目录,对于我们最终使用的文件db.properties则没有任何变化。
以下是一次调用的过程

2020/06/25 08:47:52 创建文件 :  /config/..2020_06_25_08_47_52.504274213
2020/06/25 08:47:52 修改权限 :  /config/..2020_06_25_08_47_52.504274213
2020/06/25 08:47:52 重命名文件 :  /config/..data_tmp
2020/06/25 08:47:52 创建文件 :  /config/..data
2020/06/25 08:47:52 删除文件 :  /config/..2020_06_25_08_45_30.890655308
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值