1

我的 k8s 命名空间中有两个组件。

  1. 第一个组件是一个简单的 Spring Boot Web 服务,其中公开了执行器/刷新端点。我已经手动向端点发出 post 请求,它将成功触发配置上下文刷新。

  2. 第二个组件是 Spring Cloud Kubernetes Configuration Watcher,我根据官方文档指导提取图像并使其在我的 k8s 环境中运行。根据官方 spring 文档,它应该检测带有标签 spring.cloud.kubernetes.config="true" 的 configmap 上的更改,并向 spring.application.name 等于 configmap 名称的应用程序的执行器/刷新端点发出 post 请求.

第二个组件没有按预期工作,我不知道如何解决根本原因。

我的 Springboot 应用程序称为 spring-boot-demo,configmap 也称为 spring-boot-demo。但我从未在 Spring Cloud Kubernetes Configuration Watcher 的日志中找到任何提及“spring-boot-demo”的内容,我也无法确定它是否已将发布请求发送到相关端点。

我只能看到下面重复出现的日志:

2021-11-22 02:58:53.332  INFO 1 --- [192.168.0.1/...] .w.HttpBasedConfigMapWatchChangeDetector : Added new Kubernetes watch: config-maps-watch-event
2021-11-22 02:58:53.332  INFO 1 --- [192.168.0.1/...] .w.HttpBasedConfigMapWatchChangeDetector : Kubernetes event-based configMap change detector activated
2021-11-22 03:34:06.555  WARN 1 --- [192.168.0.1/...] .f.c.r.EventBasedConfigMapChangeDetector : ConfigMaps watch closed

io.fabric8.kubernetes.client.WatcherException: too old resource version: 5491278743 (5554041906)
        at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.onStatus(AbstractWatchManager.java:263) [kubernetes-client-5.5.0.jar:na]
        at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.onMessage(AbstractWatchManager.java:247) [kubernetes-client-5.5.0.jar:na]
        at io.fabric8.kubernetes.client.dsl.internal.WatcherWebSocketListener.onMessage(WatcherWebSocketListener.java:93) [kubernetes-client-5.5.0.jar:na]
        at okhttp3.internal.ws.RealWebSocket.onReadMessage(RealWebSocket.java:322) [okhttp-3.14.9.jar:na]
        at okhttp3.internal.ws.WebSocketReader.readMessageFrame(WebSocketReader.java:219) [okhttp-3.14.9.jar:na]
        at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.java:105) [okhttp-3.14.9.jar:na]
        at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.java:273) [okhttp-3.14.9.jar:na]
        at okhttp3.internal.ws.RealWebSocket$1.onResponse(RealWebSocket.java:209) [okhttp-3.14.9.jar:na]
        at okhttp3.RealCall$AsyncCall.execute(RealCall.java:174) [okhttp-3.14.9.jar:na]
        at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) [okhttp-3.14.9.jar:na]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_312]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_312]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_312]
Caused by: io.fabric8.kubernetes.client.KubernetesClientException: too old resource version: 5491278743 (5554041906)
        ... 13 common frames omitted

2021-11-22 03:34:06.605  INFO 1 --- [192.168.0.1/...] .f.c.r.EventBasedConfigMapChangeDetector : Added new Kubernetes watch: config-maps-watch-event
2021-11-22 03:34:06.605  INFO 1 --- [192.168.0.1/...] .f.c.r.EventBasedConfigMapChangeDetector : Kubernetes event-based configMap change detector activated
2021-11-22 03:34:06.607  INFO 1 --- [192.168.0.1/...] s.c.k.f.c.Fabric8ConfigMapPropertySource : Loading ConfigMap with name 'spring-cloud-kubernetes-configuration-watcher' in namespace 'my-namespace'
2021-11-22 03:34:06.621  WARN 1 --- [192.168.0.1/...] o.s.c.k.f.config.Fabric8ConfigUtils      : config-map with name : 'spring-cloud-kubernetes-configuration-watcher' not present in namespace : 'my-namespace'
2021-11-22 03:34:06.625  WARN 1 --- [192.168.0.1/...] o.s.c.k.f.config.Fabric8ConfigUtils      : config-map with name : 'spring-cloud-kubernetes-configuration-watcher-kubernetes' not present in namespace : 'my-namespace'

我使用的 docker 镜像是 springcloud/spring-cloud-kubernetes-configuration-watcher:2.1.0-RC1

任何调试此问题的提示表示赞赏。

4

0 回答 0