Wiki source code of Cilium 네트워크 장애 진단 체크리스트
Last modified by Sungwon Lee on 2026/07/05 12:33
Hide last authors
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 1 | = Cilium 네트워크 장애 진단 체크리스트 = |
| 2 | |||
| 3 | == 1. 클러스터 전체 노드 간 연결 상태 확인 == | ||
| 4 | |||
| 5 | {{code language="bash"}} | ||
| 6 | kubectl get pods -n kube-system -o wide | grep cilium | ||
| 7 | kubectl exec -n kube-system <아무-cilium-pod> -- cilium-health status | ||
| 8 | {{/code}} | ||
| 9 | |||
| 10 | 확인 포인트: | ||
| 11 | |||
| 12 | * ""Node"" 컬럼 = 호스트 대 호스트 연결 (cilium-health 에이전트, TCP/UDP 4240) | ||
| 13 | * ""Endpoints"" 컬럼 = Pod 대 Pod 연결 (실제 서비스 트래픽 경로, VXLAN이면 UDP 8472) | ||
| 14 | |||
| 15 | == 2. 특정 노드만 문제인지, 클러스터 전체 문제인지 판별 == | ||
| 16 | |||
| 17 | 서로 다른 2~3개 노드의 cilium pod에서 각각 실행해서 대칭 비교합니다. | ||
| 18 | |||
| 19 | {{code language="bash"}} | ||
| 20 | kubectl exec -n kube-system <노드A-cilium-pod> -- cilium-health status | ||
| 21 | kubectl exec -n kube-system <노드B-cilium-pod> -- cilium-health status | ||
| 22 | {{/code}} | ||
| 23 | |||
| 24 | * 한쪽만 다 안 보임 → 그 노드만 문제 | ||
| 25 | * 양쪽 다 서로 안 보임 → 클러스터 전체(또는 인프라 레벨) 문제 | ||
| 26 | |||
| 27 | == 3. Cilium agent 자체 상태 확인 == | ||
| 28 | |||
| 29 | {{code language="bash"}} | ||
| 30 | kubectl exec -n kube-system <cilium-pod> -- cilium status --verbose | ||
| 31 | {{/code}} | ||
| 32 | |||
| 33 | 체크 항목: | ||
| 34 | |||
| 35 | * ""Cilium: Ok"" | ||
| 36 | * ""KubeProxyReplacement"" | ||
| 37 | * ""Routing: Network: Tunnel [vxlan]"" | ||
| 38 | * ""Modules Health""의 ""DEGRADED"" 항목 유무 | ||
| 39 | |||
| 40 | == 4. 순수 네트워크(호스트) 레벨 검증 == | ||
| 41 | |||
| 42 | {{code language="bash"}} | ||
| 43 | ping -c 3 <다른노드IP> ## 기본 연결 | ||
| 44 | ping -M do -s 1472 -c 3 <다른노드IP> ## MTU 블랙홀 여부 (VXLAN 오버헤드 감안) | ||
| 45 | nc -u -zv -w3 <다른노드IP> 8472 ## VXLAN 포트 도달 확인 | ||
| 46 | {{/code}} | ||
| 47 | |||
| 48 | == 5. 실제 패킷 드랍 여부 실시간 확인 == | ||
| 49 | |||
| 50 | {{code language="bash"}} | ||
| 51 | kubectl exec -n kube-system <cilium-pod> -- cilium monitor --type drop | ||
| 52 | {{/code}} | ||
| 53 | |||
| 54 | 아무것도 안 잡히면 Cilium보다 아래(인프라) 레벨 문제일 가능성이 높음. | ||
| 55 | |||
| 56 | == 6. OpenStack 환경일 경우 최우선 확인 사항 == | ||
| 57 | |||
| 58 | * Neutron 보안그룹의 다음 Ingress 규칙 존재 여부 | ||
| 59 | ** ""UDP"" (VXLAN, 포트 8472) — Pod 간 통신에 필요 | ||
| 60 | ** ""TCP 4240"" — cilium-health 노드 헬스체크에 필요 | ||
| 61 | * Neutron OVS agent 상태 | ||
| 62 | |||
| 63 | {{code language="bash"}} | ||
| 64 | systemctl status neutron-openvswitch-agent | ||
| 65 | {{/code}} | ||
| 66 | |||
| 67 | == 진단 우선순위 요약 == | ||
| 68 | |||
| 69 | 1. ""cilium-health status""로 전체 그림 파악 | ||
| 70 | 1. 노드별 대칭 비교로 문제 범위 확정 (특정 노드 vs 클러스터 전체) | ||
| 71 | 1. 순수 네트워크 테스트 (MTU, 포트 도달성) | ||
| 72 | 1. 위에서 안 잡히면 **OpenStack 보안그룹**부터 의심 (특히 Ingress UDP/TCP 4240 누락) | ||
| 73 | |||
| 74 | == 사례: 2026-07-05 발생 장애 == | ||
| 75 | |||
| 76 | * **증상**: kubernetes-dashboard 접속 시 kong-proxy → dashboard-web 연결 타임아웃 (502) | ||
| 77 | * **원인**: OpenStack 보안그룹에 Ingress UDP 규칙 및 TCP 4240 규칙이 없어 클러스터 전체 노드 간 VXLAN/헬스체크 통신 차단 | ||
| 78 | * **해결**: 보안그룹에 아래 규칙 추가 | ||
| 79 | ** Ingress / UDP / Any / 10.10.1.0/24 | ||
| 80 | ** Ingress / TCP / 4240 / 10.10.1.0/24 |