컴포넌트 로그
Calico 컴포넌트의 로그를 찾아 수집하는 방법을 정리한 레퍼런스예요. calico/node, Felix, Typha, kube-controllers, CNI 플러그인 출력까지 어디서 무엇을 보면 되는지 짚어 줘요. 문제를 트러블슈팅할 때 가장 먼저 확인하게 되는 로그 위치와 로그 레벨 설정을 다뤄요.
출처: 문서
본문
큰 그림
Calico 로그를 확인하고 수집해요.
가치
로그를 보면 컴포넌트 상태를 점검하고 잠재적인 문제를 진단하는 데 도움이 돼요.
개념
calico/node 로그
calico/node 로그에는 다음 서브컴포넌트들의 로그 출력이 담겨요:
- 노드별 시작 로직
- BGP 에이전트
- Felix 정책 에이전트
컴포넌트는 /var/log/calico 안의 디스크, stdout, 혹은 둘 다에 로그를 남겨요.
디스크에 로그를 남기는 컴포넌트는 파일이 자동으로 로테이트되고, 기본적으로 1MB짜리 파일 10개를 보관해요. 현재 로그 파일은 current라는 이름이고, 로테이트된 파일은 tai64n 형식 타임스탬프로 파일이 로테이트된 시각을 담은 @ 접미어가 붙어요.
방법
calico/node 인스턴스의 로그 보기
kubectl logs 명령어로 노드의 로그를 볼 수 있어요. 해당 노드의 모든 서브컴포넌트 로그가 함께 표시돼요.
예를 들면 다음과 같아요:
kubectl logs -n calico-system calico-node-xxxx
CNI 플러그인 로그 보기
CNI 플러그인 로그는 kubectl로는 볼 수 없고, 대신 호스트 머신의 디스크와 stderr 양쪽에 기록돼요.
기본적으로 이 로그는 호스트 머신의 /var/log/calico/cni/에서 찾을 수 있어요.
컨테이너 런타임이 자기 로그 출력 안에서 CNI 플러그인 로그를 함께 보여 줄 수도 있어요.
BGP 에이전트 로그 레벨 구성하기
BGP 로그 레벨은 BGPConfiguration API로 구성하고, 다음 값 중 하나를 사용할 수 있어요:
Debug: BIRD에 대해 "debug all" 로깅을 켜요. 가장 자세한 로깅 레벨이에요.Info: 프로토콜 상태 변화에 대한 로깅을 켜요. 기본 로그 레벨이에요.Warning: BIRD 로깅을 끄고, warning 레벨 구성 로그만 출력해요.Error: BIRD 로깅을 끄고, error 레벨 구성 로그만 출력해요.Fatal: BIRD 로깅을 끄고, fatal 레벨 구성 로그만 출력해요.
BGP 로그 레벨을 바꾸려면:
-
현재 bgpconfig 설정을 가져와요.
kubectl get bgpconfig -o yaml > bgp.yaml -
logSeverityScreen을 원하는 값으로 수정해요.
vim bgp.yamlSUCCESS: 전역 변경이라면 이름을 "default"로 설정하세요. 노드별 변경이라면 이름을 노드 이름에 "node." 접두어를 붙인 값, 예를 들어 "node.node-1"로 설정하세요.
-
현재 bgpconfig 설정을 교체해요.
kubectl replace -f bgp.yaml
Felix 로그 레벨 구성하기
Felix 로그 레벨은 FelixConfiguration API로 구성하고, 다음 값 중 하나를 사용할 수 있어요:
Debug: 가장 자세한 로깅 레벨 - 개발과 디버깅용이에요.Info: 기본 로그 레벨이에요. 중요한 상태 변화를 보여 줘요.Warning: 경고만 보여 줘요.Error: 오류만 보여 줘요.Fatal: 치명적인 오류만 보여 줘요.
Felix 로그 레벨을 바꾸려면:
-
현재 felixconfig 설정을 가져와요.
kubectl get felixconfig -o yaml > felixconfig.yaml -
logSeverityScreen을 원하는 값으로 수정해요.
vim felixconfig.yamlSUCCESS: 전역 변경이라면 이름을 "default"로 설정하세요. 노드별 변경이라면 이름을 노드 이름에 "node." 접두어를 붙인 값, 예를 들어 "node.node-1"로 설정하세요.
-
현재 felixconfig 설정을 교체해요.
kubectl replace -f felixconfig.yaml
더 알아보기 (Learn more)
로그를 수집했는데도 원인을 못 찾겠다면 calico/node가 켜는 서브컴포넌트별 로그 위치부터 다시 확인해 보세요. BGP 문제는 logSeverityScreen을 Info 이상으로 올려서 프로토콜 상태 변화를 추적하는 게 좋아요. 정책 관련 문제는 Felix 로그 레벨을 Debug로 잠깐 올렸다가 원인을 찾은 뒤 되돌리는 방식이 안전해요.