--- apiVersion: v1 items: - apiVersion: v1 kind: Pod metadata: annotations: k8s.ovn.org/pod-networks: '{"default":{"ip_addresses":["10.128.0.160/23"],"mac_address":"0a:58:0a:80:00:a0","gateway_ips":["10.128.0.1"],"routes":[{"dest":"10.128.0.0/16","nextHop":"10.128.0.1"},{"dest":"172.30.0.0/16","nextHop":"10.128.0.1"},{"dest":"169.254.0.5/32","nextHop":"10.128.0.1"},{"dest":"100.64.0.0/16","nextHop":"10.128.0.1"}],"ip_address":"10.128.0.160/23","gateway_ip":"10.128.0.1","role":"primary"}}' k8s.v1.cni.cncf.io/network-status: |- [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.128.0.160" ], "mac": "0a:58:0a:80:00:a0", "default": true, "dns": {} }] openshift.io/scc: restricted-v2 seccomp.security.alpha.kubernetes.io/pod: runtime/default creationTimestamp: "2025-12-04T12:13:33Z" generateName: controller-f8648f98b- labels: app: metallb component: controller pod-template-hash: f8648f98b managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:generateName: {} f:labels: .: {} f:app: {} f:component: {} f:pod-template-hash: {} f:ownerReferences: .: {} k:{"uid":"3782937d-3f34-4a2d-bd27-267975d21590"}: {} f:spec: f:containers: k:{"name":"controller"}: .: {} f:args: {} f:command: {} f:env: .: {} k:{"name":"METALLB_BGP_TYPE"}: .: {} f:name: {} f:value: {} k:{"name":"METALLB_DEPLOYMENT"}: .: {} f:name: {} f:value: {} k:{"name":"METALLB_ML_SECRET_NAME"}: .: {} f:name: {} f:value: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":9443,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} k:{"containerPort":29150,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:drop: {} f:readOnlyRootFilesystem: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/tmp/k8s-webhook-server/serving-certs"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"name":"kube-rbac-proxy"}: .: {} f:args: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:ports: .: {} k:{"containerPort":9120,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/metrics"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:nodeSelector: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: .: {} f:runAsNonRoot: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:volumes: .: {} k:{"name":"cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} k:{"name":"metrics-certs"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} manager: kube-controller-manager operation: Update time: "2025-12-04T12:13:33Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.ovn.org/pod-networks: {} manager: master-0 operation: Update subresource: status time: "2025-12-04T12:13:33Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.v1.cni.cncf.io/network-status: {} manager: multus-daemon operation: Update subresource: status time: "2025-12-04T12:13:36Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: k:{"type":"ContainersReady"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Initialized"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"PodReadyToStartContainers"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Ready"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} f:containerStatuses: {} f:hostIP: {} f:hostIPs: {} f:phase: {} f:podIP: {} f:podIPs: .: {} k:{"ip":"10.128.0.160"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-12-04T12:13:53Z" name: controller-f8648f98b-v2fsc namespace: metallb-system ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: controller-f8648f98b uid: 3782937d-3f34-4a2d-bd27-267975d21590 resourceVersion: "24501" uid: 197979ad-247d-457f-9529-63bcb6ce15c0 spec: containers: - args: - --port=29150 - --log-level=debug - --webhook-mode=disabled - --tls-min-version=VersionTLS12 command: - /controller env: - name: METALLB_ML_SECRET_NAME value: metallb-memberlist - name: METALLB_DEPLOYMENT value: controller - name: METALLB_BGP_TYPE value: frr-k8s image: registry.redhat.io/openshift4/metallb-rhel9@sha256:afa5a50746f3d69cef22c41c612ce3e7fe91e1da1d1d1566dee42ee304132379 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: controller ports: - containerPort: 29150 name: monitoring protocol: TCP - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsUser: 1000770000 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-rw72g readOnly: true - args: - --logtostderr - --secure-listen-address=:9120 - --upstream=http://127.0.0.1:29150/ - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - --tls-private-key-file=/etc/metrics/tls.key - --tls-cert-file=/etc/metrics/tls.crt image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 imagePullPolicy: IfNotPresent name: kube-rbac-proxy ports: - containerPort: 9120 name: metricshttps protocol: TCP resources: requests: cpu: 10m memory: 20Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL runAsUser: 1000770000 terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /etc/metrics name: metrics-certs readOnly: true - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-rw72g readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true nodeName: master-0 nodeSelector: kubernetes.io/os: linux preemptionPolicy: PreemptLowerPriority priority: 0 restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 1000770000 runAsNonRoot: true seLinuxOptions: level: s0:c28,c7 seccompProfile: type: RuntimeDefault serviceAccount: controller serviceAccountName: controller terminationGracePeriodSeconds: 0 tolerations: - effect: NoExecute key: node.kubernetes.io/not-ready operator: Exists tolerationSeconds: 300 - effect: NoExecute key: node.kubernetes.io/unreachable operator: Exists tolerationSeconds: 300 - effect: NoSchedule key: node.kubernetes.io/memory-pressure operator: Exists volumes: - name: cert secret: defaultMode: 420 secretName: metallb-webhook-cert - name: metrics-certs secret: defaultMode: 420 secretName: controller-certs-secret - name: kube-api-access-rw72g projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt status: conditions: - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:39Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:33Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:53Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:53Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:33Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://7648107a93a270c05f52713039ec2ddd974046db8510e4371c25d4388259006f image: registry.redhat.io/openshift4/metallb-rhel9@sha256:afa5a50746f3d69cef22c41c612ce3e7fe91e1da1d1d1566dee42ee304132379 imageID: registry.redhat.io/openshift4/metallb-rhel9@sha256:5bb9588daa84445e79da8dec0a5e5508940a72217c41e15c568084a07829e355 lastState: {} name: controller ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:36Z" volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true recursiveReadOnly: Disabled - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-rw72g readOnly: true recursiveReadOnly: Disabled - containerID: cri-o://da7eee702a37314778dbd53d8601012aef1f62172e7ee6bf4ce4af594003d3e5 image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 lastState: {} name: kube-rbac-proxy ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:38Z" volumeMounts: - mountPath: /etc/metrics name: metrics-certs readOnly: true recursiveReadOnly: Disabled - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-rw72g readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.32.10 hostIPs: - ip: 192.168.32.10 phase: Running podIP: 10.128.0.160 podIPs: - ip: 10.128.0.160 qosClass: Burstable startTime: "2025-12-04T12:13:33Z" - apiVersion: v1 kind: Pod metadata: annotations: openshift.io/scc: privileged creationTimestamp: "2025-12-04T12:13:32Z" generateName: frr-k8s- labels: app: frr-k8s component: frr-k8s controller-revision-hash: 5c8fb959dc pod-template-generation: "1" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:generateName: {} f:labels: .: {} f:app: {} f:component: {} f:controller-revision-hash: {} f:pod-template-generation: {} f:ownerReferences: .: {} k:{"uid":"1790d8be-14cc-4f24-a2d1-7dda6cdf3f99"}: {} f:spec: f:affinity: .: {} f:nodeAffinity: .: {} f:requiredDuringSchedulingIgnoredDuringExecution: {} f:containers: k:{"name":"controller"}: .: {} f:args: {} f:command: {} f:env: .: {} k:{"name":"FRR_CONFIG_FILE"}: .: {} f:name: {} f:value: {} k:{"name":"FRR_RELOADER_PID_FILE"}: .: {} f:name: {} f:value: {} k:{"name":"NAMESPACE"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} k:{"name":"NODE_NAME"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:host: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":7572,"protocol":"TCP"}: .: {} f:containerPort: {} f:hostPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:host: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:add: {} f:drop: {} f:readOnlyRootFilesystem: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/frr_reloader"}: .: {} f:mountPath: {} f:name: {} k:{"name":"frr"}: .: {} f:command: {} f:env: .: {} k:{"name":"TINI_SUBREAPER"}: .: {} f:name: {} f:value: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:host: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:resources: {} f:securityContext: .: {} f:capabilities: .: {} f:add: {} f:startupProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:host: {} f:path: {} f:port: {} f:scheme: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/frr"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/var/run/frr"}: .: {} f:mountPath: {} f:name: {} k:{"name":"frr-metrics"}: .: {} f:args: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:ports: .: {} k:{"containerPort":7573,"protocol":"TCP"}: .: {} f:containerPort: {} f:hostPort: {} f:name: {} f:protocol: {} f:resources: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/frr"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/etc/frr_metrics"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/var/run/frr"}: .: {} f:mountPath: {} f:name: {} k:{"name":"kube-rbac-proxy"}: .: {} f:args: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:ports: .: {} k:{"containerPort":9140,"protocol":"TCP"}: .: {} f:containerPort: {} f:hostPort: {} f:name: {} f:protocol: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/metrics"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"name":"kube-rbac-proxy-frr"}: .: {} f:args: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:ports: .: {} k:{"containerPort":9141,"protocol":"TCP"}: .: {} f:containerPort: {} f:hostPort: {} f:name: {} f:protocol: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/metrics"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"name":"reloader"}: .: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:resources: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/frr"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/etc/frr_reloader"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/var/run/frr"}: .: {} f:mountPath: {} f:name: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:hostNetwork: {} f:initContainers: .: {} k:{"name":"cp-frr-files"}: .: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:resources: {} f:securityContext: .: {} f:runAsGroup: {} f:runAsUser: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/frr"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/tmp/frr"}: .: {} f:mountPath: {} f:name: {} k:{"name":"cp-metrics"}: .: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:resources: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/frr_metrics"}: .: {} f:mountPath: {} f:name: {} k:{"name":"cp-reloader"}: .: {} f:command: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:resources: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/frr_reloader"}: .: {} f:mountPath: {} f:name: {} f:nodeSelector: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: {} f:serviceAccount: {} f:serviceAccountName: {} f:shareProcessNamespace: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} f:volumes: .: {} k:{"name":"frr-conf"}: .: {} f:emptyDir: {} f:name: {} k:{"name":"frr-sockets"}: .: {} f:emptyDir: {} f:name: {} k:{"name":"frr-startup"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} k:{"name":"metrics"}: .: {} f:emptyDir: {} f:name: {} k:{"name":"metrics-certs"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} k:{"name":"reloader"}: .: {} f:emptyDir: {} f:name: {} manager: kube-controller-manager operation: Update time: "2025-12-04T12:13:32Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: k:{"type":"ContainersReady"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Initialized"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"PodReadyToStartContainers"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Ready"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} f:containerStatuses: {} f:hostIP: {} f:hostIPs: {} f:initContainerStatuses: {} f:phase: {} f:podIP: {} f:podIPs: .: {} k:{"ip":"192.168.32.10"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-12-04T12:14:13Z" name: frr-k8s-ckzx9 namespace: metallb-system ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: DaemonSet name: frr-k8s uid: 1790d8be-14cc-4f24-a2d1-7dda6cdf3f99 resourceVersion: "24619" uid: 4e0c1dd6-ebe9-4ba0-b204-7ebde784706d spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchFields: - key: metadata.name operator: In values: - master-0 containers: - args: - --node-name=$(NODE_NAME) - --namespace=$(NAMESPACE) - --metrics-bind-address=127.0.0.1:7572 - --log-level=debug command: - /frr-k8s env: - name: FRR_CONFIG_FILE value: /etc/frr_reloader/frr.conf - name: FRR_RELOADER_PID_FILE value: /etc/frr_reloader/reloader.pid - name: NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: host: 127.0.0.1 path: /metrics port: monitoring scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: controller ports: - containerPort: 7572 hostPort: 7572 name: monitoring protocol: TCP readinessProbe: failureThreshold: 3 httpGet: host: 127.0.0.1 path: /metrics port: monitoring scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} securityContext: allowPrivilegeEscalation: false capabilities: add: - NET_RAW drop: - ALL readOnlyRootFilesystem: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /etc/frr_reloader name: reloader - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true - command: - /bin/sh - -c - | /sbin/tini -- /usr/lib/frr/docker-start & attempts=0 until [[ -f /etc/frr/frr.log || $attempts -eq 60 ]]; do sleep 1 attempts=$(( $attempts + 1 )) done tail -f /etc/frr/frr.log env: - name: TINI_SUBREAPER value: "true" image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: host: 127.0.0.1 path: /livez port: 7573 scheme: HTTP periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: frr resources: {} securityContext: capabilities: add: - NET_ADMIN - NET_RAW - SYS_ADMIN - NET_BIND_SERVICE startupProbe: failureThreshold: 30 httpGet: host: 127.0.0.1 path: /livez port: 7573 scheme: HTTP periodSeconds: 5 successThreshold: 1 timeoutSeconds: 1 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /var/run/frr name: frr-sockets - mountPath: /etc/frr name: frr-conf - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true - command: - /etc/frr_reloader/frr-reloader.sh image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imagePullPolicy: IfNotPresent name: reloader resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /var/run/frr name: frr-sockets - mountPath: /etc/frr name: frr-conf - mountPath: /etc/frr_reloader name: reloader - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true - args: - --metrics-port=7573 - --metrics-bind-address=127.0.0.1 command: - /etc/frr_metrics/frr-metrics image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imagePullPolicy: IfNotPresent name: frr-metrics ports: - containerPort: 7573 hostPort: 7573 name: monitoring protocol: TCP resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /var/run/frr name: frr-sockets - mountPath: /etc/frr name: frr-conf - mountPath: /etc/frr_metrics name: metrics - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true - args: - --logtostderr - --secure-listen-address=:9140 - --upstream=http://127.0.0.1:7572/ - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - --tls-private-key-file=/etc/metrics/tls.key - --tls-cert-file=/etc/metrics/tls.crt image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 imagePullPolicy: IfNotPresent name: kube-rbac-proxy ports: - containerPort: 9140 hostPort: 9140 name: metricshttps protocol: TCP resources: requests: cpu: 10m memory: 20Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /etc/metrics name: metrics-certs readOnly: true - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true - args: - --logtostderr - --secure-listen-address=:9141 - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - --upstream=http://127.0.0.1:7573/ - --tls-private-key-file=/etc/metrics/tls.key - --tls-cert-file=/etc/metrics/tls.crt image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 imagePullPolicy: IfNotPresent name: kube-rbac-proxy-frr ports: - containerPort: 9141 hostPort: 9141 name: metricshttps protocol: TCP resources: requests: cpu: 10m memory: 20Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /etc/metrics name: metrics-certs readOnly: true - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true hostNetwork: true initContainers: - command: - /bin/sh - -c - cp -rLf /tmp/frr/* /etc/frr/ image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imagePullPolicy: IfNotPresent name: cp-frr-files resources: {} securityContext: runAsGroup: 101 runAsNonRoot: true runAsUser: 100 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /tmp/frr name: frr-startup - mountPath: /etc/frr name: frr-conf - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true - command: - /bin/sh - -c - cp -f /frr-reloader.sh /etc/frr_reloader/ image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imagePullPolicy: IfNotPresent name: cp-reloader resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /etc/frr_reloader name: reloader - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true - command: - /bin/sh - -c - cp -f /frr-metrics /etc/frr_metrics/ image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imagePullPolicy: IfNotPresent name: cp-metrics resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /etc/frr_metrics name: metrics - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true nodeName: master-0 nodeSelector: kubernetes.io/os: linux node-role.kubernetes.io/worker: "" preemptionPolicy: PreemptLowerPriority priority: 0 restartPolicy: Always schedulerName: default-scheduler securityContext: {} serviceAccount: frr-k8s-daemon serviceAccountName: frr-k8s-daemon shareProcessNamespace: true terminationGracePeriodSeconds: 0 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master operator: Exists - effect: NoSchedule key: node-role.kubernetes.io/control-plane operator: Exists - effect: NoExecute key: node.kubernetes.io/not-ready operator: Exists - effect: NoExecute key: node.kubernetes.io/unreachable operator: Exists - effect: NoSchedule key: node.kubernetes.io/disk-pressure operator: Exists - effect: NoSchedule key: node.kubernetes.io/memory-pressure operator: Exists - effect: NoSchedule key: node.kubernetes.io/pid-pressure operator: Exists - effect: NoSchedule key: node.kubernetes.io/unschedulable operator: Exists - effect: NoSchedule key: node.kubernetes.io/network-unavailable operator: Exists volumes: - emptyDir: {} name: frr-sockets - configMap: defaultMode: 420 name: frr-startup name: frr-startup - emptyDir: {} name: frr-conf - emptyDir: {} name: reloader - emptyDir: {} name: metrics - name: metrics-certs secret: defaultMode: 420 secretName: frr-k8s-certs-secret - name: kube-api-access-p6tmr projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt status: conditions: - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:52Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:54Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-12-04T12:14:13Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-12-04T12:14:13Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:32Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://6bf131d126b107a2ce3cc2dcf71af6cd852fbb59a27188933ccf9a7036ff4b01 image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imageID: registry.redhat.io/openshift4/frr-rhel9@sha256:11d83fb97d5191861531c5463f84d0852f4383c00e851c32378f35ec3b242f94 lastState: {} name: controller ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:54Z" volumeMounts: - mountPath: /etc/frr_reloader name: reloader - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true recursiveReadOnly: Disabled - containerID: cri-o://60607cd629ea6ba5a93120b6f1c5de75fd9a6081b87e1cb6aded848d7293c409 image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imageID: registry.redhat.io/openshift4/frr-rhel9@sha256:11d83fb97d5191861531c5463f84d0852f4383c00e851c32378f35ec3b242f94 lastState: {} name: frr ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:54Z" volumeMounts: - mountPath: /var/run/frr name: frr-sockets - mountPath: /etc/frr name: frr-conf - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true recursiveReadOnly: Disabled - containerID: cri-o://a5b114da7c12847474ba82ad3c42fd1e220504a287c39db07bab372e6e6e729b image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imageID: registry.redhat.io/openshift4/frr-rhel9@sha256:11d83fb97d5191861531c5463f84d0852f4383c00e851c32378f35ec3b242f94 lastState: {} name: frr-metrics ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:55Z" volumeMounts: - mountPath: /var/run/frr name: frr-sockets - mountPath: /etc/frr name: frr-conf - mountPath: /etc/frr_metrics name: metrics - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true recursiveReadOnly: Disabled - containerID: cri-o://51f52dd2d907bb20345073329e6338552da328bc9e6212004d746c7e31191b7d image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 lastState: {} name: kube-rbac-proxy ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:55Z" volumeMounts: - mountPath: /etc/metrics name: metrics-certs readOnly: true recursiveReadOnly: Disabled - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true recursiveReadOnly: Disabled - containerID: cri-o://a4f64d271bd848ed41fd25b4af28b20d3230f3e4a287ec0b4631575d2904b4df image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 lastState: {} name: kube-rbac-proxy-frr ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:55Z" volumeMounts: - mountPath: /etc/metrics name: metrics-certs readOnly: true recursiveReadOnly: Disabled - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true recursiveReadOnly: Disabled - containerID: cri-o://a2d0b7598adc397e7db59a37ce94bf4425d8d9d6061a9035fb8dbc4f0b32c6c6 image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imageID: registry.redhat.io/openshift4/frr-rhel9@sha256:11d83fb97d5191861531c5463f84d0852f4383c00e851c32378f35ec3b242f94 lastState: {} name: reloader ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:55Z" volumeMounts: - mountPath: /var/run/frr name: frr-sockets - mountPath: /etc/frr name: frr-conf - mountPath: /etc/frr_reloader name: reloader - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.32.10 hostIPs: - ip: 192.168.32.10 initContainerStatuses: - containerID: cri-o://d744b3649e4679e17bc2a44ba594189b9b6924bf0a0486f786d218d0ee468661 image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imageID: registry.redhat.io/openshift4/frr-rhel9@sha256:11d83fb97d5191861531c5463f84d0852f4383c00e851c32378f35ec3b242f94 lastState: {} name: cp-frr-files ready: true restartCount: 0 started: false state: terminated: containerID: cri-o://d744b3649e4679e17bc2a44ba594189b9b6924bf0a0486f786d218d0ee468661 exitCode: 0 finishedAt: "2025-12-04T12:13:51Z" reason: Completed startedAt: "2025-12-04T12:13:51Z" volumeMounts: - mountPath: /tmp/frr name: frr-startup - mountPath: /etc/frr name: frr-conf - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true recursiveReadOnly: Disabled - containerID: cri-o://e2bb28696a35af891fbfca2df850a98fb2cde07bbbdb9729b9a2184ddfdb3a3a image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imageID: registry.redhat.io/openshift4/frr-rhel9@sha256:11d83fb97d5191861531c5463f84d0852f4383c00e851c32378f35ec3b242f94 lastState: {} name: cp-reloader ready: true restartCount: 0 started: false state: terminated: containerID: cri-o://e2bb28696a35af891fbfca2df850a98fb2cde07bbbdb9729b9a2184ddfdb3a3a exitCode: 0 finishedAt: "2025-12-04T12:13:52Z" reason: Completed startedAt: "2025-12-04T12:13:52Z" volumeMounts: - mountPath: /etc/frr_reloader name: reloader - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true recursiveReadOnly: Disabled - containerID: cri-o://bf83cd0d6a6292f372bb7fdf5f869bb1f1167a8904431b902963375ddf78705f image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imageID: registry.redhat.io/openshift4/frr-rhel9@sha256:11d83fb97d5191861531c5463f84d0852f4383c00e851c32378f35ec3b242f94 lastState: {} name: cp-metrics ready: true restartCount: 0 started: false state: terminated: containerID: cri-o://bf83cd0d6a6292f372bb7fdf5f869bb1f1167a8904431b902963375ddf78705f exitCode: 0 finishedAt: "2025-12-04T12:13:53Z" reason: Completed startedAt: "2025-12-04T12:13:53Z" volumeMounts: - mountPath: /etc/frr_metrics name: metrics - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-p6tmr readOnly: true recursiveReadOnly: Disabled phase: Running podIP: 192.168.32.10 podIPs: - ip: 192.168.32.10 qosClass: Burstable startTime: "2025-12-04T12:13:32Z" - apiVersion: v1 kind: Pod metadata: annotations: k8s.ovn.org/pod-networks: '{"default":{"ip_addresses":["10.128.0.159/23"],"mac_address":"0a:58:0a:80:00:9f","gateway_ips":["10.128.0.1"],"routes":[{"dest":"10.128.0.0/16","nextHop":"10.128.0.1"},{"dest":"172.30.0.0/16","nextHop":"10.128.0.1"},{"dest":"169.254.0.5/32","nextHop":"10.128.0.1"},{"dest":"100.64.0.0/16","nextHop":"10.128.0.1"}],"ip_address":"10.128.0.159/23","gateway_ip":"10.128.0.1","role":"primary"}}' k8s.v1.cni.cncf.io/network-status: |- [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.128.0.159" ], "mac": "0a:58:0a:80:00:9f", "default": true, "dns": {} }] kubectl.kubernetes.io/default-container: frr-k8s-webhook-server openshift.io/scc: restricted-v2 seccomp.security.alpha.kubernetes.io/pod: runtime/default creationTimestamp: "2025-12-04T12:13:32Z" generateName: frr-k8s-webhook-server-7fcb986d4- labels: component: frr-k8s-webhook-server pod-template-hash: 7fcb986d4 managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:kubectl.kubernetes.io/default-container: {} f:generateName: {} f:labels: .: {} f:component: {} f:pod-template-hash: {} f:ownerReferences: .: {} k:{"uid":"5bd4e550-24af-42aa-99ce-69eb342da441"}: {} f:spec: f:containers: k:{"name":"frr-k8s-webhook-server"}: .: {} f:args: {} f:command: {} f:env: .: {} k:{"name":"NAMESPACE"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":7572,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:drop: {} f:readOnlyRootFilesystem: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/tmp/k8s-webhook-server/serving-certs"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: .: {} f:runAsNonRoot: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} f:volumes: .: {} k:{"name":"cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} manager: kube-controller-manager operation: Update time: "2025-12-04T12:13:32Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.ovn.org/pod-networks: {} manager: master-0 operation: Update subresource: status time: "2025-12-04T12:13:32Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.v1.cni.cncf.io/network-status: {} manager: multus-daemon operation: Update subresource: status time: "2025-12-04T12:13:36Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: k:{"type":"ContainersReady"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Initialized"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"PodReadyToStartContainers"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Ready"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} f:containerStatuses: {} f:hostIP: {} f:hostIPs: {} f:phase: {} f:podIP: {} f:podIPs: .: {} k:{"ip":"10.128.0.159"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-12-04T12:14:03Z" name: frr-k8s-webhook-server-7fcb986d4-hfnqb namespace: metallb-system ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: frr-k8s-webhook-server-7fcb986d4 uid: 5bd4e550-24af-42aa-99ce-69eb342da441 resourceVersion: "24586" uid: 077af73f-4190-4c72-b167-9cc36f6482df spec: containers: - args: - --log-level=debug - --webhook-mode=onlywebhook - --disable-cert-rotation=true - --namespace=$(NAMESPACE) - --metrics-bind-address=:7572 command: - /frr-k8s env: - name: NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: frr-k8s-webhook-server ports: - containerPort: 7572 name: monitoring protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true runAsUser: 1000770000 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-684xh readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true nodeName: master-0 preemptionPolicy: PreemptLowerPriority priority: 0 restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 1000770000 runAsNonRoot: true seLinuxOptions: level: s0:c28,c7 seccompProfile: type: RuntimeDefault serviceAccount: frr-k8s-daemon serviceAccountName: frr-k8s-daemon terminationGracePeriodSeconds: 10 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master operator: Exists - effect: NoSchedule key: node-role.kubernetes.io/control-plane operator: Exists - effect: NoExecute key: node.kubernetes.io/not-ready operator: Exists tolerationSeconds: 300 - effect: NoExecute key: node.kubernetes.io/unreachable operator: Exists tolerationSeconds: 300 volumes: - name: cert secret: defaultMode: 420 secretName: frr-k8s-webhook-server-cert - name: kube-api-access-684xh projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt status: conditions: - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:52Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:32Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-12-04T12:14:03Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-12-04T12:14:03Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:32Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://b27b1a168725bab6c1507c09abad46d222995266b61ea8d2536820b20807c66c image: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a imageID: registry.redhat.io/openshift4/frr-rhel9@sha256:11d83fb97d5191861531c5463f84d0852f4383c00e851c32378f35ec3b242f94 lastState: {} name: frr-k8s-webhook-server ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:51Z" volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true recursiveReadOnly: Disabled - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-684xh readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.32.10 hostIPs: - ip: 192.168.32.10 phase: Running podIP: 10.128.0.159 podIPs: - ip: 10.128.0.159 qosClass: BestEffort startTime: "2025-12-04T12:13:32Z" - apiVersion: v1 kind: Pod metadata: annotations: alm-examples: |- [ { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "basic", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 64512, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } }, "toReceive": { "allowed": { "mode": "all" } } } ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-neighs", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } }, { "address": "172.18.0.6", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "prefixes": [ "192.168.2.0/24" ] } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-routers-vrf", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64513, "neighbors": [ { "address": "172.32.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] }, { "asn": 64515, "neighbors": [ { "address": "172.31.0.3", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ], "vrf": "red" } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRNodeState", "metadata": { "name": "frr-k8s-worker" }, "status": { "lastConversionResult": "success", "lastReloadResult": "success", "runningConfig": "Building configuration...\n\nCurrent configuration:\n!\nfrr version 9.0.2_git\nfrr defaults traditional\nhostname frr-k8s-worker\nlog file /etc/frr/frr.log informational\nlog timestamp precision 3\nno ipv6 forwarding\nservice integrated-vtysh-config\n!\nip nht resolve-via-default\n!\nipv6 nht resolve-via-default\n!\nend\n" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BFDProfile", "metadata": { "name": "bfd-profile-sample", "namespace": "metallb-system" }, "spec": { "receiveInterval": 380, "transmitInterval": 270 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ], "peers": [ "ebgp-single-hop0" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample2", "namespace": "metallb-system" }, "spec": { "ipAddressPoolSelectors": [ { "matchLabels": { "test": "ipv6" } }, { "matchLabels": { "test": "ipv4" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample3", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "65535:65282" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample4", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "NO_ADVERTISE" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample5", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "ipAddressPools": [ "ip-addresspool-sample1" ], "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } }, { "matchLabels": { "kubernetes.io/hostname": "kind-worker" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-beta1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "Community", "metadata": { "name": "community1", "namespace": "metallb-system" }, "spec": { "communities": [ { "name": "NO_ADVERTISE", "value": "65535:65282" } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "name": "ip-addresspool-sample1", "namespace": "metallb-system" }, "spec": { "addresses": [ "192.168.10.0/24", "192.168.9.1-192.168.9.5", "fc00:f853:0ccd:e799::/124" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv4" }, "name": "ip-addresspool-sample2", "namespace": "metallb-system" }, "spec": { "addresses": [ "172.20.0.100/24" ], "autoAssign": false } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv6" }, "name": "ip-addresspool-sample3", "namespace": "metallb-system" }, "spec": { "addresses": [ "2002:2:2::1-2002:2:2::100" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample2", "namespace": "metallb-system" }, "spec": { "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "MetalLB", "metadata": { "name": "metallb", "namespace": "metallb-system" }, "spec": {} }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample2", "namespace": "metallb-system" }, "spec": { "bfdProfile": "bfd-profile-sample", "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample3", "namespace": "metallb-system" }, "spec": { "holdTime": "9m0s", "keepaliveTime": "0s", "myASN": 64512, "passwordSecret": { "name": "secretname", "namespace": "metallb-system" }, "peerASN": 64512, "peerAddress": "172.30.0.3", "peerPort": 180 } } ] capabilities: Basic Install categories: Networking certified: "false" containerImage: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:113daf5589fc8d963b942a3ab0fc20408aa6ed44e34019539e0e3252bb11297a createdAt: "2023-06-06T15:25:00Z" description: An operator for deploying MetalLB on a kubernetes cluster. features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "true" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" k8s.ovn.org/pod-networks: '{"default":{"ip_addresses":["10.128.0.151/23"],"mac_address":"0a:58:0a:80:00:97","gateway_ips":["10.128.0.1"],"routes":[{"dest":"10.128.0.0/16","nextHop":"10.128.0.1"},{"dest":"172.30.0.0/16","nextHop":"10.128.0.1"},{"dest":"169.254.0.5/32","nextHop":"10.128.0.1"},{"dest":"100.64.0.0/16","nextHop":"10.128.0.1"}],"ip_address":"10.128.0.151/23","gateway_ip":"10.128.0.1","role":"primary"}}' k8s.v1.cni.cncf.io/network-status: |- [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.128.0.151" ], "mac": "0a:58:0a:80:00:97", "default": true, "dns": {} }] olm.operatorGroup: metallb-operator olm.operatorNamespace: metallb-system olm.skipRange: '>=4.8.0 <4.18.0' olm.targetNamespaces: "" olmcahash: 7a87675b03e938c927ce9b952d48aeb46b82250ea127007c699cfa4d4bb6b8ab openshift.io/required-scc: restricted-v2 openshift.io/scc: restricted-v2 operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRConfiguration","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRNodeState","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BFDProfile","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPAdvertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta2"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"Community","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"IPAddressPool","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"L2Advertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"MetalLB","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"ServiceL2Status","version":"v1beta1"}},{"type":"olm.package","value":{"packageName":"metallb-operator","version":"4.18.0-202511181540"}}]}' operatorframework.io/suggested-namespace: metallb-system operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.34.1 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 repository: https://github.com/openshift/metallb-operator seccomp.security.alpha.kubernetes.io/pod: runtime/default support: Red Hat creationTimestamp: "2025-12-04T12:12:34Z" generateName: metallb-operator-controller-manager-6f8cddc44c- labels: control-plane: controller-manager pod-template-hash: 6f8cddc44c managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:alm-examples: {} f:capabilities: {} f:categories: {} f:certified: {} f:containerImage: {} f:createdAt: {} f:description: {} f:features.operators.openshift.io/disconnected: {} f:features.operators.openshift.io/fips-compliant: {} f:features.operators.openshift.io/proxy-aware: {} f:features.operators.openshift.io/tls-profiles: {} f:features.operators.openshift.io/token-auth-aws: {} f:features.operators.openshift.io/token-auth-azure: {} f:features.operators.openshift.io/token-auth-gcp: {} f:olm.operatorGroup: {} f:olm.operatorNamespace: {} f:olm.skipRange: {} f:olm.targetNamespaces: {} f:olmcahash: {} f:openshift.io/required-scc: {} f:operatorframework.io/properties: {} f:operatorframework.io/suggested-namespace: {} f:operators.openshift.io/valid-subscription: {} f:operators.operatorframework.io/builder: {} f:operators.operatorframework.io/project_layout: {} f:repository: {} f:support: {} f:generateName: {} f:labels: .: {} f:control-plane: {} f:pod-template-hash: {} f:ownerReferences: .: {} k:{"uid":"573f1909-9433-416c-8ea9-2270c81989b7"}: {} f:spec: f:containers: k:{"name":"manager"}: .: {} f:args: {} f:command: {} f:env: .: {} k:{"name":"CONTROLLER_IMAGE"}: .: {} f:name: {} f:value: {} k:{"name":"DEPLOY_KUBE_RBAC_PROXIES"}: .: {} f:name: {} f:value: {} k:{"name":"DEPLOY_PODMONITORS"}: .: {} f:name: {} f:value: {} k:{"name":"DEPLOY_SERVICEMONITORS"}: .: {} f:name: {} f:value: {} k:{"name":"ENABLE_OPERATOR_WEBHOOK"}: .: {} f:name: {} f:value: {} k:{"name":"ENABLE_WEBHOOK"}: .: {} f:name: {} f:value: {} k:{"name":"FRR_HTTPS_METRICS_PORT"}: .: {} f:name: {} f:value: {} k:{"name":"FRR_IMAGE"}: .: {} f:name: {} f:value: {} k:{"name":"FRR_METRICS_PORT"}: .: {} f:name: {} f:value: {} k:{"name":"FRRK8S_IMAGE"}: .: {} f:name: {} f:value: {} k:{"name":"HTTPS_METRICS_PORT"}: .: {} f:name: {} f:value: {} k:{"name":"KUBE_RBAC_PROXY_IMAGE"}: .: {} f:name: {} f:value: {} k:{"name":"MEMBER_LIST_BIND_PORT"}: .: {} f:name: {} f:value: {} k:{"name":"METRICS_PORT"}: .: {} f:name: {} f:value: {} k:{"name":"OPERATOR_CONDITION_NAME"}: .: {} f:name: {} f:value: {} k:{"name":"OPERATOR_NAMESPACE"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} k:{"name":"SPEAKER_IMAGE"}: .: {} f:name: {} f:value: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:ports: .: {} k:{"containerPort":9443,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/apiserver.local.config/certificates"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/tmp/k8s-webhook-server/serving-certs"}: .: {} f:mountPath: {} f:name: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:volumes: .: {} k:{"name":"apiservice-cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:items: {} f:secretName: {} k:{"name":"cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} k:{"name":"webhook-cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:items: {} f:secretName: {} manager: kube-controller-manager operation: Update time: "2025-12-04T12:12:34Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.ovn.org/pod-networks: {} manager: master-0 operation: Update subresource: status time: "2025-12-04T12:12:34Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.v1.cni.cncf.io/network-status: {} manager: multus-daemon operation: Update subresource: status time: "2025-12-04T12:12:37Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: k:{"type":"ContainersReady"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Initialized"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"PodReadyToStartContainers"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Ready"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} f:containerStatuses: {} f:hostIP: {} f:hostIPs: {} f:phase: {} f:podIP: {} f:podIPs: .: {} k:{"ip":"10.128.0.151"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-12-04T12:21:06Z" name: metallb-operator-controller-manager-6f8cddc44c-f979v namespace: metallb-system ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: metallb-operator-controller-manager-6f8cddc44c uid: 573f1909-9433-416c-8ea9-2270c81989b7 resourceVersion: "32539" uid: 70729025-94a7-4a9b-98b8-e68b73d59a3e spec: containers: - args: - --enable-leader-election - --disable-cert-rotation=true command: - /manager env: - name: SPEAKER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:afa5a50746f3d69cef22c41c612ce3e7fe91e1da1d1d1566dee42ee304132379 - name: CONTROLLER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:afa5a50746f3d69cef22c41c612ce3e7fe91e1da1d1d1566dee42ee304132379 - name: FRR_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a - name: KUBE_RBAC_PROXY_IMAGE value: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 - name: DEPLOY_KUBE_RBAC_PROXIES value: "true" - name: FRRK8S_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:e5c5e7ca4ed54c9edba5dfa1d504bbe58016c2abdc872ebb8b26a628958e5a2a - name: OPERATOR_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: DEPLOY_PODMONITORS value: "false" - name: DEPLOY_SERVICEMONITORS value: "true" - name: ENABLE_WEBHOOK value: "true" - name: ENABLE_OPERATOR_WEBHOOK value: "true" - name: METRICS_PORT value: "29150" - name: HTTPS_METRICS_PORT value: "9120" - name: FRR_METRICS_PORT value: "29151" - name: FRR_HTTPS_METRICS_PORT value: "9121" - name: MEMBER_LIST_BIND_PORT value: "9122" - name: OPERATOR_CONDITION_NAME value: metallb-operator.v4.18.0-202511181540 image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:113daf5589fc8d963b942a3ab0fc20408aa6ed44e34019539e0e3252bb11297a imagePullPolicy: IfNotPresent name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /readyz port: 8080 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 50m memory: 20Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL runAsNonRoot: true runAsUser: 1000770000 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: webhook-cert - mountPath: /apiserver.local.config/certificates name: apiservice-cert - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-k26hd readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true nodeName: master-0 preemptionPolicy: PreemptLowerPriority priority: 0 restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 1000770000 seLinuxOptions: level: s0:c28,c7 seccompProfile: type: RuntimeDefault serviceAccount: manager-account serviceAccountName: manager-account terminationGracePeriodSeconds: 10 tolerations: - effect: NoExecute key: node.kubernetes.io/not-ready operator: Exists tolerationSeconds: 300 - effect: NoExecute key: node.kubernetes.io/unreachable operator: Exists tolerationSeconds: 300 - effect: NoSchedule key: node.kubernetes.io/memory-pressure operator: Exists volumes: - name: cert secret: defaultMode: 420 secretName: metallb-operator-webhook-server-cert - name: apiservice-cert secret: defaultMode: 420 items: - key: tls.crt path: apiserver.crt - key: tls.key path: apiserver.key secretName: metallb-operator-controller-manager-service-cert - name: webhook-cert secret: defaultMode: 420 items: - key: tls.crt path: tls.crt - key: tls.key path: tls.key secretName: metallb-operator-controller-manager-service-cert - name: kube-api-access-k26hd projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt status: conditions: - lastProbeTime: null lastTransitionTime: "2025-12-04T12:12:51Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-12-04T12:12:34Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-12-04T12:21:06Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-12-04T12:21:06Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-12-04T12:12:34Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://cbef00c5dea6fb701dedd2199a70f6f57956f5d54407a75b40fccc7ca6399e1a image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:113daf5589fc8d963b942a3ab0fc20408aa6ed44e34019539e0e3252bb11297a imageID: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:06391c7a1ea593ce9afa13400b0cebbbffd7693fd665a3d4d80ed8b161296f8d lastState: terminated: containerID: cri-o://c4ef5c9e77d9b4d351a7451edd42d6437538f743695bc8a683308a0e8573a0cb exitCode: 1 finishedAt: "2025-12-04T12:20:13Z" reason: Error startedAt: "2025-12-04T12:18:11Z" name: manager ready: true restartCount: 2 started: true state: running: startedAt: "2025-12-04T12:20:30Z" volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: webhook-cert - mountPath: /apiserver.local.config/certificates name: apiservice-cert - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-k26hd readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.32.10 hostIPs: - ip: 192.168.32.10 phase: Running podIP: 10.128.0.151 podIPs: - ip: 10.128.0.151 qosClass: Burstable startTime: "2025-12-04T12:12:34Z" - apiVersion: v1 kind: Pod metadata: annotations: alm-examples: |- [ { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "basic", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 64512, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } }, "toReceive": { "allowed": { "mode": "all" } } } ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-neighs", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } }, { "address": "172.18.0.6", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "prefixes": [ "192.168.2.0/24" ] } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-routers-vrf", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64513, "neighbors": [ { "address": "172.32.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] }, { "asn": 64515, "neighbors": [ { "address": "172.31.0.3", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ], "vrf": "red" } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRNodeState", "metadata": { "name": "frr-k8s-worker" }, "status": { "lastConversionResult": "success", "lastReloadResult": "success", "runningConfig": "Building configuration...\n\nCurrent configuration:\n!\nfrr version 9.0.2_git\nfrr defaults traditional\nhostname frr-k8s-worker\nlog file /etc/frr/frr.log informational\nlog timestamp precision 3\nno ipv6 forwarding\nservice integrated-vtysh-config\n!\nip nht resolve-via-default\n!\nipv6 nht resolve-via-default\n!\nend\n" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BFDProfile", "metadata": { "name": "bfd-profile-sample", "namespace": "metallb-system" }, "spec": { "receiveInterval": 380, "transmitInterval": 270 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ], "peers": [ "ebgp-single-hop0" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample2", "namespace": "metallb-system" }, "spec": { "ipAddressPoolSelectors": [ { "matchLabels": { "test": "ipv6" } }, { "matchLabels": { "test": "ipv4" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample3", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "65535:65282" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample4", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "NO_ADVERTISE" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample5", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "ipAddressPools": [ "ip-addresspool-sample1" ], "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } }, { "matchLabels": { "kubernetes.io/hostname": "kind-worker" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-beta1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "Community", "metadata": { "name": "community1", "namespace": "metallb-system" }, "spec": { "communities": [ { "name": "NO_ADVERTISE", "value": "65535:65282" } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "name": "ip-addresspool-sample1", "namespace": "metallb-system" }, "spec": { "addresses": [ "192.168.10.0/24", "192.168.9.1-192.168.9.5", "fc00:f853:0ccd:e799::/124" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv4" }, "name": "ip-addresspool-sample2", "namespace": "metallb-system" }, "spec": { "addresses": [ "172.20.0.100/24" ], "autoAssign": false } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv6" }, "name": "ip-addresspool-sample3", "namespace": "metallb-system" }, "spec": { "addresses": [ "2002:2:2::1-2002:2:2::100" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample2", "namespace": "metallb-system" }, "spec": { "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "MetalLB", "metadata": { "name": "metallb", "namespace": "metallb-system" }, "spec": {} }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample2", "namespace": "metallb-system" }, "spec": { "bfdProfile": "bfd-profile-sample", "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample3", "namespace": "metallb-system" }, "spec": { "holdTime": "9m0s", "keepaliveTime": "0s", "myASN": 64512, "passwordSecret": { "name": "secretname", "namespace": "metallb-system" }, "peerASN": 64512, "peerAddress": "172.30.0.3", "peerPort": 180 } } ] capabilities: Basic Install categories: Networking certified: "false" containerImage: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:113daf5589fc8d963b942a3ab0fc20408aa6ed44e34019539e0e3252bb11297a createdAt: "2023-06-06T15:25:00Z" description: An operator for deploying MetalLB on a kubernetes cluster. features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "true" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" k8s.ovn.org/pod-networks: '{"default":{"ip_addresses":["10.128.0.152/23"],"mac_address":"0a:58:0a:80:00:98","gateway_ips":["10.128.0.1"],"routes":[{"dest":"10.128.0.0/16","nextHop":"10.128.0.1"},{"dest":"172.30.0.0/16","nextHop":"10.128.0.1"},{"dest":"169.254.0.5/32","nextHop":"10.128.0.1"},{"dest":"100.64.0.0/16","nextHop":"10.128.0.1"}],"ip_address":"10.128.0.152/23","gateway_ip":"10.128.0.1","role":"primary"}}' k8s.v1.cni.cncf.io/network-status: |- [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.128.0.152" ], "mac": "0a:58:0a:80:00:98", "default": true, "dns": {} }] olm.operatorGroup: metallb-operator olm.operatorNamespace: metallb-system olm.skipRange: '>=4.8.0 <4.18.0' olm.targetNamespaces: "" olmcahash: 7a87675b03e938c927ce9b952d48aeb46b82250ea127007c699cfa4d4bb6b8ab openshift.io/required-scc: restricted-v2 openshift.io/scc: restricted-v2 operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRConfiguration","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRNodeState","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BFDProfile","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPAdvertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta2"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"Community","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"IPAddressPool","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"L2Advertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"MetalLB","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"ServiceL2Status","version":"v1beta1"}},{"type":"olm.package","value":{"packageName":"metallb-operator","version":"4.18.0-202511181540"}}]}' operatorframework.io/suggested-namespace: metallb-system operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.34.1 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 prometheus.io/port: "7472" prometheus.io/scrape: "true" repository: https://github.com/openshift/metallb-operator seccomp.security.alpha.kubernetes.io/pod: runtime/default support: Red Hat creationTimestamp: "2025-12-04T12:12:37Z" generateName: metallb-operator-webhook-server-567cbcbb98- labels: app: metallb component: webhook-server pod-template-hash: 567cbcbb98 managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:alm-examples: {} f:capabilities: {} f:categories: {} f:certified: {} f:containerImage: {} f:createdAt: {} f:description: {} f:features.operators.openshift.io/disconnected: {} f:features.operators.openshift.io/fips-compliant: {} f:features.operators.openshift.io/proxy-aware: {} f:features.operators.openshift.io/tls-profiles: {} f:features.operators.openshift.io/token-auth-aws: {} f:features.operators.openshift.io/token-auth-azure: {} f:features.operators.openshift.io/token-auth-gcp: {} f:olm.operatorGroup: {} f:olm.operatorNamespace: {} f:olm.skipRange: {} f:olm.targetNamespaces: {} f:olmcahash: {} f:openshift.io/required-scc: {} f:operatorframework.io/properties: {} f:operatorframework.io/suggested-namespace: {} f:operators.openshift.io/valid-subscription: {} f:operators.operatorframework.io/builder: {} f:operators.operatorframework.io/project_layout: {} f:prometheus.io/port: {} f:prometheus.io/scrape: {} f:repository: {} f:support: {} f:generateName: {} f:labels: .: {} f:app: {} f:component: {} f:pod-template-hash: {} f:ownerReferences: .: {} k:{"uid":"1a48d539-9bf8-44c9-8cc9-1f55029d4259"}: {} f:spec: f:containers: k:{"name":"webhook-server"}: .: {} f:args: {} f:command: {} f:env: .: {} k:{"name":"METALLB_BGP_TYPE"}: .: {} f:name: {} f:value: {} k:{"name":"OPERATOR_CONDITION_NAME"}: .: {} f:name: {} f:value: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":7472,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} k:{"containerPort":9443,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/apiserver.local.config/certificates"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/tmp/k8s-webhook-server/serving-certs"}: .: {} f:mountPath: {} f:name: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:nodeSelector: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:volumes: .: {} k:{"name":"apiservice-cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:items: {} f:secretName: {} k:{"name":"cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} k:{"name":"webhook-cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:items: {} f:secretName: {} manager: kube-controller-manager operation: Update time: "2025-12-04T12:12:37Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.ovn.org/pod-networks: {} manager: master-0 operation: Update subresource: status time: "2025-12-04T12:12:37Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:k8s.v1.cni.cncf.io/network-status: {} manager: multus-daemon operation: Update subresource: status time: "2025-12-04T12:12:38Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: k:{"type":"ContainersReady"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Initialized"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"PodReadyToStartContainers"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Ready"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} f:containerStatuses: {} f:hostIP: {} f:hostIPs: {} f:phase: {} f:podIP: {} f:podIPs: .: {} k:{"ip":"10.128.0.152"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-12-04T12:13:07Z" name: metallb-operator-webhook-server-567cbcbb98-h2n4q namespace: metallb-system ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: metallb-operator-webhook-server-567cbcbb98 uid: 1a48d539-9bf8-44c9-8cc9-1f55029d4259 resourceVersion: "23206" uid: 89355b8e-cca3-4c80-a9da-8834812d73e6 spec: containers: - args: - --disable-cert-rotation=true - --port=7472 - --log-level=info - --webhook-mode=onlywebhook command: - /controller env: - name: METALLB_BGP_TYPE value: frr - name: OPERATOR_CONDITION_NAME value: metallb-operator.v4.18.0-202511181540 image: registry.redhat.io/openshift4/metallb-rhel9@sha256:afa5a50746f3d69cef22c41c612ce3e7fe91e1da1d1d1566dee42ee304132379 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: webhook-server ports: - containerPort: 7472 name: monitoring protocol: TCP - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL runAsNonRoot: true runAsUser: 1000770000 terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: webhook-cert - mountPath: /apiserver.local.config/certificates name: apiservice-cert - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-bpd6w readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true nodeName: master-0 nodeSelector: kubernetes.io/os: linux preemptionPolicy: PreemptLowerPriority priority: 0 restartPolicy: Always schedulerName: default-scheduler securityContext: fsGroup: 1000770000 seLinuxOptions: level: s0:c28,c7 seccompProfile: type: RuntimeDefault serviceAccount: controller serviceAccountName: controller terminationGracePeriodSeconds: 0 tolerations: - effect: NoExecute key: node.kubernetes.io/not-ready operator: Exists tolerationSeconds: 300 - effect: NoExecute key: node.kubernetes.io/unreachable operator: Exists tolerationSeconds: 300 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-webhook-cert - name: apiservice-cert secret: defaultMode: 420 items: - key: tls.crt path: apiserver.crt - key: tls.key path: apiserver.key secretName: metallb-operator-webhook-server-service-cert - name: webhook-cert secret: defaultMode: 420 items: - key: tls.crt path: tls.crt - key: tls.key path: tls.key secretName: metallb-operator-webhook-server-service-cert - name: kube-api-access-bpd6w projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt status: conditions: - lastProbeTime: null lastTransitionTime: "2025-12-04T12:12:51Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-12-04T12:12:37Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:07Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:07Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-12-04T12:12:37Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://e664864e7ecc62a00aaa494225196359634c77b9fb1656164931451ba4ea384b image: registry.redhat.io/openshift4/metallb-rhel9@sha256:afa5a50746f3d69cef22c41c612ce3e7fe91e1da1d1d1566dee42ee304132379 imageID: registry.redhat.io/openshift4/metallb-rhel9@sha256:5bb9588daa84445e79da8dec0a5e5508940a72217c41e15c568084a07829e355 lastState: {} name: webhook-server ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:12:51Z" volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: webhook-cert - mountPath: /apiserver.local.config/certificates name: apiservice-cert - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-bpd6w readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.32.10 hostIPs: - ip: 192.168.32.10 phase: Running podIP: 10.128.0.152 podIPs: - ip: 10.128.0.152 qosClass: BestEffort startTime: "2025-12-04T12:12:37Z" - apiVersion: v1 kind: Pod metadata: annotations: openshift.io/scc: privileged creationTimestamp: "2025-12-04T12:13:33Z" generateName: speaker- labels: app: metallb component: speaker controller-revision-hash: 6fbf5df687 pod-template-generation: "1" managedFields: - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:generateName: {} f:labels: .: {} f:app: {} f:component: {} f:controller-revision-hash: {} f:pod-template-generation: {} f:ownerReferences: .: {} k:{"uid":"193231f7-96e3-425f-a402-5a7782a29c54"}: {} f:spec: f:affinity: .: {} f:nodeAffinity: .: {} f:requiredDuringSchedulingIgnoredDuringExecution: {} f:containers: k:{"name":"kube-rbac-proxy"}: .: {} f:args: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:ports: .: {} k:{"containerPort":9120,"protocol":"TCP"}: .: {} f:containerPort: {} f:hostPort: {} f:name: {} f:protocol: {} f:resources: .: {} f:requests: .: {} f:cpu: {} f:memory: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/metrics"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"name":"speaker"}: .: {} f:args: {} f:command: {} f:env: .: {} k:{"name":"METALLB_BGP_TYPE"}: .: {} f:name: {} f:value: {} k:{"name":"METALLB_HOST"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} k:{"name":"METALLB_ML_BIND_ADDR"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} k:{"name":"METALLB_ML_BIND_PORT"}: .: {} f:name: {} f:value: {} k:{"name":"METALLB_ML_LABELS"}: .: {} f:name: {} f:value: {} k:{"name":"METALLB_ML_SECRET_KEY_PATH"}: .: {} f:name: {} f:value: {} k:{"name":"METALLB_NODE_NAME"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} k:{"name":"METALLB_POD_NAME"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:host: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":9122,"protocol":"TCP"}: .: {} f:containerPort: {} f:hostPort: {} f:name: {} f:protocol: {} k:{"containerPort":9122,"protocol":"UDP"}: .: {} f:containerPort: {} f:hostPort: {} f:name: {} f:protocol: {} k:{"containerPort":29150,"protocol":"TCP"}: .: {} f:containerPort: {} f:hostPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:host: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:add: {} f:drop: {} f:readOnlyRootFilesystem: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/etc/metallb"}: .: {} f:mountPath: {} f:name: {} k:{"mountPath":"/etc/ml_secret_key"}: .: {} f:mountPath: {} f:name: {} f:dnsPolicy: {} f:enableServiceLinks: {} f:hostNetwork: {} f:nodeSelector: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:tolerations: {} f:volumes: .: {} k:{"name":"memberlist"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} k:{"name":"metallb-excludel2"}: .: {} f:configMap: .: {} f:defaultMode: {} f:name: {} f:name: {} k:{"name":"metrics-certs"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} manager: kube-controller-manager operation: Update time: "2025-12-04T12:13:33Z" - apiVersion: v1 fieldsType: FieldsV1 fieldsV1: f:status: f:conditions: k:{"type":"ContainersReady"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Initialized"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"PodReadyToStartContainers"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} k:{"type":"Ready"}: .: {} f:lastProbeTime: {} f:lastTransitionTime: {} f:status: {} f:type: {} f:containerStatuses: {} f:hostIP: {} f:hostIPs: {} f:phase: {} f:podIP: {} f:podIPs: .: {} k:{"ip":"192.168.32.10"}: .: {} f:ip: {} f:startTime: {} manager: kubelet operation: Update subresource: status time: "2025-12-04T12:13:47Z" name: speaker-868rl namespace: metallb-system ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: DaemonSet name: speaker uid: 193231f7-96e3-425f-a402-5a7782a29c54 resourceVersion: "24417" uid: e044043e-2b10-4c93-89bb-2610a5793e69 spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchFields: - key: metadata.name operator: In values: - master-0 containers: - args: - --port=29150 - --log-level=debug - --host=localhost command: - /speaker env: - name: METALLB_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: METALLB_HOST valueFrom: fieldRef: apiVersion: v1 fieldPath: status.hostIP - name: METALLB_ML_BIND_ADDR valueFrom: fieldRef: apiVersion: v1 fieldPath: status.podIP - name: METALLB_ML_LABELS value: app=metallb,component=speaker - name: METALLB_ML_BIND_PORT value: "9122" - name: METALLB_ML_SECRET_KEY_PATH value: /etc/ml_secret_key - name: METALLB_BGP_TYPE value: frr-k8s - name: METALLB_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name image: registry.redhat.io/openshift4/metallb-rhel9@sha256:afa5a50746f3d69cef22c41c612ce3e7fe91e1da1d1d1566dee42ee304132379 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: host: localhost path: /metrics port: monitoring scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: speaker ports: - containerPort: 29150 hostPort: 29150 name: monitoring protocol: TCP - containerPort: 9122 hostPort: 9122 name: memberlist-tcp protocol: TCP - containerPort: 9122 hostPort: 9122 name: memberlist-udp protocol: UDP readinessProbe: failureThreshold: 3 httpGet: host: localhost path: /metrics port: monitoring scheme: HTTP initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} securityContext: allowPrivilegeEscalation: false capabilities: add: - NET_RAW drop: - ALL readOnlyRootFilesystem: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /etc/ml_secret_key name: memberlist - mountPath: /etc/metallb name: metallb-excludel2 - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-6bh67 readOnly: true - args: - --logtostderr - --secure-listen-address=:9120 - --upstream=http://localhost:29150/ - --tls-cipher-suites=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - --tls-private-key-file=/etc/metrics/tls.key - --tls-cert-file=/etc/metrics/tls.crt image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 imagePullPolicy: IfNotPresent name: kube-rbac-proxy ports: - containerPort: 9120 hostPort: 9120 name: metricshttps protocol: TCP resources: requests: cpu: 10m memory: 20Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: FallbackToLogsOnError volumeMounts: - mountPath: /etc/metrics name: metrics-certs readOnly: true - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-6bh67 readOnly: true dnsPolicy: ClusterFirst enableServiceLinks: true hostNetwork: true nodeName: master-0 nodeSelector: kubernetes.io/os: linux node-role.kubernetes.io/worker: "" preemptionPolicy: PreemptLowerPriority priority: 0 restartPolicy: Always schedulerName: default-scheduler securityContext: {} serviceAccount: speaker serviceAccountName: speaker terminationGracePeriodSeconds: 0 tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master operator: Exists - effect: NoSchedule key: node-role.kubernetes.io/control-plane operator: Exists - effect: NoExecute key: node.kubernetes.io/not-ready operator: Exists - effect: NoExecute key: node.kubernetes.io/unreachable operator: Exists - effect: NoSchedule key: node.kubernetes.io/disk-pressure operator: Exists - effect: NoSchedule key: node.kubernetes.io/memory-pressure operator: Exists - effect: NoSchedule key: node.kubernetes.io/pid-pressure operator: Exists - effect: NoSchedule key: node.kubernetes.io/unschedulable operator: Exists - effect: NoSchedule key: node.kubernetes.io/network-unavailable operator: Exists volumes: - name: metrics-certs secret: defaultMode: 420 secretName: speaker-certs-secret - name: memberlist secret: defaultMode: 420 secretName: metallb-memberlist - configMap: defaultMode: 256 name: metallb-excludel2 name: metallb-excludel2 - name: kube-api-access-6bh67 projected: defaultMode: 420 sources: - serviceAccountToken: expirationSeconds: 3607 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace - configMap: items: - key: service-ca.crt path: service-ca.crt name: openshift-service-ca.crt status: conditions: - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:40Z" status: "True" type: PodReadyToStartContainers - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:33Z" status: "True" type: Initialized - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:47Z" status: "True" type: Ready - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:47Z" status: "True" type: ContainersReady - lastProbeTime: null lastTransitionTime: "2025-12-04T12:13:33Z" status: "True" type: PodScheduled containerStatuses: - containerID: cri-o://1aec46d8d3c06f17d3c1416adc493e2bf5937d72418358e13f1027d5c15c902c image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 imageID: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:23ad174e653d608ec2285f670d8669dbe8bb433f7c215bdb59f5c6ac6ad1bcc9 lastState: {} name: kube-rbac-proxy ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:39Z" volumeMounts: - mountPath: /etc/metrics name: metrics-certs readOnly: true recursiveReadOnly: Disabled - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-6bh67 readOnly: true recursiveReadOnly: Disabled - containerID: cri-o://f1f57f048a3a315f90c15553c4de88d5af210f6e5152c31f8c9bfedc13537e15 image: registry.redhat.io/openshift4/metallb-rhel9@sha256:afa5a50746f3d69cef22c41c612ce3e7fe91e1da1d1d1566dee42ee304132379 imageID: registry.redhat.io/openshift4/metallb-rhel9@sha256:5bb9588daa84445e79da8dec0a5e5508940a72217c41e15c568084a07829e355 lastState: {} name: speaker ready: true restartCount: 0 started: true state: running: startedAt: "2025-12-04T12:13:37Z" volumeMounts: - mountPath: /etc/ml_secret_key name: memberlist - mountPath: /etc/metallb name: metallb-excludel2 - mountPath: /var/run/secrets/kubernetes.io/serviceaccount name: kube-api-access-6bh67 readOnly: true recursiveReadOnly: Disabled hostIP: 192.168.32.10 hostIPs: - ip: 192.168.32.10 phase: Running podIP: 192.168.32.10 podIPs: - ip: 192.168.32.10 qosClass: Burstable startTime: "2025-12-04T12:13:33Z" kind: PodList metadata: resourceVersion: "47640"