Amazon CloudWatch Observability 추가 기능을 사용하여 Amazon Elastic Kubernetes Service(Amazon EKS) 클러스터를 모니터링하려고 합니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
전제 조건:
추가 기능에 대한 IAM 역할 생성
AWS Identity and Access Management(IAM) OpenID Connect(OIDC) 공급자를 생성하려면 다음 명령을 실행합니다.
eksctl utils associate-iam-oidc-provider --cluster my-cluster-name --approve
참고: my-cluster-name을 해당 클러스터 이름으로 바꾸십시오. 자세한 내용은 Kubernetes 서비스 계정에 IAM 역할 할당을 참조하십시오.
CloudWatchAgentServerPolicy가 연결된 IAM 역할을 생성하려면 다음 명령을 실행합니다.
eksctl create iamserviceaccount \
--name cloudwatch-agent \
--namespace amazon-cloudwatch
--cluster my-cluster-name \
--role-name AmazonCloudWatchObservabilityRole \
--attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
--role-only \
--approve
참고: my-cluster-name을 해당 클러스터 이름으로 바꾸십시오. 또한 위 명령은 OIDC를 사용하여 역할을 맡도록 에이전트 서비스 계정을 구성합니다.
추가 기능 설치
추가 기능을 설치하려면 Amazon EKS 콘솔 또는 AWS CLI를 사용하십시오.
Amazon EKS 콘솔
다음 단계를 완료하십시오.
- Amazon EKS 콘솔을 엽니다.
- 탐색 창에서 클러스터를 선택합니다.
- 클러스터 이름을 선택한 다음, 추가 기능 탭을 선택합니다.
- 추가 기능 가져오기를 선택한 다음, 추가 기능 선택을 선택합니다.
- Amazon EKS 추가 기능 섹션에서 Amazon CloudWatch Observability를 선택한 후 다음을 선택합니다.
- 선택한 추가 기능 설정 구성 페이지에서 사용하려는 버전을 선택합니다.
- IAM 역할 선택에서 AmazonCloudWatchObservabilityRole을 선택하고 다음을 선택합니다.
- 검토 및 추가 페이지에서 생성을 선택합니다.
AWS CLI
추가 기능을 설치하려면 다음 create-addon 명령을 실행합니다.
aws eks create-addon --addon-name amazon-cloudwatch-observability --cluster-name my-cluster-name --service-account-role-arn arn:aws:iam::Account-ID:role/AmazonCloudWatchObservabilityRole
참고: my-cluster-name를 클러스터 이름으로 바꾸고 Account-ID를 AWS 계정 ID로 바꾸십시오.
설치가 완료되면 Amazon EKS가 클러스터에 amazon-cloudwatch 네임스페이스를 생성합니다. CloudWatch 에이전트와 Fluent Bit 포드도 클러스터에서 활성화됩니다.
활성 포드를 보려면 다음 명령을 실행합니다.
kubectl get pods -n amazon-cloudwatch
출력 예시:
NAME READY STATUS RESTARTS AGE
amazon-cloudwatch-observability-controller-manager-6c685b4wsdbg 1/1 Running 0 16s
cloudwatch-agent-76bnd 1/1 Running 0 16s
cloudwatch-agent-nbdgm 1/1 Running 0 16s
fluent-bit-45wl4 1/1 Running 0 16s
fluent-bit-rsfc7 1/1 Running 0 16s
샘플 애플리케이션 배포
클러스터에 지표를 수집할 워크로드가 없는 경우 다음 샘플 워크로드를 배포하십시오.
cat <<EOF >deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: eks-cw-sample-app
labels:
app: eks-cw-sample-app
spec:
replicas: 3
selector:
matchLabels:
app: eks-cw-sample-app
template:
metadata:
labels:
app: eks-cw-sample-app
spec:
containers:
- name: nginx
image: public.ecr.aws/nginx/nginx:1.27
ports:
- name: http
containerPort: 80
imagePullPolicy: IfNotPresent
EOF
kubectl apply -f deployment.yaml
이전 워크로드를 사용하여 CloudWatch가 지표를 올바르게 수집하는지 확인하십시오.
CloudWatch 콘솔에서 클러스터 모니터링
Container Insights를 설치한 후 CloudWatch 콘솔에서 지표를 볼 수 있습니다.
클러스터에서 AWS Fargate 로깅을 사용할 수도 있습니다.
관련 정보
Amazon EKS에서 로깅 및 모니터링