본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

컴포넌트 로그

원문 보기 위키 갱신

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 로그 레벨을 바꾸려면:

  1. 현재 bgpconfig 설정을 가져와요.

    kubectl get bgpconfig -o yaml > bgp.yaml
    
  2. logSeverityScreen을 원하는 값으로 수정해요.

    vim bgp.yaml
    

    SUCCESS: 전역 변경이라면 이름을 "default"로 설정하세요. 노드별 변경이라면 이름을 노드 이름에 "node." 접두어를 붙인 값, 예를 들어 "node.node-1"로 설정하세요.

  3. 현재 bgpconfig 설정을 교체해요.

    kubectl replace -f bgp.yaml
    

Felix 로그 레벨 구성하기

Felix 로그 레벨은 FelixConfiguration API로 구성하고, 다음 값 중 하나를 사용할 수 있어요:

  • Debug: 가장 자세한 로깅 레벨 - 개발과 디버깅용이에요.
  • Info: 기본 로그 레벨이에요. 중요한 상태 변화를 보여 줘요.
  • Warning: 경고만 보여 줘요.
  • Error: 오류만 보여 줘요.
  • Fatal: 치명적인 오류만 보여 줘요.

Felix 로그 레벨을 바꾸려면:

  1. 현재 felixconfig 설정을 가져와요.

    kubectl get felixconfig -o yaml > felixconfig.yaml
    
  2. logSeverityScreen을 원하는 값으로 수정해요.

    vim felixconfig.yaml
    

    SUCCESS: 전역 변경이라면 이름을 "default"로 설정하세요. 노드별 변경이라면 이름을 노드 이름에 "node." 접두어를 붙인 값, 예를 들어 "node.node-1"로 설정하세요.

  3. 현재 felixconfig 설정을 교체해요.

    kubectl replace -f felixconfig.yaml
    

더 알아보기 (Learn more)

로그를 수집했는데도 원인을 못 찾겠다면 calico/node가 켜는 서브컴포넌트별 로그 위치부터 다시 확인해 보세요. BGP 문제는 logSeverityScreen을 Info 이상으로 올려서 프로토콜 상태 변화를 추적하는 게 좋아요. 정책 관련 문제는 Felix 로그 레벨을 Debug로 잠깐 올렸다가 원인을 찾은 뒤 되돌리는 방식이 안전해요.