Cluster Autoscaler란?
이전 글에서 파드에 오토 스케일링을 적용해봤습니다.
https://devnoong.tistory.com/28
하지만 트래픽에 따라 파드가 올라가는 워커 노드 자원이 모자라게 되는 경우도 발생하게 됩니다.
즉, 워커 노드가 가득 차서 파드가 스케줄될 수 없는 상태가 되기때문에 Cluster Autoscaler(CA) 사용합니다.
1. ASG(Auto Scaling Group) 값 확인
현재 클러스터의 워커노드에 적용된 ASG(Auto Scaling Group)의 값을 확인합니다.
aws autoscaling \
describe-auto-scaling-groups \
--query "AutoScalingGroups[? Tags[? (Key=='eks:cluster-name') && Value=='eks-demo']].[AutoScalingGroupName, MinSize, MaxSize,DesiredCapacity]" \
--output table
2. ClusterAutoScaler 정책 생성
IAM 정책에 접속하여 ClusterAutoScaler 라는 이름을 가진 IAM 정책을 생성합니다.
JSON 탭에서 아래의 내용을 붙여줍니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeLaunchConfigurations",
"autoscaling:DescribeTags",
"autoscaling:SetDesiredCapacity",
"autoscaling:TerminateInstanceInAutoScalingGroup",
"ec2:DescribeLaunchTemplateVersions"
],
"Resource": "*"
}
]
}
해당 정책을 통해, 오토 스케일링 기능을 활성화할 수 있습니다.
3. 워커 노드 생성
EC2 클릭하여 클러스터를 선택한 후, configuration 클릭 compute 탭에서 워커 노드를 클릭합니다.
노드 그룹 접속 후 하단의 Node IAM Role ARN 을 클릭합니다.
권한 추가 - 정책 연결을 클릭하여 IAM Role에 위에서 생성한 Cluster AutoScaler 정책을 붙이도록 하겠습니다.
정책 목록중 AUTOCALER 선택 후 정책 연결 버튼을 클릭합니다.
4. 워커 노드 details 업데이트
Auto Scaling Groups 페이지에서 워커노드에 적용된 ASG를 클릭한 후, Group details 값을 아래와 같이 업데이트합니다.
5. 배포 예제 파일 다운로드
Cluster Atuoscaler 프로젝트에서 제공하는 배포 예제 파일을 다운로드합니다.
wget https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml
다운로드한 yaml 파일을 열고 클러스터 이름(eks-demo)을 설정한 후, 배포합니다.
command:
- ./cluster-autoscaler
- --v=4
- --stderrthreshold=info
- --cloud-provider=aws
- --skip-nodes-with-local-storage=false
- --expander=least-waste
- --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/eks-demo
kubectl apply -f cluster-autoscaler-autodiscover.yaml
'Cloud > AWS' 카테고리의 다른 글
[MiniKube 실습] AWS 인프라 구성하기 (0) | 2022.11.07 |
---|---|
[EKS 웹 애플리케이션 구축] CI/CD for EKS cluster (0) | 2022.08.21 |
[EKS 웹 애플리케이션 구축] HPA 적용하기 (0) | 2022.08.19 |
[EKS 웹 애플리케이션 구축] EKS CloudWatch Container Insights 사용하기 (0) | 2022.08.19 |
[EKS 웹 애플리케이션 구축] AWS Fargate로 배포하기 (0) | 2022.08.19 |