1 # 비용 관리 kubecost 설치법 1 # 터미널 1 wa 2 # 터미널2 1) EBS CSI Driver 먼저 설치 1 먼저 클러스터 이름과 계정 정보를 변수로 잡습니다. export CLUSTER_NAME=my-eks-cluster export REGION=ap-northeast-2 export ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) 2 EKS용 OIDC가 없다면 먼저 연결합니다 aws eks list-clusters --region ap-northeast-2 eks-demo export REGION=ap-northeast-2 export CLUSTER_NAME=eks-demo export ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) echo $CLUSTER_NAME echo $REGION eksctl utils associate-iam-oidc-provider \ --cluster $CLUSTER_NAME \ --region $REGION \ --approve 3 # AWS 권장 방식대로 EBS CSI Driver용 IAM ServiceAccount를 만듭니다. (1분) eksctl create iamserviceaccount \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster $CLUSTER_NAME \ --region $REGION \ --role-name AmazonEKS_EBS_CSI_DriverRole \ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --approve 4 그 다음 EKS add-on으로 드라이버를 설치합니다. EKS add-on 이름은 aws-ebs-csi-driver 입니다. aws eks create-addon \ --cluster-name $CLUSTER_NAME \ --region $REGION \ --addon-name aws-ebs-csi-driver \ --service-account-role-arn arn:aws:iam::$ACCOUNT_ID:role/AmazonEKS_EBS_CSI_DriverRole 5 # 정상 상태 확인 aws eks describe-addon \ --cluster-name $CLUSTER_NAME \ --region $REGION \ --addon-name aws-ebs-csi-driver \ --query 'addon.status' kubectl get pods -n kube-system | grep ebs 아래 두 종류가 보여야 합니다. ebs-csi-controller ebs-csi-node (i-0dff2e951a0d0500a@eks-demo:kubecost) [root@kops-ec2 ~]# kubectl get pods -n kube-system | grep ebs ebs-csi-controller-844bfd456c-7d4bn 6/6 Running 0 20s ebs-csi-controller-844bfd456c-nvbtr 6/6 Running 0 20s ebs-csi-node-k6pjc 3/3 Running 0 20s ---------------------- kubecost 설치 # 2. Helm 레포지토리 추가 및 업데이트 # 1) Helm repo 등록 helm repo add kubecost https://kubecost.github.io/cost-analyzer/ # 2) repo 업데이트 helm repo update # 3) namespace 생성 kubectl create namespace kubecost # 4) Kubecost 설치 (중요: gp2 사용) helm install kubecost kubecost/cost-analyzer \ --namespace kubecost \ --version 2.8.6 \ --set kubecostToken="free" \ --set global.clusterId="my-eks-cluster" \ --set persistentVolume.storageClass=gp2 \ --set prometheus.server.persistentVolume.storageClass=gp2 3 k ns kubecost helm repo list helm search repo kubecost/cost-analyzer --versions | head 4 kubectl get pvc -n kubecost kubectl get pods -n kubecost 5 clear # 오류 확인시 kubectl describe pods -n kubecost kubectl get pvc -n kubecost kubectl get storageclass 6 # 오류 확인시 clear kubectl get pods -n kubecost -o wide kubectl describe pvc kubecost-cost-analyzer -n kubecost kubectl describe pvc kubecost-prometheus-server -n kubecost kubectl get events -n kubecost --sort-by=.metadata.creationTimestamp 4 # 터미널 3 kubectl port-forward --address 0.0.0.0 -n kubecost svc/kubecost-cost-analyzer 9090 http://43.203.179.86:9090 # 보안그룹 허용 필수 모든 tcp , 내ip > 규칙저장 ----------------