diff --git a/jsonnet/kube-prometheus/components/alertmanager.libsonnet b/jsonnet/kube-prometheus/components/alertmanager.libsonnet
index 8dd14ba4e5c304274916f505783f277c86b26164..aca1a86619973961ef6cf4aee66414af5e34e1f4 100644
--- a/jsonnet/kube-prometheus/components/alertmanager.libsonnet
+++ b/jsonnet/kube-prometheus/components/alertmanager.libsonnet
@@ -165,6 +165,24 @@ function(params) {
     },
   },
 
+  podDisruptionBudget: {
+    apiVersion: 'policy/v1beta1',
+    kind: 'PodDisruptionBudget',
+    metadata: {
+      name: 'alertmanager-' + am.config.name,
+      namespace: am.config.namespace,
+      labels: am.config.commonLabels,
+    },
+    spec: {
+      maxUnavailable: 1,
+      selector: {
+        matchLabels: {
+          alertmanager: am.config.name,
+        } + am.config.selectorLabels,
+      },
+    },
+  },
+
   alertmanager: {
     apiVersion: 'monitoring.coreos.com/v1',
     kind: 'Alertmanager',
diff --git a/jsonnet/kube-prometheus/components/prometheus.libsonnet b/jsonnet/kube-prometheus/components/prometheus.libsonnet
index 097243a0e074e9f0de62347c626ab54c26d629a8..1a82b3e620f9561160c8720976bf85a63be7e2fe 100644
--- a/jsonnet/kube-prometheus/components/prometheus.libsonnet
+++ b/jsonnet/kube-prometheus/components/prometheus.libsonnet
@@ -236,6 +236,24 @@ function(params) {
       items: [newSpecificRole(x) for x in p.config.namespaces],
     },
 
+  podDisruptionBudget: {
+    apiVersion: 'policy/v1beta1',
+    kind: 'PodDisruptionBudget',
+    metadata: {
+      name: 'prometheus-' + p.config.name,
+      namespace: p.config.namespace,
+      labels: p.config.commonLabels,
+    },
+    spec: {
+      minAvailable: 1,
+      selector: {
+        matchLabels: {
+          prometheus: p.config.name,
+        } + p.config.selectorLabels,
+      },
+    },
+  },
+
   prometheus: {
     apiVersion: 'monitoring.coreos.com/v1',
     kind: 'Prometheus',