client-go informer 缓存失效问题排查
背景长期以来,弹性云线上服务一直饱受缓存不一致的困扰。
缓存不一致的发生一般伴随着kube-apiserver的升级或重启。且当缓存不一致问题发生时,用户侧能够较为明显的感知,问题严重时会引发线上故障。而常见的故障有:
平台数据不一致:Pod状态一会正常,一会不正常,并且来回跳动
服务管理事件丢失:服务变更时,服务管理未正常工作,如服务树未挂载、流量未接入等等
在问题未定位之前,弹性云制定了诸多问题感知与及时止损策略:
问题感知:
人工:kube-apiserver升级或重启时,人工通知关联方也重启平台服务
智能:配置监控与报警策略,当一段时间内未收到k8s对象的变更事件时,发送告警信息
...