apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2026-07-25T20:06:06Z"
  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-7zn4t
  namespace: frr-k8s-system
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: DaemonSet
    name: frr-k8s
    uid: 701f8572-6ff5-421f-a309-29c7a7b31b3c
  resourceVersion: "5580"
  uid: 34327d5e-969f-4e96-a3e7-6970a9a3861e
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-7qpt4
      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-7qpt4
      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-7qpt4
      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-7qpt4
      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-7qpt4
      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-7qpt4
      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-7qpt4
      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-7qpt4
      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-7qpt4
      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-7qpt4
    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-25T20:07:16Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2026-07-25T20:07:31Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2026-07-25T20:07:31Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2026-07-25T20:06:06Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: containerd://8b68286f388146597d5f40a4e45b90b4d7ca0a607b0541bde2987d3ef253d4b3
    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-25T20:07:16Z"
  - containerID: containerd://d84ce7b056386e26dac4a2e9c37117eb321b4be58a9b5680c7d28c7bb1b291e1
    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-25T20:07:16Z"
  - containerID: containerd://806c7ce1b58699c0fe75ad8a56967b5c84a1b2d0cfbd5f3473becde716a55c48
    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-25T20:07:20Z"
  - containerID: containerd://43355d19b94bc3a3f95443720c75180c80654e7cbac6305f93f5cfe3d341f0ab
    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-25T20:07:30Z"
  - containerID: containerd://92c17dcb081107d4915248a24b1e5ab1f6a39e9cc2cf77f41ed16d6cf67871d0
    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-25T20:07:30Z"
  - containerID: containerd://db5730106a3ddaf0494bb252dd11b4f79fd6fe6e063d19d44937be76d0cb995a
    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-25T20:07:17Z"
  hostIP: 199.19.213.78
  initContainerStatuses:
  - containerID: containerd://541404e3867a858d6689e29e767cd34d6afa93cb16d4870f23efc9dfaafc1008
    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://541404e3867a858d6689e29e767cd34d6afa93cb16d4870f23efc9dfaafc1008
        exitCode: 0
        finishedAt: "2026-07-25T20:06:56Z"
        reason: Completed
        startedAt: "2026-07-25T20:06:56Z"
  - containerID: containerd://5793eacb3fa3194c3da1c01fc87f855df4112eb0caef2add2fe6743e64a14f53
    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://5793eacb3fa3194c3da1c01fc87f855df4112eb0caef2add2fe6743e64a14f53
        exitCode: 0
        finishedAt: "2026-07-25T20:07:14Z"
        reason: Completed
        startedAt: "2026-07-25T20:07:14Z"
  - containerID: containerd://8f4aff2bc645af87ff770048a364218374b9ad56dfa754bea9dfd23fd39465e2
    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://8f4aff2bc645af87ff770048a364218374b9ad56dfa754bea9dfd23fd39465e2
        exitCode: 0
        finishedAt: "2026-07-25T20:07:15Z"
        reason: Completed
        startedAt: "2026-07-25T20:07:15Z"
  phase: Running
  podIP: 199.19.213.78
  podIPs:
  - ip: 199.19.213.78
  qosClass: Burstable
  startTime: "2026-07-25T20:06:06Z"
