diff --git a/inventory/sample/group_vars/k8s_cluster/addons.yml b/inventory/sample/group_vars/k8s_cluster/addons.yml
index d43c90e2dafa98d8e0ed99bcdd88fa97dafb39a7..31363ce67164f9587101deee522f0a065fd757d9 100644
--- a/inventory/sample/group_vars/k8s_cluster/addons.yml
+++ b/inventory/sample/group_vars/k8s_cluster/addons.yml
@@ -182,7 +182,7 @@ metallb_speaker_enabled: true
 #     operator: "Equal"
 #     value: ""
 #     effect: "NoSchedule"
-# metallb_version: v0.10.3
+# metallb_version: v0.11.0
 # metallb_protocol: "layer2"
 # metallb_port: "7472"
 # metallb_memberlist_port: "7946"
diff --git a/roles/kubernetes-apps/metallb/defaults/main.yml b/roles/kubernetes-apps/metallb/defaults/main.yml
index 68ba1fc09a757632e2c881e3c104b7760ab79eec..4c2a7255c0c3999d793e7d84c17f53ef5f4a8708 100644
--- a/roles/kubernetes-apps/metallb/defaults/main.yml
+++ b/roles/kubernetes-apps/metallb/defaults/main.yml
@@ -1,6 +1,7 @@
 ---
 metallb_enabled: false
-metallb_version: v0.10.3
+metallb_version: v0.11.0
+metallb_log_level: info
 metallb_protocol: "layer2"
 metallb_port: "7472"
 metallb_memberlist_port: "7946"
diff --git a/roles/kubernetes-apps/metallb/templates/metallb.yml.j2 b/roles/kubernetes-apps/metallb/templates/metallb.yml.j2
index 0dda2099413ee05b6da3ccef69719e6f8a48e742..e07b33e8e5d898c994f7867d6c96a8b87dcffc98 100644
--- a/roles/kubernetes-apps/metallb/templates/metallb.yml.j2
+++ b/roles/kubernetes-apps/metallb/templates/metallb.yml.j2
@@ -31,10 +31,7 @@ spec:
   requiredDropCapabilities:
   - ALL
   runAsUser:
-    ranges:
-    - max: 65535
-      min: 1
-    rule: MustRunAs
+    rule: MustRunAsNonRoot
   seLinux:
     rule: RunAsAny
   supplementalGroups:
@@ -354,6 +351,7 @@ spec:
       - args:
         - --port={{ metallb_port }}
         - --config=config
+        - --log-level={{ metallb_log_level }}
         env:
         - name: METALLB_NODE_NAME
           valueFrom:
@@ -389,6 +387,24 @@ spec:
         - containerPort: {{ metallb_memberlist_port }}
           name: memberlist-udp
           protocol: UDP
+        livenessProbe:
+          httpGet:
+            path: /metrics
+            port: metrics
+          initialDelaySeconds: 10
+          periodSeconds: 10
+          timeoutSeconds: 1
+          successThreshold: 1
+          failureThreshold: 3
+        readinessProbe:
+          httpGet:
+            path: /metrics
+            port: metrics
+          initialDelaySeconds: 10
+          periodSeconds: 10
+          timeoutSeconds: 1
+          successThreshold: 1
+          failureThreshold: 3
         securityContext:
           allowPrivilegeEscalation: false
           capabilities:
@@ -442,6 +458,7 @@ spec:
       - args:
         - --port={{ metallb_port }}
         - --config=config
+        - --log-level={{ metallb_log_level }}
         env:
         - name: METALLB_ML_SECRET_NAME
           value: memberlist
@@ -458,6 +475,24 @@ spec:
             drop:
             - all
           readOnlyRootFilesystem: true
+        livenessProbe:
+          httpGet:
+            path: /metrics
+            port: metrics
+          initialDelaySeconds: 10
+          periodSeconds: 10
+          timeoutSeconds: 1
+          successThreshold: 1
+          failureThreshold: 3
+        readinessProbe:
+          httpGet:
+            path: /metrics
+            port: metrics
+          initialDelaySeconds: 10
+          periodSeconds: 10
+          timeoutSeconds: 1
+          successThreshold: 1
+          failureThreshold: 3
 {% if metallb_controller_nodeselector %}
       nodeSelector:
         {{ metallb_controller_nodeselector | to_nice_yaml | indent(width=8) }}