diff --git a/manifests/alertmanager-alertmanager.yaml b/manifests/alertmanager-alertmanager.yaml
index 55b353a8f12b9302a2292b0db66832e5f841bcbb..f873dcc0eb673684fe2b0c450e64ca788afaa278 100644
--- a/manifests/alertmanager-alertmanager.yaml
+++ b/manifests/alertmanager-alertmanager.yaml
@@ -3,12 +3,22 @@ kind: Alertmanager
 metadata:
   labels:
     alertmanager: main
+    app.kubernetes.io/component: router
+    app.kubernetes.io/name: alertmanager-main
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: v0.21.0
   name: main
   namespace: monitoring
 spec:
   image: quay.io/prometheus/alertmanager:v0.21.0
   nodeSelector:
     kubernetes.io/os: linux
+  podMetadata:
+    labels:
+      app.kubernetes.io/component: router
+      app.kubernetes.io/name: alertmanager-main
+      app.kubernetes.io/part-of: kube-prometheus
+      app.kubernetes.io/version: v0.21.0
   replicas: 3
   securityContext:
     fsGroup: 2000
diff --git a/manifests/alertmanager-service.yaml b/manifests/alertmanager-service.yaml
index df4c9ff5d490296d14511caa63fe89cfa3f3c927..19125e9eea5c3d8600e3fc82939b2d501eb7cbc6 100644
--- a/manifests/alertmanager-service.yaml
+++ b/manifests/alertmanager-service.yaml
@@ -3,6 +3,10 @@ kind: Service
 metadata:
   labels:
     alertmanager: main
+    app.kubernetes.io/component: router
+    app.kubernetes.io/name: alertmanager-main
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: v0.21.0
   name: alertmanager-main
   namespace: monitoring
 spec:
@@ -13,4 +17,7 @@ spec:
   selector:
     alertmanager: main
     app: alertmanager
+    app.kubernetes.io/component: router
+    app.kubernetes.io/name: alertmanager-main
+    app.kubernetes.io/part-of: kube-prometheus
   sessionAffinity: ClientIP
diff --git a/manifests/alertmanager-serviceMonitor.yaml b/manifests/alertmanager-serviceMonitor.yaml
index 548af0d6dde9646f2add57c915d9fe25524971aa..ead162696eaaadd47e8572ad6496dddb4c20e89a 100644
--- a/manifests/alertmanager-serviceMonitor.yaml
+++ b/manifests/alertmanager-serviceMonitor.yaml
@@ -2,7 +2,10 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   labels:
-    k8s-app: alertmanager
+    app.kubernetes.io/component: router
+    app.kubernetes.io/name: alertmanager-main
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: v0.21.0
   name: alertmanager
   namespace: monitoring
 spec:
@@ -12,3 +15,6 @@ spec:
   selector:
     matchLabels:
       alertmanager: main
+      app.kubernetes.io/component: router
+      app.kubernetes.io/name: alertmanager-main
+      app.kubernetes.io/part-of: kube-prometheus
diff --git a/manifests/kube-state-metrics-clusterRole.yaml b/manifests/kube-state-metrics-clusterRole.yaml
index c04db2900015e53ff0ad3e4475d6d7754c9de364..0f0502d2e519c691004e07f308a67d46fa7183aa 100644
--- a/manifests/kube-state-metrics-clusterRole.yaml
+++ b/manifests/kube-state-metrics-clusterRole.yaml
@@ -2,8 +2,10 @@ apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRole
 metadata:
   labels:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: kube-state-metrics
-    app.kubernetes.io/version: v1.9.7
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: 1.9.7
   name: kube-state-metrics
 rules:
 - apiGroups:
diff --git a/manifests/kube-state-metrics-clusterRoleBinding.yaml b/manifests/kube-state-metrics-clusterRoleBinding.yaml
index c8f9434da7b873ee1ef2a14601db301b5b0641a7..f8e8ad8e946135a0a1060d5782395f2bc1cd42ee 100644
--- a/manifests/kube-state-metrics-clusterRoleBinding.yaml
+++ b/manifests/kube-state-metrics-clusterRoleBinding.yaml
@@ -2,8 +2,10 @@ apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRoleBinding
 metadata:
   labels:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: kube-state-metrics
-    app.kubernetes.io/version: v1.9.7
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: 1.9.7
   name: kube-state-metrics
 roleRef:
   apiGroup: rbac.authorization.k8s.io
