EKS AutoScaling - 2. AutoScaler
파드가 오토스케일링이 되어 꽉 찰 경우, 노드 자체를 오토스케일링 시켜줘야합니다.
docs.aws.amazon.com/ko_kr/eks/latest/userguide/cluster-autoscaler.html
공식다큐가 정말 정리가 잘 되어있어 다를게 없을 게시글이나 조금 더 상세하게 써보도록 하겠습니다.
먼저 적용하고자 하는 노드 그룹 EC2에는 아래와 같은 태그가 적용되어야 합니다.
또한 노드에는 아래와 같은 IAM 권한이 연결되어있어야 합니다.
만약 노드 그룹을 구성하실때, 제 블로그 글을 보시고 권한을 넣었 구성하셨다면 넘어가셔도 되는 부분입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
"autoscaling:DescribeLaunchConfigurations",
"autoscaling:DescribeTags",
"autoscaling:SetDesiredCapacity",
"autoscaling:TerminateInstanceInAutoScalingGroup",
"ec2:DescribeLaunchTemplateVersions"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
AutoScaler yaml을 다운로드 받아보겠습니다.
curl -O https://raw.githubusercontent.com/kubernetes/autoscaler/master/cluster-autoscaler/cloudprovider/aws/examples/cluster-autoscaler-autodiscover.yaml
여기서 위의 Yaml을 아래와 같이 수정해야하는데 먼저 버전입니다.
https://github.com/kubernetes/autoscaler/releases에서 EKS Cluster와 맞는 버전을 찾아서 수정해주시면 됩니다.
저는 EKS가 1.18 버전을 사용하고 있고 게시글을 작성한 기준으로 아래와 같이 1.18.2가 최신 버전입니다.
버전을 찾으셨다면 아래와 같이 수정 및 입력을 해주시면 됩니다.
완성된 Yaml을 배포하여주시면 구성이 끝납니다.
kubectl apply -f cluster-autoscaler-autodiscover.yaml
그리고 다음과 같이 로그를 확인하여서 제대로 구성되었는지 체크해주시면 됩니다.
kubectl -n kube-system logs -f deployment.apps/cluster-autoscaler
큰 이상이 없고 트래픽이 없는 상태라면 아래와 같이 각 노드들이 최소 사이즈에 도달한 상태의 로그가 나옵니다.
여기까지 AutoScaler를 통해 EKS NodeGroup을 자동으로 스케일아웃하는 방법에 대해 알아봤습니다.