클러스터 검사

Kubernetes: 리더 Cluster Agent를 찾습니다.

리더 선출이 활성화되면 리더만 노드 기반 Agents에 클러스터 검사 설정을 제공합니다. Cluster Agent Pod의 복제본이 하나만 실행 중인 경우 이 복제본이 리더입니다. 그렇지 않으면 datadog-leader-election ConfigMap에서 리더의 이름을 확인할 수 있습니다.

# kubectl get cm datadog-leader-election -o yaml apiVersion: v1 kind: ConfigMap metadata:   annotations:     control-plane.alpha.kubernetes.io/leader: '{"holderIdentity":"cluster-agent-rhttz", ... }' 

이 경우 리더 Pod는 cluster-agent-rhttz 입니다. Pod가 삭제되거나 응답하지 않으면 다른 Pod가 자동으로 인수됩니다.

Cluster Agent의 자동탐지

Cluster Agent가 설정(정적 또는 자동 탐지)을 선택하도록 하려면, 리더 Cluster Agent에서 configcheck 명령을 사용합니다:

# kubectl exec <CLUSTER_AGENT_POD_NAME> agent configcheck ... === http_check cluster check === Source: kubernetes-services Instance ID: http_check:My service:6e5f4b16b4b433cc name: My service tags: - kube_namespace:default - kube_service:my-nginx timeout: 1 url: http://10.15.246.109 ~ Init Config: {} Auto-discovery IDs: * kube_service://751adfe4-1280-11e9-a26b-42010a9c00c8 === 

Cluster Agent의 로직 디스패치

clusterchecks 명령을 사용하면 다음을 포함하여 디스패치 로직의 상태를 검사할 수 있습니다:

  • 어떤 노드 기반 Agents가 Cluster Agent에 적극적으로 보고하고 있는지.
  • 각 노드에 어떤 검사가 연결되는지.
# kubectl exec <CLUSTER_AGENT_POD_NAME> agent clusterchecks  === 3 node-agents reporting === Name                                            Running checks default-pool-bce5cd34-7g24.c.sandbox.internal   0 default-pool-bce5cd34-slx3.c.sandbox.internal   2 default-pool-bce5cd34-ttw6.c.sandbox.internal   1 ...  ===== Checks on default-pool-bce5cd34-ttw6.c.sandbox.internal =====  === http_check check === Source: kubernetes-services Instance ID: http_check:My service:5b948dee172af830 empty_default_hostname: true name: My service tags: - kube_namespace:default - kube_service:my-nginx - cluster_name:example timeout: 1 url: http://10.15.246.109 ~ Init Config: {} === 

참고: 태그와 옵션을 추가하도록 인스턴스가 수정되므로, Instance ID는 configcheck 명령과 다릅니다.

이 경우 이 설정이 default-pool-bce5cd34-ttw6 노드로 디스패치됩니다. 해당 노드의 Agent Pod와 관련하여 트러블슈팅이 계속됩니다.

노드 기반 Agent의 자동탐지

Agent configcheck 명령은 cluster-checks 소스와 함께 인스턴스를 표시해야 합니다.

# kubectl exec <NODE_AGENT_POD_NAME> agent configcheck ... === http_check check === Source: cluster-checks Instance ID: http_check:My service:5b948dee172af830 empty_default_hostname: true name: My service tags: - kube_namespace:default - kube_service:my-nginx - cluster_name:example timeout: 1 url: http://10.15.246.109 ~ Init Config: {} === 

인스턴스 ID는 이전에 가지고 있던 것과 일치합니다.

Agent 상태

Agent status 명령은 검사 인스턴스가 실행 중이며 성공적으로 보고되고 있음을 표시해야 합니다.

# kubectl exec <NODE_AGENT_POD_NAME> agent status ...     http_check (3.1.1)     ------------------       Instance ID: http_check:My service:5b948dee172af830 [OK]       Total Runs: 234       Metric Samples: Last Run: 3, Total: 702       Events: Last Run: 0, Total: 0       Service Checks: Last Run: 1, Total: 234       Average Execution Time : 90ms 

엔드포인트 검사

엔드포인트 검사 트러블슈팅은 클러스터 검사 트러블슈팅과 유사합니다. 예약된 엔드포인트 검사가 클러스터 검사와 함께 표시되는 Node Agent에서 차이가 발생합니다.

참고: 엔드포인트 검사는 서비스의 엔드포인트를 백업하는 파드와 동일한 노드에서 실행되는 Agent에 의해 예약됩니다. 엔드포인트가 파드에 의해 백업되지 않는 경우, Cluster Agent는 클러스터 검사로 변환합니다. 이 클러스터 검사는 모든 Node Agent에서 실행할 수 있습니다.

Node Agent의 자동탐지

Agent configcheck 명령은 endpoints-checks 소스와 함께 인스턴스를 표시합니다.

# kubectl exec <NODE_AGENT_POD_NAME> agent configcheck ... === nginx check === Configuration provider: endpoints-checks Configuration source: kube_endpoints:kube_endpoint_uid://default/nginx/ Instance ID: nginx:956741d8796d940c nginx_status_url: http://10.0.0.75/nginx_status/ tags: - pod_phase:running - kube_deployment:nginx - kube_service:nginx - kube_namespace:default - kube_endpoint_ip:10.0.0.75 - cluster_name:cluster ~ Init Config: {} Auto-discovery IDs: * kube_endpoint_uid://default/nginx/10.0.0.75 * kubernetes_pod://4e733448-f57e-11e9-8123-42010af001ed State: dispatched to gke-cluster-default-pool-4658d5d4-qfnt === 

Agent 상태

Agent status 명령은 검사 인스턴스가 실행 중이며 성공적으로 보고되고 있음을 표시해야 합니다.

# kubectl exec <NODE_AGENT_POD_NAME> agent status ...     nginx (4.0.0)     -------------       Instance ID: nginx:956741d8796d940c [OK]       Configuration Source: kube_endpoints:kube_endpoint_uid://default/nginx/       Total Runs: 443       Metric Samples: Last Run: 7, Total: 3,101       Events: Last Run: 0, Total: 0       Service Checks: Last Run: 1, Total: 443       Average Execution Time : 5ms 

Cluster Agent의 자동탐지

Cluster Agent clusterchecks 명령은 kubernetes-endpoints 소스와 함께 인스턴스를 표시합니다.

# kubectl exec <CLUSTER_AGENT_POD_NAME> agent clusterchecks ... ===== 3 Pod-backed Endpoints-Checks scheduled =====  === nginx check === Configuration provider: kubernetes-endpoints Configuration source: kube_endpoints:kube_endpoint_uid://default/nginx/ Instance ID: nginx:My Nginx Service Endpoints:f139adc46c81828e name: My Nginx Endpoints nginx_status_url: http://10.0.0.75/nginx_status/ tags: - kube_service:nginx - kube_namespace:default - kube_endpoint_ip:10.0.0.75 - cluster_name:cluster ~ Init Config: {} Auto-discovery IDs: * kube_endpoint_uid://default/nginx/10.0.0.75 * kubernetes_pod://4e733448-f57e-11e9-8123-42010af001ed State: dispatched to gke-cluster-default-pool-4658d5d4-qfnt === ... 

참고 자료