diff --git a/manifests/kube-state-metrics-deployment.yaml b/manifests/kube-state-metrics-deployment.yaml
index 9bda5c69b54b7296c517603f619d2066a769eddd..ab50e622f6b4690c4a0cb83f568e58fc3e70a56e 100644
--- a/manifests/kube-state-metrics-deployment.yaml
+++ b/manifests/kube-state-metrics-deployment.yaml
@@ -2,20 +2,26 @@ apiVersion: apps/v1
 kind: Deployment
 metadata:
   labels:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: kube-state-metrics
-    app.kubernetes.io/version: v1.9.7
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: 1.9.7
   name: kube-state-metrics
   namespace: monitoring
 spec:
   replicas: 1
   selector:
     matchLabels:
+      app.kubernetes.io/component: exporter
       app.kubernetes.io/name: kube-state-metrics
+      app.kubernetes.io/part-of: kube-prometheus
   template:
     metadata:
       labels:
+        app.kubernetes.io/component: exporter
         app.kubernetes.io/name: kube-state-metrics
-        app.kubernetes.io/version: v1.9.7
+        app.kubernetes.io/part-of: kube-prometheus
+        app.kubernetes.io/version: 1.9.7
     spec:
       containers:
       - args:
diff --git a/manifests/kube-state-metrics-service.yaml b/manifests/kube-state-metrics-service.yaml
index d734a19ba110f225e45afe6255c9e664072fc13b..28abe2b6c9f0d41846ab902325d64ab8aa839728 100644
--- a/manifests/kube-state-metrics-service.yaml
+++ b/manifests/kube-state-metrics-service.yaml
@@ -2,8 +2,10 @@ apiVersion: v1
 kind: Service
 metadata:
   labels:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: kube-state-metrics
-    app.kubernetes.io/version: v1.9.7
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: 1.9.7
   name: kube-state-metrics
   namespace: monitoring
 spec:
@@ -16,4 +18,6 @@ spec:
     port: 9443
     targetPort: https-self
   selector:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: kube-state-metrics
+    app.kubernetes.io/part-of: kube-prometheus
diff --git a/manifests/kube-state-metrics-serviceAccount.yaml b/manifests/kube-state-metrics-serviceAccount.yaml
index c23b36c1f180a60be837862d768219bbaab14549..b1ffdc7024872f5789857396684ed3f63216dee1 100644
--- a/manifests/kube-state-metrics-serviceAccount.yaml
+++ b/manifests/kube-state-metrics-serviceAccount.yaml
@@ -2,7 +2,9 @@ apiVersion: v1
 kind: ServiceAccount
 metadata:
   labels:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: kube-state-metrics
-    app.kubernetes.io/version: v1.9.7
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: 1.9.7
   name: kube-state-metrics
   namespace: monitoring
diff --git a/manifests/kube-state-metrics-serviceMonitor.yaml b/manifests/kube-state-metrics-serviceMonitor.yaml
index b860f4c3d34d39b5f455fa8b96bcd682dad8e6df..85b30116dc129720a5e8274139ef0aa84594fa1d 100644
--- a/manifests/kube-state-metrics-serviceMonitor.yaml
+++ b/manifests/kube-state-metrics-serviceMonitor.yaml
@@ -2,7 +2,9 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   labels:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: kube-state-metrics
+    app.kubernetes.io/part-of: kube-prometheus
     app.kubernetes.io/version: 1.9.7
   name: kube-state-metrics
   namespace: monitoring
@@ -28,4 +30,6 @@ spec:
   jobLabel: app.kubernetes.io/name
   selector:
     matchLabels:
+      app.kubernetes.io/component: exporter
       app.kubernetes.io/name: kube-state-metrics
+      app.kubernetes.io/part-of: kube-prometheus
diff --git a/manifests/node-exporter-daemonset.yaml b/manifests/node-exporter-daemonset.yaml
index 9a6f163d8462d463ede1f4867942383a323956eb..936aa73731c8bedf680e7260369bfd63108f42fa 100644
--- a/manifests/node-exporter-daemonset.yaml
+++ b/manifests/node-exporter-daemonset.yaml
@@ -2,18 +2,24 @@ apiVersion: apps/v1
 kind: DaemonSet
 metadata:
   labels:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: node-exporter
+    app.kubernetes.io/part-of: kube-prometheus
     app.kubernetes.io/version: v1.0.1
   name: node-exporter
   namespace: monitoring
 spec:
   selector:
     matchLabels:
+      app.kubernetes.io/component: exporter
       app.kubernetes.io/name: node-exporter
+      app.kubernetes.io/part-of: kube-prometheus
   template:
     metadata:
       labels:
