当我部署这个时:
kind: ServiceMonitor
apiVersion: monitoring.coreos.com/v1
metadata:
labels:
app: complaints-monitor
release: prometheus # <---------
name: complaints-monitor-svc-monitor
namespace: default
spec:
endpoints:
- path: /metrics
port: web
namespaceSelector:
matchNames:
- default
selector:
matchLabels:
app: complaints-monitor我的服务在普罗米修斯的目标下出现并正常运行。
如果应用以下内容,则目标将消失:
kind: ServiceMonitor
apiVersion: monitoring.coreos.com/v1
metadata:
labels:
app: complaints-monitor
name: complaints-monitor-svc-monitor
namespace: default
spec:
endpoints:
- path: /metrics
port: web
namespaceSelector:
matchNames:
- default
selector:
matchLabels:
app: complaints-monitor发布于 2021-12-07 09:05:22
在检查了values.yaml of kube-prometheus-stack之后才发现了这个问题
## If true, a nil or {} value for prometheus.prometheusSpec.serviceMonitorSelector will cause the
## prometheus resource to be created with selectors based on values in the helm deployment,
## which will also match the servicemonitors created
##
serviceMonitorSelectorNilUsesHelmValues: true
## ServiceMonitors to be selected for target discovery.
## If {}, select all ServiceMonitors
##
serviceMonitorSelector: {}
## Example which selects ServiceMonitors with label "prometheus" set to "somelabel"
# serviceMonitorSelector:
# matchLabels:
# prometheus: somelabel当您使用helm安装kube-prometheus-stack时,它会向Kubernetes资源添加label release: <prometheus-installed-namespace>。
如果设置serviceMonitorSelectorNilUsesHelmValues是true,则将向prometheus.prometheusSpec.serviceMonitorSelector添加选择器,在您的情况下是release: prometheus。
您将能够看到prometheus用命令选择serviceMonitor的选择器
kubectl -n <prometheus-installed-namespace> get prometheus -o yaml并搜索serviceMonitorSelector。
在不添加release标签的情况下,您有两个选项可以使它工作
serviceMonitorSelectorNilUsesHelmValues设置为false,然后prometheus将选择所有serviceMonitorserviceMonitorSelector设置为任何您喜欢的标签。https://stackoverflow.com/questions/69466567
复制相似问题