apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2026-07-25T21:38:02Z"
  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-4swmf
  namespace: frr-k8s-system
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: DaemonSet
    name: frr-k8s
    uid: aeefa57c-7c4b-4dd1-9452-85ecb4ca9a8b
  resourceVersion: "4586"
  uid: 2e950590-65cd-4d6e-8e98-4aeec0685b75
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-gj99g
      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-gj99g
      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-gj99g
      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-gj99g
      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-gj99g
      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-gj99g
      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-gj99g
      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-gj99g
      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-gj99g
      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-gj99g
    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-25T21:38:15Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2026-07-25T21:38:28Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2026-07-25T21:38:28Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2026-07-25T21:38:02Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: containerd://4eb9ea7328d92ec3606e20adb295fa29f603ce94223f427f926c465f98e8b7b8
    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-25T21:38:15Z"
  - containerID: containerd://0239ef0b8bd21135fb71a9723d7080cede113e0553c282aadd907968f91c93ad
    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-25T21:38:15Z"
  - containerID: containerd://b82afe24d294b25c2db7ad166d71acd6368735588ec754cde229bf6efb833770
    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-25T21:38:15Z"
  - containerID: containerd://2de841d1d890be0ce9765394cae7f89a94787d48213339538d26ac87cb3b6702
    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-25T21:38:24Z"
  - containerID: containerd://29501ed0afa6dea238cd458d63cfaea27fe7f4ef64e904e5e7503e522b51f3dd
    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-25T21:38:24Z"
  - containerID: containerd://56cfab23ad41045a49ea1d8da2fb7cb522fa04f5536ddb8a10bc5ac25044f36f
    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-25T21:38:15Z"
  hostIP: 199.204.45.156
  initContainerStatuses:
  - containerID: containerd://5b923eb4b0022b2b701b94e9b8ae0ab0d7d5c130df9474c8440a4c9406c9cdc2
    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://5b923eb4b0022b2b701b94e9b8ae0ab0d7d5c130df9474c8440a4c9406c9cdc2
        exitCode: 0
        finishedAt: "2026-07-25T21:38:05Z"
        reason: Completed
        startedAt: "2026-07-25T21:38:05Z"
  - containerID: containerd://1debed120fcf099899278f6ef276ff751392dada0a1c3d1a80ea7edf8a64b36f
    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://1debed120fcf099899278f6ef276ff751392dada0a1c3d1a80ea7edf8a64b36f
        exitCode: 0
        finishedAt: "2026-07-25T21:38:12Z"
        reason: Completed
        startedAt: "2026-07-25T21:38:12Z"
  - containerID: containerd://8a5ccc4411c6fb5a23fbdf1070239af5047b46e952dd5f145f4271a850fb62e4
    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://8a5ccc4411c6fb5a23fbdf1070239af5047b46e952dd5f145f4271a850fb62e4
        exitCode: 0
        finishedAt: "2026-07-25T21:38:14Z"
        reason: Completed
        startedAt: "2026-07-25T21:38:14Z"
  phase: Running
  podIP: 199.204.45.156
  podIPs:
  - ip: 199.204.45.156
  qosClass: Burstable
  startTime: "2026-07-25T21:38:02Z"
