apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2026-07-26T10:32:54Z"
  generateName: frr-k8s-
  labels:
    app: frr-k8s
    app.kubernetes.io/component: frr-k8s
    app.kubernetes.io/instance: frr-k8s
    app.kubernetes.io/name: frr-k8s
    controller-revision-hash: 74c6c66459
    pod-template-generation: "1"
  name: frr-k8s-l5jjb
  namespace: frr-k8s-system
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: DaemonSet
    name: frr-k8s
    uid: 19feffb4-e5d0-499b-bffe-c058e64f0e8b
  resourceVersion: "4953"
  uid: 9d7c6abc-0ef5-4079-8806-932e166f86fd
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchFields:
          - key: metadata.name
            operator: In
            values:
            - instance
  containers:
  - args:
    - --node-name=$(NODE_NAME)
    - --namespace=$(NAMESPACE)
    - --metrics-bind-address=127.0.0.1:7572
    - --log-level=info
    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: harbor.atmosphere.dev/quay.io/metallb/frr-k8s:v0.0.17
    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-pcdv2
      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: harbor.atmosphere.dev/quay.io/frrouting/frr:9.1.0
    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-pcdv2
      readOnly: true
  - command:
    - /etc/frr_reloader/frr-reloader.sh
    image: harbor.atmosphere.dev/quay.io/frrouting/frr:9.1.0
    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-pcdv2
      readOnly: true
  - args:
    - --metrics-port=7573
    - --metrics-bind-address=127.0.0.1
    command:
    - /etc/frr_metrics/frr-metrics
    image: harbor.atmosphere.dev/quay.io/frrouting/frr:9.1.0
    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-pcdv2
      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
    image: harbor.atmosphere.dev/quay.io/brancz/kube-rbac-proxy:v0.12.0
    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: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-pcdv2
      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/
    image: harbor.atmosphere.dev/quay.io/brancz/kube-rbac-proxy:v0.12.0
    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: /var/run/secrets/kubernetes.io/serviceaccount
      name: kube-api-access-pcdv2
      readOnly: true
  dnsPolicy: ClusterFirst
  enableServiceLinks: true
  hostNetwork: true
  initContainers:
  - command:
    - /bin/sh
    - -c
    - cp -rLf /tmp/frr/* /etc/frr/
    image: harbor.atmosphere.dev/quay.io/frrouting/frr:9.1.0
    imagePullPolicy: IfNotPresent
    name: cp-frr-files
    resources: {}
    securityContext:
      runAsGroup: 101
      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-pcdv2
      readOnly: true
  - command:
    - /bin/sh
    - -c
    - cp -f /frr-reloader.sh /etc/frr_reloader/
    image: harbor.atmosphere.dev/quay.io/metallb/frr-k8s:v0.0.17
    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-pcdv2
      readOnly: true
  - command:
    - /bin/sh
    - -c
    - cp -f /frr-metrics /etc/frr_metrics/
    image: harbor.atmosphere.dev/quay.io/metallb/frr-k8s:v0.0.17
    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-pcdv2
      readOnly: true
  nodeName: instance
  nodeSelector:
    kubernetes.io/os: linux
    openvswitch: enabled
  preemptionPolicy: PreemptLowerPriority
  priority: 0
  restartPolicy: Always
  schedulerName: default-scheduler
  securityContext: {}
  serviceAccount: frr-k8s-controller
  serviceAccountName: frr-k8s-controller
  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-k8s-frr-startup
    name: frr-startup
  - emptyDir: {}
    name: frr-conf
  - emptyDir: {}
    name: reloader
  - emptyDir: {}
    name: metrics
  - name: kube-api-access-pcdv2
    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
status:
  conditions:
  - lastProbeTime: null
    lastTransitionTime: "2026-07-26T10:33:50Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2026-07-26T10:34:10Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2026-07-26T10:34:10Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2026-07-26T10:32:54Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: containerd://48d9832e283fcf67b6d4ed1fe4f43a54086d3034a6add5cece9dca9ebcde2675
    image: harbor.atmosphere.dev/quay.io/metallb/frr-k8s:v0.0.17
    imageID: harbor.atmosphere.dev/quay.io/metallb/frr-k8s@sha256:48bdf71e60e8c2940887a9f22b020ce0cbc1ac2065db7063b5d7e24473ea62fb
    lastState: {}
    name: controller
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2026-07-26T10:33:50Z"
  - containerID: containerd://ce785fc0fa49f3a5eb346ba984f40ba81fc03171ab0f89a4e55d7d877f35b456
    image: harbor.atmosphere.dev/quay.io/frrouting/frr:9.1.0
    imageID: harbor.atmosphere.dev/quay.io/frrouting/frr@sha256:f310c2ebb3827fa03b9674ee05e70a7d5eef2123bcc3b475eb2ef14dafcb52b4
    lastState: {}
    name: frr
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2026-07-26T10:33:50Z"
  - containerID: containerd://1860d71fafed55f5b9a5a0d25e22313160979faab59c2082c0412f71d7d51274
    image: harbor.atmosphere.dev/quay.io/frrouting/frr:9.1.0
    imageID: harbor.atmosphere.dev/quay.io/frrouting/frr@sha256:f310c2ebb3827fa03b9674ee05e70a7d5eef2123bcc3b475eb2ef14dafcb52b4
    lastState: {}
    name: frr-metrics
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2026-07-26T10:33:51Z"
  - containerID: containerd://0caf70bd8588364ca528be48489b1103dbed2a9f836d5f7a360d75059deab53b
    image: harbor.atmosphere.dev/quay.io/brancz/kube-rbac-proxy:v0.12.0
    imageID: harbor.atmosphere.dev/quay.io/brancz/kube-rbac-proxy@sha256:12b82e47da1a2f5094966d4239811a5ae5c37b47e4224b1b35e57a7f02edd57a
    lastState: {}
    name: kube-rbac-proxy
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2026-07-26T10:34:04Z"
  - containerID: containerd://7beb1564f7349b8232cb55f5bcf9103f51198a8aebfe182d2ac22f0b8a93dfa5
    image: harbor.atmosphere.dev/quay.io/brancz/kube-rbac-proxy:v0.12.0
    imageID: harbor.atmosphere.dev/quay.io/brancz/kube-rbac-proxy@sha256:12b82e47da1a2f5094966d4239811a5ae5c37b47e4224b1b35e57a7f02edd57a
    lastState: {}
    name: kube-rbac-proxy-frr
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2026-07-26T10:34:04Z"
  - containerID: containerd://f242dfbc28c62959e43a171afa0ac60c62876ea03ee68ea799fd6e69f0ba5f93
    image: harbor.atmosphere.dev/quay.io/frrouting/frr:9.1.0
    imageID: harbor.atmosphere.dev/quay.io/frrouting/frr@sha256:f310c2ebb3827fa03b9674ee05e70a7d5eef2123bcc3b475eb2ef14dafcb52b4
    lastState: {}
    name: reloader
    ready: true
    restartCount: 0
    started: true
    state:
      running:
        startedAt: "2026-07-26T10:33:50Z"
  hostIP: 199.204.45.229
  initContainerStatuses:
  - containerID: containerd://6201425dd7b78ce15b756e004961249c6a49613fa58763f97af70c3dce5d3632
    image: harbor.atmosphere.dev/quay.io/frrouting/frr:9.1.0
    imageID: harbor.atmosphere.dev/quay.io/frrouting/frr@sha256:f310c2ebb3827fa03b9674ee05e70a7d5eef2123bcc3b475eb2ef14dafcb52b4
    lastState: {}
    name: cp-frr-files
    ready: true
    restartCount: 0
    started: false
    state:
      terminated:
        containerID: containerd://6201425dd7b78ce15b756e004961249c6a49613fa58763f97af70c3dce5d3632
        exitCode: 0
        finishedAt: "2026-07-26T10:33:15Z"
        reason: Completed
        startedAt: "2026-07-26T10:33:15Z"
  - containerID: containerd://3bc21ea55f8423f2752c87cc41bc605e9c8c25edfd8f20734cc0ad95901705ea
    image: harbor.atmosphere.dev/quay.io/metallb/frr-k8s:v0.0.17
    imageID: harbor.atmosphere.dev/quay.io/metallb/frr-k8s@sha256:48bdf71e60e8c2940887a9f22b020ce0cbc1ac2065db7063b5d7e24473ea62fb
    lastState: {}
    name: cp-reloader
    ready: true
    restartCount: 0
    started: false
    state:
      terminated:
        containerID: containerd://3bc21ea55f8423f2752c87cc41bc605e9c8c25edfd8f20734cc0ad95901705ea
        exitCode: 0
        finishedAt: "2026-07-26T10:33:44Z"
        reason: Completed
        startedAt: "2026-07-26T10:33:44Z"
  - containerID: containerd://f3040c0b97cd3e543f64b786dfe425acecbb120ccb0c94e9668bd5d09008aa74
    image: harbor.atmosphere.dev/quay.io/metallb/frr-k8s:v0.0.17
    imageID: harbor.atmosphere.dev/quay.io/metallb/frr-k8s@sha256:48bdf71e60e8c2940887a9f22b020ce0cbc1ac2065db7063b5d7e24473ea62fb
    lastState: {}
    name: cp-metrics
    ready: true
    restartCount: 0
    started: false
    state:
      terminated:
        containerID: containerd://f3040c0b97cd3e543f64b786dfe425acecbb120ccb0c94e9668bd5d09008aa74
        exitCode: 0
        finishedAt: "2026-07-26T10:33:49Z"
        reason: Completed
        startedAt: "2026-07-26T10:33:49Z"
  phase: Running
  podIP: 199.204.45.229
  podIPs:
  - ip: 199.204.45.229
  qosClass: Burstable
  startTime: "2026-07-26T10:32:54Z"
