Hello,

In order to maintain at least one pod for both the Flink Kubernetes
Operator and JobManagers through Kubernetes processes that use the Eviction
API
<https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/#eviction-api>
such as when draining a node, we have deployed Pod Disruption Budgets
<https://kubernetes.io/docs/concepts/workloads/pods/disruptions/#pod-disruption-budgets>
in the appropriate namespaces.

Here is the flink-kubernetes-operator PDB:

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: flink-kubernetes-operator
spec:
  minAvailable: 1
  selector:
    matchLabels:
      app: flink-kubernetes-operator

Where the Flink Kubernetes Operator has the flink-kubernetes-operator app
label defined:
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: flink-kubernetes-operator


Here is the jobmanager PDB (deployed alongside each FlinkDeployment):

apiVersion: policy/v1
kind: PodDisruptionBudget
spec:
  minAvailable: 1
  selector:
    matchLabels:
      name: jobmanager

Where the FlinkDeployment has the jobmanager name label defined:

apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
spec:
  jobManager:
    podTemplate:
      metadata:
        labels:
          name: jobmanager

We were wondering if it would make sense for the Flink Kubernetes Operator
to automatically create the PDBs as they are a native Kubernetes resource
like the Ingress that the operator currently creates.

Thanks,
Jeremy

Reply via email to