+        app.kubernetes.io/component: exporter
         app.kubernetes.io/name: node-exporter
+        app.kubernetes.io/part-of: kube-prometheus
         app.kubernetes.io/version: v1.0.1
     spec:
       containers:
diff --git a/manifests/node-exporter-service.yaml b/manifests/node-exporter-service.yaml
index cb9666013e982be081f15ce8d1e4e5a7dd88395c..4423c3e879e06cc2cab2180b7f8825c272727da6 100644
--- a/manifests/node-exporter-service.yaml
+++ b/manifests/node-exporter-service.yaml
@@ -2,7 +2,9 @@ apiVersion: v1
 kind: Service
 metadata:
   labels:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: node-exporter
+    app.kubernetes.io/part-of: kube-prometheus
     app.kubernetes.io/version: v1.0.1
   name: node-exporter
   namespace: monitoring
@@ -13,4 +15,6 @@ spec:
     port: 9100
     targetPort: https
   selector:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: node-exporter
+    app.kubernetes.io/part-of: kube-prometheus
diff --git a/manifests/node-exporter-serviceMonitor.yaml b/manifests/node-exporter-serviceMonitor.yaml
index 8e5a97c9ba0786445bad9fd577e591cd12472b9c..65432fd66f2090069c815688df5391769dac176d 100644
--- a/manifests/node-exporter-serviceMonitor.yaml
+++ b/manifests/node-exporter-serviceMonitor.yaml
@@ -2,7 +2,9 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   labels:
+    app.kubernetes.io/component: exporter
     app.kubernetes.io/name: node-exporter
+    app.kubernetes.io/part-of: kube-prometheus
     app.kubernetes.io/version: v1.0.1
   name: node-exporter
   namespace: monitoring
@@ -24,4 +26,6 @@ spec:
   jobLabel: app.kubernetes.io/name
   selector:
     matchLabels:
+      app.kubernetes.io/component: exporter
       app.kubernetes.io/name: node-exporter
+      app.kubernetes.io/part-of: kube-prometheus
diff --git a/manifests/prometheus-adapter-deployment.yaml b/manifests/prometheus-adapter-deployment.yaml
index bb85e2519f34db7a48908875f72ba1cf4e65f7f7..53f1ee1de2c681142394fa745efb950729dd71cd 100644
--- a/manifests/prometheus-adapter-deployment.yaml
+++ b/manifests/prometheus-adapter-deployment.yaml
@@ -7,7 +7,9 @@ spec:
   replicas: 1
   selector:
     matchLabels:
-      name: prometheus-adapter
+      app.kubernetes.io/component: metrics-adapter
+      app.kubernetes.io/name: prometheus-adapter
+      app.kubernetes.io/part-of: kube-prometheus
   strategy:
     rollingUpdate:
       maxSurge: 1
@@ -15,7 +17,10 @@ spec:
   template:
     metadata:
       labels:
-        name: prometheus-adapter
+        app.kubernetes.io/component: metrics-adapter
+        app.kubernetes.io/name: prometheus-adapter
+        app.kubernetes.io/part-of: kube-prometheus
+        app.kubernetes.io/version: v0.8.2
     spec:
       containers:
       - args:
diff --git a/manifests/prometheus-adapter-service.yaml b/manifests/prometheus-adapter-service.yaml
index e786e01c4aff3ce0e9ca3c3266b1dda817ca8935..41b18f00108f0b7163929aa3a54841ed74a50613 100644
--- a/manifests/prometheus-adapter-service.yaml
+++ b/manifests/prometheus-adapter-service.yaml
@@ -2,7 +2,10 @@ apiVersion: v1
 kind: Service
 metadata:
   labels:
-    name: prometheus-adapter
+    app.kubernetes.io/component: metrics-adapter
+    app.kubernetes.io/name: prometheus-adapter
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: v0.8.2
   name: prometheus-adapter
   namespace: monitoring
 spec:
@@ -11,4 +14,6 @@ spec:
     port: 443
     targetPort: 6443
   selector:
-    name: prometheus-adapter
+    app.kubernetes.io/component: metrics-adapter
+    app.kubernetes.io/name: prometheus-adapter
+    app.kubernetes.io/part-of: kube-prometheus
diff --git a/manifests/prometheus-adapter-serviceMonitor.yaml b/manifests/prometheus-adapter-serviceMonitor.yaml
index 91a8d51a3a8014e741db041b9aa1b1902a05f201..3291e49d69820d4107ea5c0d184b8e86df87287d 100644
--- a/manifests/prometheus-adapter-serviceMonitor.yaml
+++ b/manifests/prometheus-adapter-serviceMonitor.yaml
@@ -2,7 +2,10 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   labels:
-    name: prometheus-adapter
+    app.kubernetes.io/component: metrics-adapter
+    app.kubernetes.io/name: prometheus-adapter
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: v0.8.2
   name: prometheus-adapter
   namespace: monitoring
 spec:
