본문 바로가기

EKS/EKS Cluster

EKS AutoScaling - 2. AutoScaler

파드가 오토스케일링이 되어 꽉 찰 경우, 노드 자체를 오토스케일링 시켜줘야합니다.

 

docs.aws.amazon.com/ko_kr/eks/latest/userguide/cluster-autoscaler.html

 

Cluster Autoscaler - Amazon EKS

필요한 버전에 따라 이전 주소를 gcr.io/google-containers/cluster-autoscaler:v1. 으로 변경해야 할 수도 있습니다. 이미지 주소는 릴리스 페이지에 나와 있습니다.

docs.aws.amazon.com

 

공식다큐가 정말 정리가 잘 되어있어 다를게 없을 게시글이나 조금 더 상세하게 써보도록 하겠습니다.

 

먼저 적용하고자 하는 노드 그룹 EC2에는 아래와 같은 태그가 적용되어야 합니다.

출처 AWS

 

또한 노드에는 아래와 같은 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을 자동으로 스케일아웃하는 방법에 대해 알아봤습니다.