diff --git a/roles/kubernetes-apps/metallb/defaults/main.yml b/roles/kubernetes-apps/metallb/defaults/main.yml
index 211bbb17690e6285196035dfa08162ca0c52584c..57d82ef31f6d7b54deb3bfa6905a4d139b77d691 100644
--- a/roles/kubernetes-apps/metallb/defaults/main.yml
+++ b/roles/kubernetes-apps/metallb/defaults/main.yml
@@ -6,8 +6,10 @@ metallb_port: "7472"
 metallb_memberlist_port: "7946"
 metallb_peers: []
 metallb_speaker_enabled: true
-metallb_speaker_nodeselector: {}
-metallb_controller_nodeselector: {}
+metallb_speaker_nodeselector:
+  kubernetes.io/os: "linux"
+metallb_controller_nodeselector:
+  kubernetes.io/os: "linux"
 metallb_speaker_tolerations:
   - effect: NoSchedule
     key: node-role.kubernetes.io/master
diff --git a/roles/kubernetes-apps/metallb/templates/metallb.yml.j2 b/roles/kubernetes-apps/metallb/templates/metallb.yml.j2
index cde041549aec1cd447cd08e8c4da587e89108aa5..fe011c8a3eb85a097d6f306c77d3e991aefa8979 100644
--- a/roles/kubernetes-apps/metallb/templates/metallb.yml.j2
+++ b/roles/kubernetes-apps/metallb/templates/metallb.yml.j2
@@ -398,14 +398,12 @@ spec:
             - ALL
           readOnlyRootFilesystem: true
       hostNetwork: true
-      nodeSelector:
-        kubernetes.io/os: linux
-      serviceAccountName: speaker
-      terminationGracePeriodSeconds: 2
 {% if metallb_speaker_nodeselector %}
       nodeSelector:
         {{ metallb_speaker_nodeselector | to_nice_yaml | indent(width=8) }}
 {%- endif %}
+      serviceAccountName: speaker
+      terminationGracePeriodSeconds: 2
 {% if metallb_speaker_tolerations %}
       tolerations:
         {{ metallb_speaker_tolerations | to_nice_yaml(indent=2) | indent(width=8) }}
@@ -435,10 +433,6 @@ spec:
         app: metallb
         component: controller
     spec:
-{% if metallb_controller_nodeselector %}
-      nodeSelector:
-        {{ metallb_controller_nodeselector | to_nice_yaml | indent(width=8) }}
-{%- endif %}
 {% if metallb_controller_tolerations %}
       tolerations:
         {{ metallb_controller_tolerations | to_nice_yaml(indent=2) | indent(width=8) }}
@@ -463,8 +457,10 @@ spec:
             drop:
             - all
           readOnlyRootFilesystem: true
+{% if metallb_controller_nodeselector %}
       nodeSelector:
-        kubernetes.io/os: linux
+        {{ metallb_controller_nodeselector | to_nice_yaml | indent(width=8) }}
+{%- endif %}
       securityContext:
         runAsNonRoot: true
         runAsUser: 65534