기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
지출 인식
지출 인식은 EKS 클러스터에서 누가, 어디서, 무엇이 지출을 유발하는지 이해하는 것입니다. 이 데이터를 정확하게 파악하면 지출에 대한 인식을 높이고 해결해야 할 영역을 강조하는 데 도움이 됩니다.
추천
Cost Explorer 사용
AWS Cost Explorer
EKS 컨트롤 플레인 및 EKS Fargate 비용
아래 다이어그램과 같이 필터를 사용하여 컨트롤 플레인 및 Fargate 포드에서 EKS 비용에 대해 발생한 비용을 쿼리할 수 있습니다.

필터를 사용하여 아래 다이어그램과 같이 CPU당 vCPU 시간 및 GB 시간 모두를 포함하는 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 환경에 대한 가시성을 제공합니다.

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
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 비용 할당 및 용량 계획 분석 도구 사용
Kubernetes Opex Analytics

Yotascale
Yotascale은 Kubernetes 비용을 정확하게 할당하는 데 도움이 됩니다. Yotascale Kubernetes 비용 할당 기능은 일반 시장 요금 추정 대신 예약 인스턴스 할인 및 스팟 인스턴스 요금을 포함하는 실제 비용 데이터를 활용하여 총 Kubernetes 비용 발자국을 알립니다.
자세한 내용은 웹 사이트에서 확인할 수 있습니다
Alcide Advisor
Alcide는 AWS 파트너 네트워크(APN) 고급 기술 파트너입니다. Alcide Advisor를 사용하면 Amazon EKS 클러스터, 노드 및 포드 구성이 보안 모범 사례 및 내부 지침에 따라 실행되도록 조정할 수 있습니다. Alcide Advisor는 프로덕션으로 이동하기 전에 개발 단계를 강화하여 원활하고 안전한 DevSecOps 흐름을 보장하도록 구축된 Kubernetes 감사 및 규정 준수를 위한 에이전트 없는 서비스입니다.
자세한 내용은이 블로그 게시물
기타 도구
Kubernetes 가비지 수집
Kubernetes 가비지 수집기의
Fargate 수
Fargatecount
팝아이 - Kubernetes 클러스터 새니타이저
Popeye - Kubernetes 클러스터 새니타이저
리소스
비용 최적화 모범 사례에 대해 자세히 알아보려면 다음 리소스를 참조하세요.