@@ -15,4 +18,6 @@ spec:
       insecureSkipVerify: true
   selector:
     matchLabels:
-      name: prometheus-adapter
+      app.kubernetes.io/component: metrics-adapter
+      app.kubernetes.io/name: prometheus-adapter
+      app.kubernetes.io/part-of: kube-prometheus
diff --git a/manifests/prometheus-prometheus.yaml b/manifests/prometheus-prometheus.yaml
index e50cc9bfefa6e10c1904b263335865c4f9b67196..0548a955dd9f17fd37cdd15df20df3d44dad15de 100644
--- a/manifests/prometheus-prometheus.yaml
+++ b/manifests/prometheus-prometheus.yaml
@@ -2,6 +2,10 @@ apiVersion: monitoring.coreos.com/v1
 kind: Prometheus
 metadata:
   labels:
+    app.kubernetes.io/component: prometheus
+    app.kubernetes.io/name: prometheus-k8s
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: v2.22.1
     prometheus: k8s
   name: k8s
   namespace: monitoring
@@ -14,6 +18,12 @@ spec:
   image: quay.io/prometheus/prometheus:v2.22.1
   nodeSelector:
     kubernetes.io/os: linux
+  podMetadata:
+    labels:
+      app.kubernetes.io/component: prometheus
+      app.kubernetes.io/name: prometheus-k8s
+      app.kubernetes.io/part-of: kube-prometheus
+      app.kubernetes.io/version: v2.22.1
   podMonitorNamespaceSelector: {}
   podMonitorSelector: {}
   probeNamespaceSelector: {}
diff --git a/manifests/prometheus-service.yaml b/manifests/prometheus-service.yaml
index 4f61e88ab777a70b7ff106cceb10a42556949e2b..b2e6dcf440f2eb4b3c6a32b6578551f10b1706fa 100644
--- a/manifests/prometheus-service.yaml
+++ b/manifests/prometheus-service.yaml
@@ -2,6 +2,10 @@ apiVersion: v1
 kind: Service
 metadata:
   labels:
+    app.kubernetes.io/component: prometheus
+    app.kubernetes.io/name: prometheus-k8s
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: v2.22.1
     prometheus: k8s
   name: prometheus-k8s
   namespace: monitoring
@@ -12,5 +16,8 @@ spec:
     targetPort: web
   selector:
     app: prometheus
+    app.kubernetes.io/component: prometheus
+    app.kubernetes.io/name: prometheus-k8s
+    app.kubernetes.io/part-of: kube-prometheus
     prometheus: k8s
   sessionAffinity: ClientIP
diff --git a/manifests/prometheus-serviceMonitor.yaml b/manifests/prometheus-serviceMonitor.yaml
index b7605dbeb6e4a4253db105a0a6faee1882880767..c8a74e96e750cfc7d8e66d355a73a43ffb64c49b 100644
--- a/manifests/prometheus-serviceMonitor.yaml
+++ b/manifests/prometheus-serviceMonitor.yaml
@@ -2,7 +2,10 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   labels:
-    k8s-app: prometheus
+    app.kubernetes.io/component: prometheus
+    app.kubernetes.io/name: prometheus-k8s
+    app.kubernetes.io/part-of: kube-prometheus
+    app.kubernetes.io/version: v2.22.1
   name: prometheus
   namespace: monitoring
 spec:
@@ -11,4 +14,7 @@ spec:
     port: web
   selector:
     matchLabels:
+      app.kubernetes.io/component: prometheus
+      app.kubernetes.io/name: prometheus-k8s
+      app.kubernetes.io/part-of: kube-prometheus
       prometheus: k8s
diff --git a/manifests/prometheus-serviceMonitorApiserver.yaml b/manifests/prometheus-serviceMonitorApiserver.yaml
index 1ff61fe9f56a0fb27bec7be175f99b2f9024b0a3..cc6f079c62767a43be89f78cfd3b3b1b506f3e83 100644
--- a/manifests/prometheus-serviceMonitorApiserver.yaml
+++ b/manifests/prometheus-serviceMonitorApiserver.yaml
@@ -2,7 +2,7 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   labels:
-    k8s-app: apiserver
+    app.kubernetes.io/name: apiserver
   name: kube-apiserver
   namespace: monitoring
 spec:
