지출 인식 - Amazon EKS

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

지출 인식

지출 인식은 EKS 클러스터에서 누가, 어디서, 무엇이 지출을 유발하는지 이해하는 것입니다. 이 데이터를 정확하게 파악하면 지출에 대한 인식을 높이고 해결해야 할 영역을 강조하는 데 도움이 됩니다.

추천

Cost Explorer 사용

AWS Cost Explorer에는 시간이 지남에 따라 AWS 비용 및 사용량을 시각화, 이해 및 관리할 수 있는 easy-to-use 인터페이스가 있습니다. Cost Explorer에서 사용할 수 있는 필터를 사용하여 다양한 수준에서 비용 및 사용량 데이터를 분석할 수 있습니다.

EKS 컨트롤 플레인 및 EKS Fargate 비용

아래 다이어그램과 같이 필터를 사용하여 컨트롤 플레인 및 Fargate 포드에서 EKS 비용에 대해 발생한 비용을 쿼리할 수 있습니다.

Cost Explorer - EKS 제어 플레인

필터를 사용하여 아래 다이어그램과 같이 CPU당 vCPU 시간 및 GB 시간 모두를 포함하는 EKS의 리전에서 Fargate 포드에 대해 발생한 총 비용을 쿼리할 수 있습니다.

Cost Explorer - EKS Fargate

리소스 태그 지정

Amazon EKS는 Amazon EKS 클러스터에 AWS 태그 추가를 지원합니다. 이렇게 하면 클러스터 관리를 위해 EKS API에 대한 액세스를 쉽게 제어할 수 있습니다. EKS 클러스터에 추가된 태그는 AWS EKS 클러스터 리소스에 고유하며 EC2 인스턴스 또는 로드 밸런서와 같이 클러스터에서 사용하는 다른 AWS 리소스로 전파되지 않습니다. 현재 클러스터 태그 지정은 AWS API, 콘솔 및 SDKs.

AWS Fargate는 컨테이너에 적합한 크기의 온디맨드 컴퓨팅 용량을 제공하는 기술입니다. 클러스터의 Fargate에 포드를 예약하려면 먼저 포드가 시작될 때 Fargate를 사용할 포드를 지정하는 Fargate 프로필을 하나 이상 정의해야 합니다.

EKS 클러스터에 태그 추가 및 나열:

$ aws eks tag-resource --resource-arn arn:aws:eks:us-west-2:xxx:cluster/ekscluster1 --tags team=devops,env=staging,bu=cio,costcenter=1234 $ aws eks list-tags-for-resource --resource-arn arn:aws:eks:us-west-2:xxx:cluster/ekscluster1 { "tags": { "bu": "cio", "env": "staging", "costcenter": "1234", "team": "devops" } }

AWS Cost Explorer에서 비용 할당 태그를 활성화하면 AWS는 비용 할당 태그를 사용하여 비용 할당 보고서에 리소스 비용을 구성하므로 AWS 비용을 쉽게 분류하고 추적할 수 있습니다.

태그는 Amazon EKS에는 아무런 의미가 없으며 엄격하게 문자열로 해석됩니다. 예를 들어, Amazon EKS 클러스터에 태그 집합을 정의하면 클러스터의 소유자 및 스택 수준을 추적하는 데 도움이 됩니다.

AWS Trusted Advisor 사용

AWS Trusted Advisor는 비용 최적화, 보안, 내결함성, 성능 및 서비스 제한의 5가지 범주에 걸쳐 다양한 모범 사례 확인 및 권장 사항을 제공합니다.

비용 최적화의 경우 Trusted Advisor는 미사용 및 유휴 리소스를 제거하는 데 도움이 되며 예약된 용량을 약정할 것을 권장합니다. Amazon EKS에 도움이 되는 주요 작업 항목은 사용률이 낮은 EC2 인스턴스, 연결되지 않은 탄력적 IP 주소, 유휴 로드 밸런서, 사용률이 낮은 EBS 볼륨 등입니다. 검사의 전체 목록은 https://aws.amazon.com/premiumsupport/technology/trusted-advisor/best-practice-checklist/ 제공됩니다.

