내용으로 건너뛰기

Amazon EKS 클러스터의 Container Insights 문제를 해결하려면 어떻게 해야 합니까?

4분 분량
0

Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터에 Amazon CloudWatch Container Insights를 구성할 때 문제가 발생합니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

Container Insights 설치 확인

Amazon EKS 클러스터에 Container Insights를 올바르게 설치했는지 확인하려면 다음 명령을 실행합니다.

kubectl get pods -n amazon-cloudwatch

그런 다음, 포드에 대해 다음 명령을 실행합니다.

kubectl describe pod pod-name -n amazon-cloudwatch

참고: pod-name을 포드 이름으로 바꾸십시오.

명령 출력의 Events 섹션을 확인합니다.

CloudWatch 로그를 확인하려면 다음 명령을 실행합니다.

kubectl logs pod-name  -n amazon-cloudwatch

Amazon EKS 관리형 추가 기능으로 CloudWatch Observability 설치

Amazon EKS에 대한 향상된 관찰성 기능을 갖춘 Container Insights를 설치하려면 Amazon EKS 추가 기능을 사용합니다.

참고: Kubernetes 버전 1.23 이상만 실행하는 Amazon EKS 클러스터에서 CloudWatch Observability EKS 추가 기능을 사용할 수 있습니다.

CloudWatch Observability를 자체 관리형 추가 기능으로 설치하려면 다음 단계를 완료하십시오.

  1. cert-manager를 설치하려면 다음 명령을 실행합니다.

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.1/cert-manager.yaml
  2. 사용자 지정 리소스 정의(CRD)를 설치하려면 다음 명령을 실행합니다.

    curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-custom-resource-definitions.yaml | kubectl apply --server-side -f -
  3. CloudWatch 컨테이너 에이전트 운영자를 설치하려면 다음 명령을 실행합니다.

    ClusterName=my-cluster-name
    RegionName=my-cluster-region
    curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-operator-rendered.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/g;s/{{region_name}}/'${RegionName}'/g' | kubectl apply -f -

AWS Management Console에 표시되지 않는 지표 문제 해결

AWS Management Console에 Container Insights 지표가 표시되지 않는 경우 Container Insights 설정을 완료했는지 확인하십시오.

Container Insights 오류 문제 해결

승인되지 않은 패닉: kubelet에서 cadvisor 데이터를 검색할 수 없음

이 문제를 해결하려면 kubelet에서 웹후크 인증 모드를 활성화해야 합니다.

잘못된 엔드포인트 오류

오류 메시지 예시:

"log": "2020-04-02T08:36:16Z E! cloudwatchlogs: code: InvalidEndpointURL, message: invalid endpoint uri, original error: &url.Error{Op:\"parse\", URL:\"https://logs.{{region_name}}.amazonaws.com/\", Err:\"{\"}, &awserr.baseError{code:\"InvalidEndpointURL\", message:\"invalid endpoint uri\", errs:[]error{(*url.Error)(0xc0008723c0)}}\n",

이 문제를 해결하려면 명령의 모든 자리 표시자 값을 바꿔야 합니다. 예를 들어, AWS CLI를 실행할 때 cluster-nameregion-name에 사용하는 정보가 배포에 대해 올바른지 확인하십시오.

클러스터 업그레이드 후 Amazon EKS 또는 Kubernetes에서 포드 지표 누락

오류 메시지 예시:

"W! No pod metric collected"

클러스터를 업그레이드한 후 포드 지표가 누락된 경우 노드의 컨테이너 런타임이 예상대로 작동하는지 확인하십시오.

이 문제를 해결하려면 호스트의 컨테이너 소켓을 컨테이너에 마운트하도록 배포 매니페스트를 업데이트하십시오.

배포 매니페스트의 예:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: cloudwatch-agent
  namespace: amazon-cloudwatch
spec:
  template:
    spec:
      containers:
        - name: cloudwatch-agent
# ...
          # Don't change the mountPath
          volumeMounts:
# ...
            - name: dockersock
              mountPath: /var/run/docker.sock
              readOnly: true
            - name: varlibdocker
              mountPath: /var/lib/docker
              readOnly: true
            - name: containerdsock # NEW mount
              mountPath: /run/containerd/containerd.sock
              readOnly: true
# ...
      volumes:
# ...
        - name: dockersock
          hostPath:
            path: /var/run/docker.sock
        - name: varlibdocker
          hostPath:
            path: /var/lib/docker
        - name: containerdsock # NEW volume
          hostPath:
            path: /run/containerd/containerd.sock

매니페스트의 전체 예는 GitHub 웹사이트에서 cwagent-daemonset.yaml을 참조하십시오.

Amazon EKS에 대해 Bottlerocket을 사용할 때 포드 지표 없음

오류 메시지 예시:

"W! No pod metric collected"

Bottlerocket은 호스트에서 다른 컨테이너 경로를 사용합니다. Bottlerocket을 사용하는 경우 모든 볼륨을 Bottlerocket 컨테이너 경로 위치로 변경해야 합니다.

명령 예시:

volumes:
  # ...
    - name: containerdsock
      hostPath:
        # path: /run/containerd/containerd.sock
        # bottlerocket does not mount containerd sock at normal place
        # https://github.com/bottlerocket-os/bottlerocket/commit/91810c85b83ff4c3660b496e243ef8b55df0973b
        path: /run/dockershim.sock

Prometheus 지표를 수집할 때 CloudWatch 에이전트에서 예상치 못한 로그 볼륨 증가

이 문제를 해결하려면 CloudWatch 에이전트를 사용 가능한 최신 버전으로 업데이트하십시오. 현재 버전을 찾으려면 CloudWatch 에이전트 버전에 대한 정보 찾기를 참조하십시오. 최신 버전을 설치하려면 CloudWatch 에이전트 설치를 참조하십시오.

CloudWatch 에이전트의 CrashLoopBackoff 오류

이 문제를 해결하려면 AWS Identity and Access Management(IAM) 권한을 올바르게 구성했는지 확인하십시오.

CloudWatch 에이전트 또는 Fluentd 포드가 보류 상태로 멈춤

포드가 보류 중 상태에서 멈출 수 있습니다. 또는 CloudWatch 에이전트 또는 Fluentd 포드에서 FailedScheduling 오류가 발생합니다. 이 문제를 해결하려면 에이전트에 필요한 코드 수량 및 RAM을 기준으로 노드에 충분한 컴퓨팅 리소스가 있는지 확인하십시오.

포드를 설명하려면 다음 명령을 실행합니다.

kubectl describe pod cloudwatch-agent-85ppg -n amazon-cloudwatch

Fluent Bit에 대한 Configmap이 제대로 배포되지 않음

이 문제를 해결하려면 amazon-cloudwatch 네임스페이스에 fluent-bit-config 구성 맵을 올바르게 배포했는지 확인하십시오.

오류 메시지 예시:

[2024/10/02 11:16:42] [error] [config] inconsistent use of tab and space
[2024/10/02 11:16:42] [error] [config] error in /fluent-bit/etc/..2024_10_02_11_16_29.3759745087//application-log.conf:62: invalid indentation level
[2024/10/02 11:16:42] [error] configuration file contains errors, aborting.cwagent-daemonset.yaml
AWS 공식업데이트됨 일 년 전
댓글 없음