2017-12-06 2 views
1

누군가가 K8에 대한 자동 검색 구성을 안내 할 수 있습니까? Prometheus 서버가 클러스터 외부에 있습니다. 나는 Service Discovery With KubernetesdiscussionPrometheus 자동 검색 K8s

에 언급 된 사람을 나는 아직 여기에 모든 세부 사항을 설명하기에 충분한 K8S 전문가가 아니지만, 근본적으로는 클러스터 외부 프로 메테우스를 실행하는 완벽하게 가능 (사물에 필요한 노력 중복 크로스 클러스터처럼 메타 모니터링). Cf. in_cluster 구성 옵션은 http://prometheus.io/docs/operating/configuration/#kubernetes-sd-configurations-kubernetes_sd_config 입니다. 밖에 나가면 인증서 고리를 뛰어 넘을 필요가 있습니다.

그래서, sample configuration에서 unknown fields in kubernetes_sd_config: api_servers, in_cluster, retry_interval" 얻기 간단한 구성

- job_name: 'kubernetes' 

    kubernetes_sd_configs: 
     - 
     # The API server addresses. In a cluster this will normally be 
     # `https://kubernetes.default.svc`. Supports multiple HA API servers. 
     api_servers: 
      - https://xxx.xx.xx.xx 

     # Run in cluster. This will use the automounted CA certificate and bearer 
     # token file at /var/run/secrets/kubernetes.io/serviceaccount/ in the pod. 
     in_cluster: false 

     # Optional HTTP basic authentication information. 
     basic_auth: 
     username: prometheus 
     password: secret 

     # Retry interval between watches if they disconnect. 
     retry_interval: 5s 

또는 다른 들여 쓰기 오류

을했다, 그들은 ca_file:을 언급했다. K8s에서 인증서 파일을 얻는 방법 또는 K8을 지정하는 방법이 있습니까

+0

어떤 프로 메테우스 버전을 사용하고 있습니까? 유사합니다 https://github.com/prometheus/prometheus/issues/2147 – fiunchinho

답변

2

내가 알아 낸 소스 코드를 파헤쳐서 Prometheus는 항상 클러스터 구성을 사용합니다. if api_server은 config (discovery/kubernetes/kubernetes.go#L90-L96)에 제공됩니다.

어쨌든 docs은 Kubernetes 구성 매개 변수에 대해 아무 말도하지 않지만 소스 코드는 (config/config.go#L1026-L1037)입니다. 따라서 api_servers이라는 목록은 없지만 api_server이라는 단일 매개 변수가 있습니다. retry_interval 매개 변수가 어디에서 오는지

- job_name: 'kubernetes' 

    kubernetes_sd_configs: 
     - 
     # The API server addresses. In a cluster this will normally be 
     # `https://kubernetes.default.svc`. Supports multiple HA API servers. 
     api_server: https://xxx.xx.xx.xx 

     # Optional HTTP basic authentication information. 
     basic_auth: 
      username: prometheus 
      password: secret 

     # specify the CA 
     tls_config: 
      ca_file: /path/to/ca.crt 
      ## If the actual CA file isn't available you need to disable verification: 
      # insecure_skip_verify: true 

나도 몰라,하지만 AFAIK 이것이는 Kubernetes의 구성 매개 변수 아니며, 또한의 일부가 아니다 :

그래서 설정은 다음과 같이 (테스트되지 않은) 보일 것입니다 프로 메테우스 설정.

+0

빠른 답장을 보내 주셔서 감사합니다. 나는 당신의 구성에'role'을 넣었고 실행했습니다. 'ERRO 가져 오기 github.com/prometheus/prometheus/discovery/kubernetes/kubernetes.go:209 : v1.Pod를 나열하지 못했습니다 : https : //xx.xx.xx.xx/api/v1/pods 가져 오기 ? resourceVersion = 0 : x509 : 알 수없는 기관이 서명 한 인증서 component = "kube_client_runtime"source = "kubernetes.go : 76"' – Veerendra

+2

이 경우 CA 인증서를 지정해야합니다. 나는 대답을 업데이트했다. 해당 파일을 검색하는 f}은 클러스터 설정에 따라 다 (니다.설정을 사용할 수없는 경우 ['insecure_skip_verify'] (https://github.com/prometheus/prometheus/blob/099df0c5f00c45c007a9779a2e4ab51cf4d076bf/config/config.go#L460)를 통해 확인을 비활성화 할 수 있습니다. – svenwltr

1

@svenwltr의 도움을 받아 K8S 클러스터에서 시작할 수있는 고정 이미지를 만들었습니다. 확인 내 repo 어떻게 그 파일이 클러스터 설정에 따라 검색하는

0

기본적으로 K8S

에서 해당 인증서 파일을 가져 오는 방법을

는, 상점에게 /etc/kubernetes/pki/ca.crt에서 클라이언트 CA 인증서 파일을는 Kubernetes 및 kubeconfig에 의해 사용되는 ConfigMap의 /var/run/secrets/kubernetes.io/serviceaccount/ca.crt에도 있습니다.