또한 Trusted Advisor는 EC2 인스턴스 및 Fargate에 대한 Savings Plans 및 예약 인스턴스 권장 사항을 제공하므로 할인 요금에 대한 대가로 일관된 사용량을 약정할 수 있습니다.

참고

Trusted Advisor의 권장 사항은 일반 권장 사항이며 EKS에만 국한되지 않습니다.

Kubernetes 대시보드 사용

Kubernetes 대시보드

Kubernetes 대시보드는 Kubernetes 클러스터용 범용 웹 기반 UI로, 클러스터, 노드 및 포드 수준의 리소스 사용량을 포함하여 Kubernetes 클러스터에 대한 정보를 제공합니다. Amazon EKS 클러스터에 Kubernetes 대시보드를 배포하는 방법은 Amazon EKS 설명서에 설명되어 있습니다.

대시보드는 각 노드 및 포드에 대한 리소스 사용 내역과 포드, 서비스, 배포 및 기타 Kubernetes 객체에 대한 자세한 메타데이터를 제공합니다. 이 통합 정보는 Kubernetes 환경에 대한 가시성을 제공합니다.

Kubernetes 대시보드

kubectl 상단 및 설명 명령

kubectl top 및 kubectl을 사용하여 리소스 사용량 지표를 보면 명령을 설명합니다. kubectl top은 클러스터 전체의 포드 또는 노드 또는 특정 포드 또는 노드에 대한 현재 CPU 및 메모리 사용량을 표시합니다. kubectl describe 명령은 특정 노드 또는 포드에 대한 자세한 정보를 제공합니다.

$ kubectl top pods $ kubectl top nodes $ kubectl top pod pod-name --namespace mynamespace --containers

출력에는 최상위 명령을 사용하여 노드가 사용하는 총 CPU(코어) 및 메모리(MiB) 양과 해당 숫자가 나타내는 노드의 할당 용량 백분율이 표시됩니다. 그런 다음 --containers 플래그를 추가하여 포드 내의 다음 수준인 컨테이너 수준으로 드릴다운할 수 있습니다.

$ kubectl describe node <node> $ kubectl describe pod <pod>

kubectl describe는 각 리소스 요청 또는 제한이 나타내는 총 가용 용량의 백분율을 반환합니다.

kubectl Top and describe는 kubernetes 포드, 노드 및 컨테이너에서 CPU, 메모리 및 스토리지와 같은 중요한 리소스의 사용률과 가용성을 추적합니다. 이러한 인식은 리소스 사용량을 이해하고 비용을 관리하는 데 도움이 됩니다.

CloudWatch Container Insights 사용

CloudWatch Container Insights를 사용하여 컨테이너화된 애플리케이션 및 마이크로서비스에서 지표와 로그를 수집, 집계 및 요약할 수 있습니다. Container Insights는 EC2의 Amazon Elastic Kubernetes Service와 Amazon EC2의 Kubernetes 플랫폼에서 사용할 수 있습니다. 이 지표에는 CPU, 메모리, 디스크, 네트워크 같은 리소스 사용률이 포함되어 있습니다.

인사이트 설치는 설명서에 나와 있습니다.

CloudWatch는 클러스터, 노드, 포드, 작업 및 서비스 수준에서 집계된 지표를 CloudWatch 지표로 생성합니다.

다음 쿼리는 평균 노드 CPU 사용률을 기준으로 정렬된 노드 목록을 보여줍니다.

STATS avg(node_cpu_utilization) as avg_node_cpu_utilization by NodeName
| SORT avg_node_cpu_utilization DESC

컨테이너 이름별 CPU 사용량

stats pct(container_cpu_usage_total, 50) as CPUPercMedian by kubernetes.container_name
| filter Type="Container"

컨테이너 이름별 디스크 사용량

stats floor(avg(container_filesystem_usage/1024)) as container_filesystem_usage_avg_kb by InstanceId, kubernetes.container_name, device
| filter Type="ContainerFS"
| sort container_filesystem_usage_avg_kb desc

Container Insights 문서에 더 많은 샘플 쿼리가 제공됩니다.

이러한 인식은 리소스 사용량을 이해하고 비용을 관리하는 데 도움이 됩니다.

지출 인식 및 지침에 Kubecost 사용