diff --git a/manifests/prometheus-serviceMonitorCoreDNS.yaml b/manifests/prometheus-serviceMonitorCoreDNS.yaml
index 633aa18cf1d4d352e4f527b726a1127393da6f4d..c4b37433fc42f97f493e00137f697641415f8dc0 100644
--- a/manifests/prometheus-serviceMonitorCoreDNS.yaml
+++ b/manifests/prometheus-serviceMonitorCoreDNS.yaml
@@ -2,7 +2,7 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   labels:
-    k8s-app: coredns
+    app.kubernetes.io/name: coredns
   name: coredns
   namespace: monitoring
 spec:
@@ -10,10 +10,10 @@ spec:
   - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
     interval: 15s
     port: metrics
-  jobLabel: k8s-app
+  jobLabel: app.kubernetes.io/name
   namespaceSelector:
     matchNames:
     - kube-system
   selector:
     matchLabels:
-      k8s-app: kube-dns
+      app.kubernetes.io/name: kube-dns
diff --git a/manifests/prometheus-serviceMonitorKubeControllerManager.yaml b/manifests/prometheus-serviceMonitorKubeControllerManager.yaml
index 0f23d84df850d717204ac67428fac0a55db0b3bf..fd9eddbf918dd707e88100f19f35aa8997cbd513 100644
--- a/manifests/prometheus-serviceMonitorKubeControllerManager.yaml
+++ b/manifests/prometheus-serviceMonitorKubeControllerManager.yaml
@@ -2,7 +2,7 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   labels:
-    k8s-app: kube-controller-manager
+    app.kubernetes.io/name: kube-controller-manager
   name: kube-controller-manager
   namespace: monitoring
 spec:
@@ -50,10 +50,10 @@ spec:
     scheme: https
     tlsConfig:
       insecureSkipVerify: true
-  jobLabel: k8s-app
+  jobLabel: app.kubernetes.io/name
   namespaceSelector:
     matchNames:
     - kube-system
   selector:
     matchLabels:
-      k8s-app: kube-controller-manager
+      app.kubernetes.io/name: kube-controller-manager
diff --git a/manifests/prometheus-serviceMonitorKubeScheduler.yaml b/manifests/prometheus-serviceMonitorKubeScheduler.yaml
index 8073eaca160709fb041b9f5764eec1abcfc9240a..ca30352e16bdc14ca4b70dc8dd5e203908e8cb38 100644
--- a/manifests/prometheus-serviceMonitorKubeScheduler.yaml
+++ b/manifests/prometheus-serviceMonitorKubeScheduler.yaml
@@ -2,7 +2,7 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   labels:
-    k8s-app: kube-scheduler
+    app.kubernetes.io/name: kube-scheduler
   name: kube-scheduler
   namespace: monitoring
 spec:
@@ -13,10 +13,10 @@ spec:
     scheme: https
     tlsConfig:
       insecureSkipVerify: true
-  jobLabel: k8s-app
+  jobLabel: app.kubernetes.io/name
   namespaceSelector:
     matchNames:
     - kube-system
   selector:
     matchLabels:
-      k8s-app: kube-scheduler
+      app.kubernetes.io/name: kube-scheduler
diff --git a/manifests/prometheus-serviceMonitorKubelet.yaml b/manifests/prometheus-serviceMonitorKubelet.yaml
index 7db47ef0ad0d7a3c7f8074ee32b53160ebe708d1..dc329395fb2266db5e4ca2221b55dc879b7cbabf 100644
--- a/manifests/prometheus-serviceMonitorKubelet.yaml
+++ b/manifests/prometheus-serviceMonitorKubelet.yaml
@@ -2,7 +2,7 @@ apiVersion: monitoring.coreos.com/v1
 kind: ServiceMonitor
 metadata:
   labels:
-    k8s-app: kubelet
+    app.kubernetes.io/name: kubelet
   name: kubelet
   namespace: monitoring
 spec:
@@ -81,10 +81,10 @@ spec:
     scheme: https
     tlsConfig:
       insecureSkipVerify: true
-  jobLabel: k8s-app
+  jobLabel: app.kubernetes.io/name
   namespaceSelector:
     matchNames:
     - kube-system
   selector:
     matchLabels:
-      k8s-app: kubelet
+      app.kubernetes.io/name: kubelet