BGP 컨트롤 플레인 트러블슈팅 가이드
BGP 컨트롤 플레인 트러블슈팅 가이드 (BGP Control Plane Troubleshooting Guide)
BGP 컨트롤 플레인을 구성할 때 흔히 겪는 문제와 그 해결 방법을 정리한 문서예요. 피어링이 성립되지 않거나 특정 리소스가 적용되지 않는 상황을 하나씩 따라가며 진단해 볼게요.
본문
이 문서는 BGP 컨트롤 플레인을 구성할 때 겪는 전형적인 문제들과 그 해결 방법을 정리해요.
Cilium BGP 리소스가 적용됐음에도 BGP 피어링이 성립되지 않음
주어진 노드에 대해 CiliumBGPNodeConfig 리소스가 생성됐는지 확인하세요. CiliumBGPNodeConfig 리소스가 없다면 Cilium operator 로그에서 오류가 있는지 확인해 보세요.
BGP 상태가 established 가 아니라면 nodeSelector 구성과 피어링 구성을 확인하세요.
또 다른 가능성은 CiliumBGPClusterConfig 의 nodeSelector 가 라벨 누락이나 잘못 구성된 셀렉터 때문에 어떤 노드와도 일치하지 않는 경우예요. 이 경우 다음 상태 조건이 설정됩니다:
status:
conditions:
- lastTransitionTime: "2026-06-16T12:54:24Z"
message: No node matches spec.nodeSelector
observedGeneration: 2
reason: MatchingNodeUnavailable
status: "True"
type: cilium.io/NoMatchingNode
CiliumBGPClusterConfig가 노드를 선택했지만 BGP 피어가 성립되지 않음
피어 라우터나 Cilium의 로그를 참조해 원인을 파악할 수 있어요. BGP 컨트롤 플레인이 기록하는 오류에는 subsys=bgp-control-plane 라는 필드가 있는데, 이를 사용해 BGP 컨트롤 플레인 특유의 오류를 필터링할 수 있습니다:
$ kubectl -n <your namespace> <cilium pod running on the target node> logs | grep bgp-control-plane
...
level=warning msg="sent notification" Data="as number mismatch expected 65003, received 65000" Key=10.0.1.1 Topic=Peer asn=65001 component=gobgp.BgpServerInstance subsys=bgp-control-plane
위 예시에서 볼 수 있듯이, 구성된 peerASN 과 피어의 실제 ASN이 일치하지 않아 BGP 세션이 성립되지 않았습니다.
BGP 피어링이 성립되지 않는 이유는 다양할 수 있어요. BGP 능력(capability) 불일치나 잘못된 피어 IP 주소 같은 경우죠. BGP 계층 오류는 로그에 나타날 가능성이 높지만, 피어 IP에 대한 연결성 부족이나 eBGP 피어가 1홉 이상 떨어진 경우 같은 저수준 오류는 로그에 반영되지 않을 수 있어요. 이런 경우 WireShark 나 tcpdump 같은 도구를 사용하는 것이 효과적입니다.
추가한 새 CiliumBGPClusterConfig가 동작하지 않음
여러 CiliumBGPClusterConfig 리소스는 nodeSelector 필드에 기반해 같은 노드를 선택할 수 없습니다. 이런 경우 Cilium operator는 추가 CiliumBGPClusterConfig 가 CiliumBGPNodeConfig 리소스를 생성하는 것을 거부해요. 이를 알리기 위해 CiliumBGPClusterConfig 에 다음 상태 조건이 설정됩니다:
status:
conditions:
- lastTransitionTime: "2026-06-16T12:55:24Z"
message: 'Selecting the same node(s) with ClusterConfig(s): [tor-control-plane]'
observedGeneration: 1
reason: ClusterConfigConflict
status: "True"
type: cilium.io/ConflictingClusterConfig
CiliumBGPPeerConfig가 적용되지 않음
CiliumBGPPeerConfig 가 적용되지 않는다면, peerConfigRef 에 오타 같은 잘못된 구성이 있어 참조가 유효하지 않을 수 있어요. 참조된 CiliumBGPPeerConfig 를 찾지 못하면 다음 상태 조건이 설정됩니다:
status:
conditions:
- lastTransitionTime: "2026-06-16T12:57:47Z"
message: 'Referenced CiliumBGPPeerConfig(s) are missing: [peer-config-1]'
observedGeneration: 1
reason: PeerConfigsMissing
status: "True"
type: cilium.io/MissingPeerConfigs
더 알아보기 (Learn more)
- Cilium BGP 컨트롤 플레인 — 설치와 개요
- BGP 컨트롤 플레인 운영 가이드