kubecost와 같은 타사 도구를 Amazon EKS에 배포하여 Kubernetes 클러스터 실행 비용을 파악할 수도 있습니다. Kubecost를 사용하여 비용을 추적하려면이 AWS 블로그를 참조하세요.

Helm 3을 사용하여 kubecost 배포:

$ curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash $ helm version --short v3.2.1+gfe51cd1 $ helm repo add stable https://kubernetes-charts.storage.googleapis.com/ $ helm repo add stable https://kubernetes-charts.storage.googleapis.com/c^C $ kubectl create namespace kubecost namespace/kubecost created $ helm repo add kubecost https://kubecost.github.io/cost-analyzer/ "kubecost" has been added to your repositories $ helm install kubecost kubecost/cost-analyzer --namespace kubecost --set kubecostToken="aGRoZEBqc2pzLmNvbQ==xm343yadf98" NAME: kubecost LAST DEPLOYED: Mon May 18 08:49:05 2020 NAMESPACE: kubecost STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: --------------------------------------------------Kubecost has been successfully installed. When pods are Ready, you can enable port-forwarding with the following command: kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090 Next, navigate to http://localhost:9090 in a web browser. $ kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 9090 NOTE: If you are using Cloud 9 or have a need to forward it to a different port like 8080, issue the following command $ kubectl port-forward --namespace kubecost deployment/kubecost-cost-analyzer 8080:9090

Kubecost 대시보드 - Kubernetes Cluster Auto Scaler logs

Kubernetes 비용 할당 및 용량 계획 분석 도구 사용

Kubernetes Opex Analytics는 조직이 Kubernetes 클러스터에서 사용 중인 리소스를 추적하여 초과 지불을 방지하는 데 도움이 되는 도구입니다. 이를 위해 각 프로젝트가 시간 경과에 따라 소비하는 리소스의 양에 대한 관련 인사이트를 보여주는 단기(7일), 중기(14일) 및 장기(12개월) 사용 보고서를 생성합니다.

Kubernetes Opex 분석

Yotascale

Yotascale은 Kubernetes 비용을 정확하게 할당하는 데 도움이 됩니다. Yotascale Kubernetes 비용 할당 기능은 일반 시장 요금 추정 대신 예약 인스턴스 할인 및 스팟 인스턴스 요금을 포함하는 실제 비용 데이터를 활용하여 총 Kubernetes 비용 발자국을 알립니다.

자세한 내용은 웹 사이트에서 확인할 수 있습니다.

Alcide Advisor

Alcide는 AWS 파트너 네트워크(APN) 고급 기술 파트너입니다. Alcide Advisor를 사용하면 Amazon EKS 클러스터, 노드 및 포드 구성이 보안 모범 사례 및 내부 지침에 따라 실행되도록 조정할 수 있습니다. Alcide Advisor는 프로덕션으로 이동하기 전에 개발 단계를 강화하여 원활하고 안전한 DevSecOps 흐름을 보장하도록 구축된 Kubernetes 감사 및 규정 준수를 위한 에이전트 없는 서비스입니다.

자세한 내용은이 블로그 게시물에서 확인할 수 있습니다.

기타 도구

Kubernetes 가비지 수집

Kubernetes 가비지 수집기의 역할은 한 번 소유자가 있었지만 더 이상 소유자가 없는 특정 객체를 삭제하는 것입니다.

Fargate 수

Fargatecount는 AWS 고객이 사용자 지정 CloudWatch 지표를 사용하여 특정 계정의 특정 리전에서 Fargate에 배포된 총 EKS 포드 수를 추적할 수 있는 유용한 도구입니다. 이렇게 하면 EKS 클러스터에서 실행되는 모든 Fargate 포드를 추적하는 데 도움이 됩니다.

팝아이 - Kubernetes 클러스터 새니타이저

Popeye - Kubernetes 클러스터 새니타이저는 라이브 Kubernetes 클러스터를 스캔하고 배포된 리소스 및 구성과 관련된 잠재적 문제를 보고하는 유틸리티입니다. 디스크에 있는 것이 아니라 배포된 것을 기반으로 클러스터를 삭제합니다. 클러스터를 스캔하면 잘못된 구성을 감지하고 모범 사례가 적용되도록 하는 데 도움이 됩니다.

리소스

비용 최적화 모범 사례에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

설명서 및 블로그

도구