# What a node drain may take away. # # `minAvailable: 1` on both, so a cluster upgrade cannot evict the last pod of either. With the # API's 90-second grace period a drain will take a minute or two per pod — that is the run drain # doing its job, not a stall. apiVersion: policy/v1 kind: PodDisruptionBudget metadata: # With the Ingress, after the Deployments they protect. A PodDisruptionBudget naming a # selector that matches nothing is not an error and not a warning — it is simply not # protecting anything, which is the one state it must never be in quietly. annotations: argocd.argoproj.io/sync-wave: "2" name: jarvis-api namespace: jarvis spec: minAvailable: 1 selector: matchLabels: app.kubernetes.io/name: jarvis app.kubernetes.io/component: api --- apiVersion: policy/v1 kind: PodDisruptionBudget metadata: # Same wave, same reason. annotations: argocd.argoproj.io/sync-wave: "2" name: jarvis-web namespace: jarvis spec: minAvailable: 1 selector: matchLabels: app.kubernetes.io/name: jarvis app.kubernetes.io/component: web