mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2025-02-19 15:30:17 +00:00
lib/promscrape/discovery/kubernetes: refresh role: endpoints
targets on service object removal as Prometheus does
This is a follow-up for ae37cfd528
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1240
This commit is contained in:
parent
db27dbab5e
commit
34321e5f8d
1 changed files with 16 additions and 8 deletions
|
@ -301,6 +301,13 @@ func (gw *groupWatcher) getCachedObjectByRole(role, namespace, name string) obje
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (gw *groupWatcher) refreshEndpointsLabels(namespace, key string) {
|
||||||
|
// Refresh endpoints and endpointslices labels for the corresponding service as Prometheus does.
|
||||||
|
// See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1240
|
||||||
|
gw.refreshObjectLabels("endpoints", namespace, key)
|
||||||
|
gw.refreshObjectLabels("endpointslices", namespace, key)
|
||||||
|
}
|
||||||
|
|
||||||
func (gw *groupWatcher) refreshObjectLabels(role, namespace, key string) {
|
func (gw *groupWatcher) refreshObjectLabels(role, namespace, key string) {
|
||||||
// There is no need in starting url watcher for the given role,
|
// There is no need in starting url watcher for the given role,
|
||||||
// since there is no (namespace, key) object yet for this role.
|
// since there is no (namespace, key) object yet for this role.
|
||||||
|
@ -550,13 +557,10 @@ func (uw *urlWatcher) reloadObjects() string {
|
||||||
|
|
||||||
uw.reloadScrapeWorksForAPIWatchers(aws, objectsByKey)
|
uw.reloadScrapeWorksForAPIWatchers(aws, objectsByKey)
|
||||||
if uw.role == "service" {
|
if uw.role == "service" {
|
||||||
// Update endpoints and endpointslices for the corresponding service as Prometheus does.
|
// Refresh endpoints labels for the corresponding services as Prometheus does.
|
||||||
// See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1240
|
// See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1240
|
||||||
gw := uw.gw
|
|
||||||
namespace := uw.namespace
|
|
||||||
for key := range objectsByKey {
|
for key := range objectsByKey {
|
||||||
gw.refreshObjectLabels("endpoints", namespace, key)
|
uw.gw.refreshEndpointsLabels(uw.namespace, key)
|
||||||
gw.refreshObjectLabels("endpointslices", namespace, key)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logger.Infof("reloaded %d objects from %q", len(objectsByKey), requestURL)
|
logger.Infof("reloaded %d objects from %q", len(objectsByKey), requestURL)
|
||||||
|
@ -686,10 +690,9 @@ func (uw *urlWatcher) readObjectUpdateStream(r io.Reader) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if uw.role == "service" {
|
if uw.role == "service" {
|
||||||
// Update endpoints and endpointslices for the corresponding service as Prometheus does.
|
// Refresh endpoints labels for the corresponding service as Prometheus does.
|
||||||
// See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1240
|
// See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1240
|
||||||
uw.gw.refreshObjectLabels("endpoints", uw.namespace, key)
|
uw.gw.refreshEndpointsLabels(uw.namespace, key)
|
||||||
uw.gw.refreshObjectLabels("endpointslices", uw.namespace, key)
|
|
||||||
}
|
}
|
||||||
case "DELETED":
|
case "DELETED":
|
||||||
o, err := uw.parseObject(we.Object)
|
o, err := uw.parseObject(we.Object)
|
||||||
|
@ -708,6 +711,11 @@ func (uw *urlWatcher) readObjectUpdateStream(r io.Reader) error {
|
||||||
for _, aw := range aws {
|
for _, aw := range aws {
|
||||||
aw.removeScrapeWorks(uw.namespace, key)
|
aw.removeScrapeWorks(uw.namespace, key)
|
||||||
}
|
}
|
||||||
|
if uw.role == "service" {
|
||||||
|
// Refresh endpoints labels for the corresponding service as Prometheus does.
|
||||||
|
// See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1240
|
||||||
|
uw.gw.refreshEndpointsLabels(uw.namespace, key)
|
||||||
|
}
|
||||||
case "BOOKMARK":
|
case "BOOKMARK":
|
||||||
// See https://kubernetes.io/docs/reference/using-api/api-concepts/#watch-bookmarks
|
// See https://kubernetes.io/docs/reference/using-api/api-concepts/#watch-bookmarks
|
||||||
bm, err := parseBookmark(we.Object)
|
bm, err := parseBookmark(we.Object)
|
||||||
|
|
Loading…
Reference in a new issue