cAdvisor/Kubelet

Kubelet은 자체에 대한 측정항목과 해당 노드에서 실행 중인 컨테이너에 대한 cAdvisor 측정항목을 노출합니다.

Cloud Monitoring은 이러한 통합을 구성하는 대신 즉시 사용 가능한 cAdvisor/Kubelet 측정항목의 관리형 컬렉션을 제공합니다. 완전 관리형 컬렉션 옵션은 기본적으로 새 클러스터에서 설정되는 독자적으로 선별된 측정항목 집합을 제공합니다.

이 문서에 설명된 통합은 모든 cAdvisor 측정항목을 제공하지만, 그중 많은 측정항목이 필요하지 않을 가능성이 높으므로 필터링해야 하며 Google Kubernetes Engine 및 기타 Kubernetes 환경에서 사용할 수 있습니다. cAdvisor/Kubelet 측정항목의 관리형 집합은 가장 유용한 측정항목만 제공하도록 선별되었으며 GKE에서만 사용할 수 있습니다. 자세한 내용은 패키지: cAdvisor/Kubelet 측정항목을 참조하세요.

이 문서에 설명된 대로 cAdvisor 측정항목 컬렉션을 설정하면 이 구성이 GKE 관리형 cAdvisor 구성을 대체합니다. 이 문서에 설명된 구성은 관리형 cAdvisor 측정항목의 상위 집합을 사용 설정합니다.

이 문서에 설명된 접근 방식을 사용하는 경우 커스텀 PodMonitoring 구성을 사용하는 대신 OperatorConfig를 편집하여 cAdvisor 및 Kubelet 측정항목을 자동으로 스크래핑하도록 관리형 컬렉션을 구성할 수 있습니다. 매니페스트를 로컬 파일에 복사한 다음 kubectl apply -f FILE_NAME을 실행하여 설치할 수 있습니다. Terraform을 사용하여 매니페스트를 설치할 수도 있습니다.

  1. 수정을 위해 OperatorConfig 리소스를 엽니다.

    kubectl -n gmp-public edit operatorconfig config
    
  2. 굵게 표시된 다음 collection 섹션을 리소스에 추가합니다.

    apiVersion: monitoring.googleapis.com/v1
    kind: OperatorConfig
    metadata:
      namespace: gmp-public
      name: config
    collection:
      kubeletScraping:
        interval: 30s
    
  3. 파일을 저장하고 편집기를 닫습니다.

잠시 후 Kubelet 측정항목 엔드포인트가 스크래핑되어 측정항목을 Managed Service for Prometheus에서 쿼리하는 데 사용할 수 있게 됩니다.

Kubelet 스크래핑은 몇 가지 기본 필터와 함께 제공되며, 아래와 같이 OperatorConfig 리소스의 collection 섹션에 필터를 추가할 수 있습니다. filter.matchOneOf 구성 섹션은 Prometheus 페더레이션에 대해 match[] 매개변수와 동일한 시맨틱스를 갖습니다.

다음 예시에서는 container_foo 또는 container_bar로 시작하는 측정항목을 필터링합니다.

collection:
  filter:
    matchOneOf:
    - '{__name__!~"container_foo.*|container_bar.*"}'

이 OperatorConfig 컬렉션 필터를 디버깅 목적으로 사용할 수도 있습니다. 예를 들어 PodMonitoring 리소스를 수정하지 않고 클러스터에서 특정 측정항목 수집을 일시적으로 사용 중지할 수 있습니다.

고급 cAdvisor 설정을 위한 팁

cAdvisor를 자체 배포하거나 cAdvisor를 사용하여 Kubelet에 고급 구성을 제공하는 경우 고급 cAdvisor 설정을 사용하여 추가 라벨을 연결할 수 있습니다.

특히 Kubernetes 컨테이너 라벨 또는 환경 변수를 측정항목에 연결하지 않도록 하고, 허용 목록 패턴을 사용하여 이러한 라벨을 엄격하게 제어하세요(예: PodMonitoring의 metricRelabeling 섹션 사용).

측정항목에 추가된 라벨 수를 제어하면 라벨 수 한도를 초과하지 않도록 할 수 있습니다.