springcloud+k8s:The current number of PropertySources does not match the ones loaded from Kubernetes
·
springcloud版本:2024.0.2
当从k8s的configMap加载属性时,出现告警:
WARN [gateway] 73783 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : The current number of PropertySources does not match the ones loaded from Kubernetes - No reload will take place
对应的源码:
类:org.springframework.cloud.kubernetes.commons.config.reload.ConfigReloadUtil.java:183
static boolean changed(List<? extends MapPropertySource> k8sSources, List<? extends MapPropertySource> appSources) {
if (k8sSources.size() != appSources.size()) {
if (LOG.isDebugEnabled()) {
LOG.debug("k8s property sources size: " + k8sSources.size());
k8sSources.forEach(item -> LOG.debug(item.toString()));
LOG.debug("app property sources size size: " + appSources.size());
appSources.forEach(item -> LOG.debug(item.toString()));
}
LOG.warn(() -> "The current number of PropertySources does not match "
+ "the ones loaded from Kubernetes - No reload will take place");
return false;
}
...
}
从代码可以看出,k8s上配置和属性和app上对应的属性数量不一致。
也可以看出,把日志级别改为“DEBUG”,会打印详细属性列表。
在application.yml中添加日志配置:
spring:
logging:
level:
org.springframework.cloud.kubernetes.commons.config.reload.ConfigReloadUtil: debug
重新启动app,出现日志:
2025-12-09T10:58:16.581+08:00 DEBUG [gateway] 74651 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : sources from locateMapPropertySources : [KubernetesClientConfigMapPropertySource {name='configmap.gateway-route-config.dev'}, KubernetesClientConfigMapPropertySource {name='configmap.gateway-config.dev'}]
2025-12-09T10:58:16.581+08:00 DEBUG [gateway] 74651 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : k8s property sources size: 2
2025-12-09T10:58:16.581+08:00 DEBUG [gateway] 74651 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : KubernetesClientConfigMapPropertySource {name='configmap.gateway-route-config.dev'}
2025-12-09T10:58:16.581+08:00 DEBUG [gateway] 74651 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : KubernetesClientConfigMapPropertySource {name='configmap.gateway-config.dev'}
2025-12-09T10:58:16.582+08:00 DEBUG [gateway] 74651 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : app property sources size size: 4
2025-12-09T10:58:16.582+08:00 DEBUG [gateway] 74651 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : KubernetesClientSecretsPropertySource {name='secret.db-secret.dev'}
2025-12-09T10:58:16.582+08:00 DEBUG [gateway] 74651 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : KubernetesClientSecretsPropertySource {name='secret.token-secrets.dev'}
2025-12-09T10:58:16.582+08:00 DEBUG [gateway] 74651 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : KubernetesClientConfigMapPropertySource {name='configmap.gateway-route-config.dev'}
2025-12-09T10:58:16.582+08:00 DEBUG [gateway] 74651 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : KubernetesClientConfigMapPropertySource {name='configmap.gateway-config.dev'}
2025-12-09T10:58:16.582+08:00 WARN [gateway] 74651 --- [gateway] [ool-15-thread-1] o.s.c.k.c.c.reload.ConfigReloadUtil : The current number of PropertySources does not match the ones loaded from Kubernetes - No reload will take place
对比可知,代码中的“k8sSources”是指从k8s上获取到配置文件,“appSources”是指在微服务中的yml文件中配置了文件,而微服务上配置的数量比k8s上能获取到的多,故而出现这个告警。
解决方法:
- 在k8s上配置上缺少的配置文件。
- 删除微服务上多余的配置
更多推荐
所有评论(0)