MetalLB speaker pods can be evicted by Kubelet

I was playing with a dev workload cluster which was a bit short on disk space, and I observed the cluster becoming unreachable.

This was due to Kubelet having evicted the MetalLB speaker pods on the nodes:

root@my-capo-wc-cp-6508611af4-krc72:/home/node-admin# kubectl get pods -A -o wide |grep speaker
metallb-system        metallb-speaker-2wcdd                                     0/1     Evicted                       0               104s    <none>           my-capo-wc-cp-6508611af4-krc72   <none>           <none>
metallb-system        metallb-speaker-mbt88                                     0/1     Evicted                       0               104s    <none>           my-capo-wc-cp-6508611af4-x6572   <none>           <none>
Events:
  Type     Reason     Age    From               Message
  ----     ------     ----   ----               -------
  Normal   Scheduled  2m53s  default-scheduler  Successfully assigned metallb-system/metallb-speaker-2wcdd to my-capo-wc-cp-6508611af4-krc72
  Warning  Evicted    2m54s  kubelet            The node had condition: [DiskPressure].

This is a Kubelet eviction, against which the toleration set on the pods has no effect.

To avoid or mitigate this risk we should set a priorityClassName on these pods.

e.g for RKE2:

(metallb chart values)

speaker:
  priorityClassName: system-cluster-critical
Assignee Loading
Time tracking Loading