apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: "2026-07-25T17:16:18Z"
  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-rgtqz
  namespace: frr-k8s-system
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: DaemonSet
    name: frr-k8s
    uid: 1771b69c-274a-4090-a060-a740faa0697b
  resourceVersion: "4017"
  uid: d00d752b-b2a5-4ed4-a21d-b4ab6e9b18b9
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-jjjfd
      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-jjjfd
      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-jjjfd
      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-jjjfd
      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-jjjfd
      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-jjjfd
      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-jjjfd
      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-jjjfd
      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-jjjfd
      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-jjjfd
    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-25T17:17:43Z"
    status: "True"
    type: Initialized
  - lastProbeTime: null
    lastTransitionTime: "2026-07-25T17:17:59Z"
    status: "True"
    type: Ready
  - lastProbeTime: null
    lastTransitionTime: "2026-07-25T17:17:59Z"
    status: "True"
    type: ContainersReady
  - lastProbeTime: null
    lastTransitionTime: "2026-07-25T17:16:18Z"
    status: "True"
    type: PodScheduled
  containerStatuses:
  - containerID: containerd://3ed81d95c37901e46121914b47018483fe4ebcc069afc9a2f3ee7c1f94433065
    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-25T17:17:43Z"
  - containerID: containerd://dfc4413faa2a8a8d68f21823220daa0760fb7cfdfe828155f16cfb0a60b892fc
    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-25T17:17:43Z"
  - containerID: containerd://73b3b448ea87879c1c74afcb088dc6598349a1ab9bd3f688866e605736bb250e
    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-25T17:17:43Z"
  - containerID: containerd://79c217c9a8c6d5000465549c77a72be5d65177322720de8017914aa3cc0f37cc
    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-25T17:17:48Z"
  - containerID: containerd://1b23a90e9937cf1082d4b8eb0e489835e96ba0127b3b363d8e9bb409ca3ab67c
    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-25T17:17:48Z"
  - containerID: containerd://68cfbc0f71d3b04cc6dfff67bc90cf959f5ac6066e3d8abc99c3fa6caec2326a
    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-25T17:17:43Z"
  hostIP: 199.204.45.235
  initContainerStatuses:
  - containerID: containerd://e4f53debe277a72706073d5f027b93699e0e101fc3cfcc2b4309d5a8d9c7ae33
    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://e4f53debe277a72706073d5f027b93699e0e101fc3cfcc2b4309d5a8d9c7ae33
        exitCode: 0
        finishedAt: "2026-07-25T17:17:01Z"
        reason: Completed
        startedAt: "2026-07-25T17:17:01Z"
  - containerID: containerd://f8245a704cb2a31a1fc25a2d773b1b654cad3ec93e208c883b1d451d560c1c9f
    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://f8245a704cb2a31a1fc25a2d773b1b654cad3ec93e208c883b1d451d560c1c9f
        exitCode: 0
        finishedAt: "2026-07-25T17:17:32Z"
        reason: Completed
        startedAt: "2026-07-25T17:17:32Z"
  - containerID: containerd://67607e1132273e9cbc44283817d94d40d6cf9cd6fe755cbfcded5d06ecac17d2
    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://67607e1132273e9cbc44283817d94d40d6cf9cd6fe755cbfcded5d06ecac17d2
        exitCode: 0
        finishedAt: "2026-07-25T17:17:42Z"
        reason: Completed
        startedAt: "2026-07-25T17:17:42Z"
  phase: Running
  podIP: 199.204.45.235
  podIPs:
  - ip: 199.204.45.235
  qosClass: Burstable
  startTime: "2026-07-25T17:16:18Z"
